Met NB-IoT moet het mogelijk zijn om sensoren hun werk lang te laten doen zonder dat de batterij vervangen hoeft te worden. Op zich is dat ook mogelijk met het huidige LoRaWAN, maar NB-IoT heeft een aantal voordelen en extra features, doordat het gebruik maakt van een gelicenseerd frequentiebereik (meer info in Vodafone pdf-document): het heeft minder last van interferentie, kent minder restricties aan het aantal berichten, heeft gemiddeld genomen meer bandbreedte en het ondersteunt standaard transportprotocollen (UDP/TCP). Dat biedt ongekende voordelen: je kunt een slimme sensor gedurende een aantal jaren laten werken zonder daar nog naar om te hoeven kijken.
Maar hoe gaat dat in de praktijk? Is het écht mogelijk? Wat komt daarbij kijken? Is de hardware er, en hoe zorg je er met de juiste programmeercode voor dat een slimme sensor daadwerkelijk heel zuinig is?
Een slimme NB-IoT-sensor bestaat uit een aantal onderdelen; een (embedded-)cpu, een aantal sensoren en een modem dat de data met behulp van een simkaart kan versturen. Dat uiteraard vergezeld van een batterij die alles van spanning voorziet. Ontwikkelbordjes die het bovenstaande combineren zijn al op de markt beschikbaar. Bij Vodafone worden meerdere bordjes gebruikt, bijvoorbeeld die van Sodaq, Tweetonig en Pycom.
De Sodaq Sara R410M is voorzien van een aantal standaard sensoren (eCompass, gps, versnellingsmeter, temperatuurmeter), een ATSAMD21-processor en uBlox R410M-modem voor mobiele datacommunicatie. Er is daarnaast ook nog een aansluiting voor een zonnecel. Combineer het bordje met een NB-IoT-abonnement, zoals verkrijgbaar bij Vodafone [6], en je kunt aan de slag. Bij dit artikel hebben we de Sodaq SARA Arduino Form Factor (AFF) R410M gebruikt, maar inmiddels is ook er een kleiner bordje, namelijk de Sodaq SARA Small Form Factor (SFF) R410M. De afmetingen daarvan zijn 5,0 bij 2,5 cm.
Met een Sodaq R410M is makkelijk een IoT-device te maken.
Het versturen van data met een NB-IoT-modem is eenvoudig. Bij LoRaWAN was er nog sprake van een gateway, maar bij NB-IoT kunnen berichten door middel van TCP- en UDP-sockets rechtstreeks verstuurd worden naar een IPv4- of IPv6-adres. De sockets zijn uiteraard bidirectioneel: ze kunnen zowel data versturen als ontvangen. Een provider kan daarbij overigens gebruik maken van whitelisting: het IMEI-nummer en het IP-adres waarmee gecommuniceerd wordt, moeten dan aan elkaar gekoppeld worden. Dat om misbruik van IoT-devices, bijvoorbeeld door hacking, te voorkomen. De socket-abstractielaag bestaat al jaren en is bij veel programmeurs bekend.
Voor het Sodaq-board zijn er inmiddels library’s beschikbaar die de vertaalslag doen tussen socket-calls en bijbehorende AT-commando’s (en meer zoals parsen en het afhandelen van metadata) van het modem. Ook wordt versleutelde communicatie ondersteund: er zijn voorzieningen voor HTTPS/SSL en een lokale, afgesloten opslag van sleutels.