11.1. Waarom Bluetooth

Netwerken brengt de camera op een Wi-Fi- of Ethernet-netwerk zodat hij kan communiceren met alles wat van daaruit bereikbaar is. Een laptop verderop in de gang, een server op een ander continent, een telefoon die rondzwerft op het mobiele netwerk. Dat bereik gaat gepaard met voorwaarden. Er moet een netwerk bestaan. Een toegangspunt moet binnen bereik zijn, er moeten inloggegevens beschikbaar zijn, een router moet bereid zijn de camera een adres toe te kennen. De camera moet bovendien de radio (of de Ethernet-poort) hard genoeg laten draaien om de verbinding in stand te houden.

Bluetooth dekt het tegenovergestelde geval – korte afstand, geen infrastructuur, laag verbruik. De camera en een telefoon in dezelfde ruimte wisselen gegevens uit via een directe radioverbinding, zonder iets ertussen. Geen toegangspunt, geen router, geen noodzaak voor beide partijen om op enig netwerk te zitten. De radio blijft tussen korte uitbarstingen van activiteit grotendeels uit, zodat een batterij die op Wi-Fi nauwelijks een dag zou overleven, maandenlang kan meegaan.

11.1.1. Wanneer Bluetooth het juiste gereedschap is

De gangbare gevallen op een camera:

  • Een telefoon of tablet koppelt met de camera. Een gebruiker in de buurt opent een app op zijn telefoon en configureert de camera, leest de status uit of downloadt resultaten – zonder eerst beide apparaten op hetzelfde Wi-Fi-netwerk te hoeven plaatsen. De meeste telefoons spreken van nature Bluetooth Low Energy, dus de gebruikerservaring is “open de app, druk op verbinden”, niet “sluit je eerst aan op dit netwerk”.

  • Een wearable of sensor rapporteert aan de camera. Een hartslagband, een thermometer, een beacon, een contactschakelaar – het zijn allemaal apparaten op batterijen die zijn ontworpen rond Bluetooth Low Energy. De camera maakt verbinding als client, leest hun waarden uit en verweeft de gegevens met wat hij verder ook doet.

  • De camera publiceert een kleine statusfeed. Batterijniveau, laatst gedetecteerde object, framesnelheid – een paar getallen die zichtbaar worden gemaakt voor alles in de buurt dat ze wil uitlezen. Koppelen is optioneel; voor niet-gevoelige gegevens kan de camera de waarden rechtstreeks adverteren zonder dat er enige verbinding nodig is.

  • Twee camera’s (of een camera en een microcontroller) delen gegevens zonder netwerk. Beide kanten kennen elkaar; beide kanten bevinden zich in hetzelfde gebouw; er is geen reden dat de bytes naar de cloud en terug zouden moeten reizen om de kamer over te steken.

11.1.2. Wanneer netwerken juist het juiste gereedschap is

De compromissen van Bluetooth pakken verkeerd uit in een aantal gangbare gevallen:

  • Tegenpartijen buiten bereik. Bluetooth Low Energy reikt in de praktijk een paar meter en in de vrije ruimte hoogstens tientallen meters. Alles aan de andere kant van een gebouw, door de stad, of over het internet vereist Wi-Fi of Ethernet.

  • Verbindingen met hoge bandbreedte. Bluetooth Low Energy levert in de praktijk tientallen tot een paar honderd kilobit per seconde. Het streamen van frames of zinvolle video vereist Wi-Fi.

  • Veel-op-veel groepscommunicatie op gedeelde infrastructuur. Een ruimte vol apparaten die allemaal met één server praten, of een mesh van camera’s die resultaten delen – dat patroon is precies waar een IP-netwerk voor is gebouwd.

11.1.3. Low Energy, niet classic

“Bluetooth” omvat in alledaags gebruik twee verschillende radiostacks. Classic Bluetooth is degene in draadloze koptelefoons, audio in de auto en verbindingen met toetsenbord/muis: een radio van spraak- en audiokwaliteit, een vergelijkenderwijs complexe stack en een merkbaar stroomverbruik. Bluetooth Low Energy (BLE) is een apart, nieuwer protocol dat de merknaam en de 2,4 GHz-band deelt, maar verder weinig. Het is gebouwd rond korte, weinig frequente radio-uitbarstingen om het gemiddelde verbruik klein te houden, en rond een sleutel/waarde-gegevensmodel in plaats van het streamen van audio.

MicroPython op de camera ondersteunt alleen BLE. Classic Bluetooth maakt helemaal geen deel uit van de API. “Bluetooth” hieronder betekent BLE.

11.1.4. Wat er verandert ten opzichte van het netwerkmodel

BLE heeft dezelfde vijflaagse stack als netwerken, maar de bovenste lagen gedragen zich anders:

  • Er is geen “open een socket en stuur bytes”-abstractie. BLE is gebouwd rond een kleine sleutel/waarde-database die de ene kant host en de andere kant leest, schrijft of waarop hij zich abonneert. De camera publiceert benoemde waarden (een batterijniveau, een temperatuur, een commandoregister); de peer leest of bewaakt ze.

  • Er is geen adressering op naam. Apparaten identificeren zichzelf door een korte broadcast te adverteren die beschrijft wie ze zijn; peers scannen naar die broadcasts en kiezen er een om mee te verbinden.

  • De radio is grotendeels inactief. Beide kanten spreken bij het tot stand brengen van de verbinding af hoe vaak ze ontwaken en praten. Tussendoor gaan beide weer slapen.

Die drie verschillen zijn wat de rest van de BLE-API wegstuurt van het socketmodel.