ID.nl logo
Wat zijn WebUSB en Web Bluetooth?
© Reshift Digital
Huis

Wat zijn WebUSB en Web Bluetooth?

WebUSB en Web Bluetooth zijn twee gelijkaardige standaarden die webapplicaties toegang geven tot apparaten via respectievelijk usb en bluetooth. Het grote voordeel: je dient geen speciale software te installeren voor toegang tot die apparaten. Het nadeel: voorlopig werkt het alleen nog maar in Chrome.

Stel je voor: je hebt een leuk nieuw apparaatje gekocht, zoals een rekenmachine of een smartwatch, en je wilt de firmware updaten om van de nieuwste functies gebruik te maken of een bug op te lossen. Maar de fabrikant levert alleen een updateprogramma mee voor Windows, en toevallig gebruik je Linux of macOS. Wat nu? Of erger: wat als het om een randapparaat gaat waarvan de fabrikant alleen maar drivers voor Windows voorziet, en je het niet eens op andere besturingssystemen kunt gebruiken?

En dat terwijl de meesten van ons een groot deel van hun tijd in de webbrowser doorbrengen. Waarom zouden we niet die webbrowser rechtstreeks toegang kunnen geven tot apparaten via usb of bluetooth, zodat je geen drivers of updateprogramma’s specifiek voor elk besturingssysteem nodig hebt? Dat exact is de insteek van WebUSB en Web Bluetooth.

WebUSB

WebUSB is volgens de specificatie een api die een manier aanbiedt om usb-apparaten veilig met het web te verbinden. Ze hergebruikt de bestaande usb-afspraken, maar past die aan de ons vertrouwde interface van de webbrowser aan. Het is dan ook een javascript-api. Dat maakt WebUSB onmiddellijk ook cross-platform, en in principe kan iedereen met wat kennis van webontwikkeling apparaten aanspreken via WebUSB.

WebUSB is nog geen officiële standaard van het World Wide Web Consortium (W3C). Ontwikkelaars van Google hebben WebUSB in 2016 voorgesteld aan de Web Incubator Community Group (WICG) van het W3C, een platform voor experimentele webtechnologieën. Sinds Chrome 61 is WebUSB-ondersteuning ook in de webbrowser van Google ingebouwd. Andere webbrowsers zijn voorlopig nog niet overstag gegaan, zoals je bij de website Can I use kunt zien.

©PXimport

Je webbrowser die toegang tot usb-apparaten krijgt, is dat niet vragen om beveiligingsproblemen? Uiteraard hebben de ontwikkelaars daarover nagedacht. Zo moet een webapp altijd toestemming van de gebruiker krijgen voordat ze toegang krijgt tot een specifiek usb-apparaat.

Bovendien krijgt je browser alleen toegang tot apparaten die specifiek aangeven dat ze WebUSB ondersteunen. Je webbrowser kan dus niet zomaar aan de bestanden op je usb-stick, je externe usb-toetsenbord afluisteren of het beeld van je usb-webcam bespioneren. Uit een analyse door F-Secure in 2017 bleek dat WebUSB met aandacht voor beveiliging is ontwikkeld.

Firmware-updates

WebUSB is nog niet echt ingeburgerd. Het enige apparaat met WebUSB-ondersteuning dat we zelf al in handen hebben gehad, is de rekenmachine van NumWorks: die laat toe om de firmware te upgraden van in je webbrowser zonder dat je je zorgen hoeft te maken over drivers en firmwaretools.

Maar je kunt zelf ook WebUSB in je eigen projecten gebruiken. Zo is er een Arduino-bibliotheek voor WebUSB. Hiermee kun je in je eigen Arduino-sketch met de webbrowser communiceren. Let op: dit vereist dat je zowel html- en css-code voor de kant van de computer schrijft als Arduino-code voor de kant van het Arduino-bordje dat je via usb aansluit.

©PXimport

Web Bluetooth

Een vergelijkbare standaard, eveneens door Google uitgebracht, is Web Bluetooth. Die laat webapps toe om met apparaten in de buurt te communiceren via bluetooth. En net zoals bij WebUSB wordt ook hier gewoon gebruikgemaakt van bestaande afspraken, in dit geval van bluetooth low-energy (BLE).

Elk BLE-apparaat biedt specifieke diensten (services) aan met eigenschappen (characteristics). Er bestaan standaardprofielen voor bijvoorbeeld hartslagmeters, temperatuursensoren enzovoort, en sommige producenten implementeren hun propriëtaire profielen in hun apparaten, die dan bijvoorbeeld met hun eigen mobiele apps kunnen communiceren. Dankzij Web Bluetooth kun je communicatie met BLE-apparaten in een webapp aanbieden, die op alle platforms werkt, zolang het maar in Chrome is.

©PXimport

Firmware-upgrades via bluetooth zijn extra handig, omdat het vaak om apparaatjes gaat die klein zijn of normaal niet zo gemakkelijk via usb aan te sluiten zijn. Bij de via javascript te programmeren Espruino Puck.js bijvoorbeeld kun je via Web Bluetooth je code naar het apparaatje uploaden.

Verder heb je ook het project web-bluetooth-dfu waarmee je de firmware van apparaten met chips van Nordic Semiconductor kunt upgraden. Het gaat dan om de Nordic nRF51822-, nRF52832- of nRF52840-chips. Die zitten onder andere in de eerste versie van de Puck.js, maar ook in de RuuviTag-bluetooth-sensor.

Onbegrensde mogelijkheden

Meer nog dan met WebUSB zijn met Web Bluetooth de mogelijkheden onbegrensd. Talloze gadgets ondersteunen bluetooth, en die zijn nu allemaal via webapps aan te sturen als je een beetje van html en javascript kent en de bluetooth-eigenschappen van het apparaatje kunt ontcijferen. De Web Bluetooth Community Group heeft enkele leuke demo’s op zijn GitHub-pagina staan, waaronder het aansturen van een bluetooth-labelprinter, speelgoedautootjes en uiteraard het uitlezen van een hartslagsensor.

Net zoals bij WebUSB overigens is ook hier over de beveiliging nagedacht: een webapp die toegang tot een bluetooth-apparaat wil, toont eerst altijd een lijst met gevonden bluetooth-apparaten, en de gebruiker dient aan te geven tot welke apparaat de webapp toegang krijgt. De bluetooth-GATT-api is bovendien vrij klein, zodat het aanvalsoppervlak beperkt blijft.

Volgende stap

Na WebUSB en Web Bluetooth staat er al een volgende technologie te wachten. Google heeft in Chrome versie 81 technologie toegevoegd om op een Android-toestel nfc-tags uit te lezen in de webbrowser. Het gaat om Web NFC. Je kunt hiermee in een javascript-api boodschappen van nfc-tags uitlezen of boodschappen naar nfc-tags schrijven.

Het is voorlopig nog een experimentele functie die je expliciet moet inschakelen. Dat kan met de optie #experimental-web-platform-features in chrome://flags. En zo krijgen webapplicaties meer en meer toegang tot hardware op een platformonafhankelijke manier. Als nu Firefox nog zou volgen, zou het helemaal handig zijn.

▼ Volgende artikel
Nioh 3-bugs maken progressie onmogelijk, Team Ninja werkt aan oplossingen
© Team Ninja
Huis

Nioh 3-bugs maken progressie onmogelijk, Team Ninja werkt aan oplossingen

Het kan zijn dat mensen die recentelijk aan Nioh 3 zijn begonnen geen progressie kunnen boeken vanwege verschillende bugs. Ontwikkelaar Team Ninja heeft aangegeven op de hoogte te zijn van de problemen en aan oplossingen te werken.

Een van de voornaamste problemen licht de ontwikkelaar ook uit op X. Spelers die de zogenaamde Crucible Manifesto voltooien en vervolgens naar de Eternal Rift gaan en daar dialogen van het personage Nekomoto overslaan - door bijvoorbeeld een menu te openen - kunnen daarna de missie niet voltooien. Hierdoor blijven ze dus vastzitten in de game. Ook het starten van een cutscene door bijvoorbeeld aan een Battle Scroll te beginnen, halteert progressie.

Team Ninja zegt dat de bug te vermijden is door dus geen menu’s te openen of tussenfilmpjes in te starten wanneer Nekomoto begint te praten. Wie nu al last heeft van dit probleem moet helaas wachten op de patch waar de ontwikkelaar momenteel aan werkt. Wanneer die uitrolt is nog niet bekend, maar gezien dit probleem op ieder beschikbaar platform optreedt wordt het - als het goed is - ook overal opgelost.

View post on X

Over Nioh 3

In Nioh 3 doen spelers een open veld aan, dat overgenomen is door de zogenaamde Crucible en bomvol yokai - lees: geesten - zit. Je hebt twee gevechtssstijlen om deze monsters mee tegen te gaan: een meer actiegerichte Samurai-stijl en de Ninja-stijl die meer focus legt op snelheid en het gebruiken van speciale aanvallen. Door continu te wisselen tussen deze stijlen moet je deze soulslike kunnen overwinnen - als de code dus geen roet in het eten gooit.

▼ Volgende artikel
Haakjes, spaties of streepjes: zo stel je je eigen telefoonnotatie in Excel in
© ID.nl
Huis

Haakjes, spaties of streepjes: zo stel je je eigen telefoonnotatie in Excel in

Wie in Excel een contactlijst opstelt, merkt al snel dat de kolom met telefoonnummers zich niet altijd gedraagt zoals gehoopt. Zo verdwijnt de eerste 0 vaak vanzelf, waardoor de nummers minder bruikbaar worden. En dan hebben we het nog niet eens over de verwarring die kan ontstaan bij internationale telefoonnummers.

Dit gaan we doen

In dit artikel zet je telefoonnummers in Excel om naar een vaste notatie, zonder dat de voorloopnul verdwijnt. Je leert waar de instelling Locatie het verschil maakt, hoe je met Aangepast je eigen opmaak bouwt (met hekjes) en hoe je internationale nummers logisch en consistent weergeeft met een plusteken en spaties. 

Lees ook: Zo genereer je random getallen in Excel

Telefoonnummers die beginnen met nul

Selecteer de cel met het telefoonnummer en ga naar het tabblad Start. Klik bij het onderdeel Getal op het kleine pijltje rechtsonder. In het dialoogvenster Cellen opmaken kies je in de linkerkolom Speciaal en daarna bij Type de optie Telefoonnummer. Let wel: deze optie verschijnt alleen als onderaan bij Locatie de optie Nederlands (standaard) is geselecteerd. Voor Belgische gebruikers geldt dat wanneer hier Locatie: Nederlands (België) staat, de optie Telefoonnummer niet beschikbaar is. Zij moeten dus de locatie wijzigen. Vanaf dan worden ook de voorloopnullen correct weergegeven.

Zorg dat de instelling Locatie op Nederlands (standaard) staat.

Telefoonnummers formatteren

Wil je alle telefoonnummers op een vaste manier weergeven, bijvoorbeeld als (06) 1234 56 78, 06-1234 78 78 of 06 1234 56 78? Dat kan eenvoudig via het dialoogvenster Cellen opmaken. Kies eerst, zoals hierboven beschreven, de optie Telefoonnummer. Klik daarna links op Aangepast. In het vak Type verschijnt een standaardnotatie met hekjes, zoals 0#########. Deze kun je aanpassen naar een eigen indeling. Enkele voorbeelden: (0#) #### ## ## geeft (06) 1234 56 78,0#-#### ## ## geeft 06-1234 78 78 en 0# #### ## ## geeft 06 1234 56 78. Met de knop Opmaak kopiëren/plakken (het kwastje) kun je deze aangepaste weergave vervolgens toepassen op alle andere cellen. Let op, dit is puur een weergave. Excel behandelt de telefoonnummers nog steeds als getallen. Spaties, haakjes of streepjes maken dus geen deel uit van de waarde zelf. Dat betekent dat berekeningen ermee niet beïnvloed worden, maar dat je bij export of gebruik in andere programma's alleen de kale cijfers terugziet.

In de categorie Aangepast kun je het telefoonnummer door middel van hekjes vormgeven.

Internationale nummers

Bij internationale nummers wordt het landnummer voorafgegaan door het plusteken. Dat plusteken is betrouwbaarder dan een dubbele nul, omdat het internationale toegangsnummer niet in alle landen hetzelfde is. Ook deze weergave stel je in via Aangepast, met behulp van hekjes (#). Zorg ervoor dat je precies evenveel hekjes invult als het telefoonnummer cijfers telt. Vervolgens kun je de gewenste opmaak toevoegen door het plusteken en de spaties in de notatie op te nemen. Bijvoorbeeld +32 # ### ## ## geeft +32 3 456 78 90 en +31 # #### #### geeft +31 6 1234 5678.

Je moet exact hetzelfde aantal hekjes gebruiken als er cijfers zijn.

Kan ook handig zijn:

Een ouderwetse telefoonklapper