IoT-0/IoT bouwstenen: verschil tussen versies
Regel 132: | Regel 132: | ||
# open het programma MQTT1 in een ander browservenster | # open het programma MQTT1 in een ander browservenster | ||
## deze opzet werkt het best met twee browservensters naast elkaar. | ## deze opzet werkt het best met twee browservensters naast elkaar. | ||
# voer in het " | # voer in het "IoT-node"-venster van MQTT1 de nodeID in van de gesimuleerde IoT-knoop | ||
# verander één van de sliders van de IoT-knoop | # verander één van de sliders van de IoT-knoop | ||
## je ziet nu de berichten met de nieuwe waarde langskomen, en de waarden bovenin in tabelvorm verschijnen. | ## je ziet nu de berichten met de nieuwe waarde langskomen, en de waarden bovenin in tabelvorm verschijnen. |
Versie van 24 mei 2018 15:57
De bouwstenen van het Internet of Things
Wat zijn de belangrijkste bouwstenen van het Internet of Things (IoT)? Waardoor maakt het IoT nu zo'n grote sterke ontwikkeling door?
Het Internet of Things koppelt de fysieke wereld van de "dingen" aan de virtuele wereld van het internet. De koppeling aan een "ding" is een IoT-knoop. Je gebruikt hierin sensoren en actuatoren om deze "dingen" te monitoren (bewaken) en te besturen. De sensoren en actuatoren bestuur je met een microcontroller: een complete computer op een chip. Je hebt communicatie nodig om deze sensoren en actuatoren in het internet te verbinden. Voor mobiele "dingen" moet deze communicatie draadloos zijn. Ook voor andere "dingen" heeft draadloze communicatie voordelen. Voor mobiele "dingen" moet ook de energievoorziening (elektriciteit) draadloos zijn: je hebt dan energiezuinige elektronica nodig, met een batterij en soms met lokale energieopwekking ("energy harvesting" of "scavenging", zoals zonnecellen). Tenslotte zijn de fysieke afmetingen en het gewicht van belang: hoe kleiner en lichter (en goedkoper) een IoT-knoop, voor des te meer "dingen" je deze kunt gebruiken.
De IoT-keten: van sensoren en actuatoren tot beslissingen
Een IoT-toepassing omvat een keten van onderdelen, van sensoren en actuatoren tot besluitvorming, mogelijk ondersteund door Data Science en Artificial Intelligence. Deze IoT-keten heeft andere karakteristieken dan de keten voor het web:
- de sensordata van een enkele IoT-knoop bestaan uit weinig bytes - veel minder dan de gemiddelde webpagina, en nog veel minder dan nodig voor audio en video;
- het aantal IoT-knopen in een toepassing kun erg groot zijn - veel groter dan bijvoorbeeld het aantal gebruikers van een website;
- de fysieke wereld stelt soms absolute grenzen aan de latency; in de virtuele wereld is deze latency wat minder van belang;
- de resultaten van het web worden aan mensen gepresenteerd, die op basis daarvan beslissingen nemen;
- de resultaten van het IoT worden soms gebruikt om direct "dingen" te besturen, zonder menselijke tussenkomst (M2M, machine to machine).
- de verschillen tussen "dingen" zijn veel groter dan de verschillen tussen mensen: het IoT is veel heterogener dan het web.
Bouwstenen van de IoT-keten
In de IoT-keten heb je nog andere onderdelen nodig tussen de IoT-knopen en de Data Science-servers en gebruikers-apps. We komen dan in de IoT-keten meestal de volgende onderdelen tegen:
- IoT-knopen, met sensoren en actuatoren verbonden aan de fysieke wereld;
- gateways, om deze IoT-knopen aan het internet te verbinden;;
- servers (en "brokers") in het publieke internet - als publiek toegangspunt voor de data van de IoT-knopen
- servers voor diensten op het gebied van Data Science, Artificial Intelligence, visualisatie e.d.
- schakelpunten, om verschillende diensten, data en protocollen te combineren;
- protocollen om deze onderdelen te koppelen;
De IoT-knopen vormen de buitenkant ("edge") van het Internet of Things. Eén van de ontwerpvragen bij het Internet of Things is hoe het rekenwerk verdeeld moet worden over de "edge" en de kern (servers) van het IoT.
Het IoT is veel heterogener dan het web, en veel minder gestandaardiseerd. Dit betekent dat we veel verschillende oplossingen en vormen van de IoT-keten tegenkomen.
IoT-knopen
Een andere versie van Moore's Law [bewerken] |
De digitale elektronica maakt al decennia een exponentiële ontwikkeling door, volgens "Moore's Law". De exponentieel stijgende vraag uit de markt, bijvoorbeeld naar smartphones, ondersteunt deze technologische ontwikkeling.
De traditionele versie van Moore's Law gaat vooral om "meer": meer rekenkracht en meer geheugen. Bij het Internet of Things gaat het vooral om "minder": minder energie, minder gewicht, en kleiner. Ook in dit geval is een exponentiële ontwikkeling te verwachten. Het grootste probleem lijkt daarbij de energievoorziening te zijn: vooral de batterij bepaalt de omvang en het gewicht van een IoT-knoop. |
In het vervolg spreken we over IoT-knopen die de koppeling vormen tussen de fysieke en de virtuele wereld. Zo'n IoT-knoop omvat gewoonlijk:
- sensoren, om in de fysieke wereld te meten;
- actuatoren, om in de fysieke wereld te sturen;
- een microcontroller ("computer op een chip") voor de besturing van de IoT-knoop;
- communicatie, meestal draadloos (radio)
- energie, meestal in de vorm van een batterij, soms aangevuld met "energy harvesting".
De technologische voortgang op elk van deze onderdelen maakt nu kleine, lichte en (relatief) goedkope IoT-knopen mogelijk. Deze ontwikkeling zal de komende jaren nog in snel tempo voortgaan, geholpen door de grote massa van het Internet of Things. Daarnaast is ook de verwerking van IoT-data sterk verbeterd. De ontwikkelingen op het gebied van Data Science en Artificial Intelligence maken nieuwe IoT-toepassingen mogelijk. Deze ontwikkelingen versterken elkaar, en zorgen samen voor een stroomversnelling in de technologie en in de toepassingen.
Voorbeeld van een IoT-knoop
In de voorbeelden gebruiken we een IoT-knoop met de volgende sensoren/actuatoren:
- twee LEDs - als actuatoren
- twee drukknoppen - als "event" sensoren
- sensoren voor: temperatuur, luchtdruk en lichtniveau
Voor de draadloze communicatie gebruiken we verschillende radio's en protocollen:
- WiFi - voor gebruik in het lokale WiFi-netwerk (voor IoT-knopen met meer "power");
- RFM69 - voor low-power IoT-knopen met een lokaal bereik (50-200m); gescheiden van het lokale WiFi-netwerk
- LoRa - voor low-power IoT-knopen een netwerk met groot bereik (tot enkele km's).
In deze laatste twee gevallen hebben we een gateway nodig voor de verbinding van de IoT-knoop met het lokale netwerk of met het publieke internet.
Voor de microcontroller voor de besturing zijn er ook meerdere alternatieven: Arduino/Atmega, ESP8266, ESP32, ARM. De keuze wordt bepaald door de lokale omstandigheden, de gebruikte programmeertaal/programmeeromgeving, enz.
We voeden de IoT-knopen gewoonlijk met een batterij; een USB powerbank kan een handige oplossing zijn.
Er is ook een app die een IoT-knoop met deze onderdelen simuleert: je moet dan zelf de sensorwaarden instellen. Deze gesimuleerde IoT-knoop gebruikt dezelfde (MQTT-)communicatie als de hardware-IoT-knopen.
Gateway - van IoT-knoop naar internet
Meestal kunnen we de IoT-knopen niet zomaar in het internet verbinden, bijvoorbeeld doordat deze een veel eenvoudiger (radio-)protocol gebruiken. We gebruiken dan een gateway om deze IoT-knopen in het internet te verbinden. Deze gateway zet het IoT-knoop-protocol om naar het IP-protocol, en omgekeerd.
Bij een dergelijke omzetting (protocolconversie) gaat het om de complete protocolstack, tot en met de toepassing. In onze voorbeelden betekent dit meestal dat de berichten van de IoT-knopen omgezet worden naar MQTT-berichten in het formaat van de toepassing.
Gateway versus bridge
We maken hier onderscheid tussen gateways en bridges: een bridge verbindt netwerken met eenzelfde protocol(stack), een gateway verbindt netwerken met verschillende protocollen. De omzetting in een bridge is dan beperkt tot de gemeenschappelijke onderste laag van de protocollen. Bij een gateway moet je de hele protocolstack hierbij betrekken. Een gateway is vaak (aanzienlijk) complexer dan een bridge. Bovendien hebben veranderingen in de toepassing mogelijk gevolgen voor de gateway. Voor een bridge is de toepassing niet van belang.
Ook als de IoT-knoop zelf de internet-protocolstack gebruikt kan het zinvol zijn om een bridge te gebruiken, om de lokale communicatie te scheiden van het publieke internet. Deze bridge kan er bijvoorbeeld zorgen voor de versleuteling van het verkeer naar het publieke internet.
Deze terminologie, met een duidelijk onderscheid tussen bridge en gateway, wordt niet overal op dezelfde manier gebruikt.
- Voorbeeld: de Philips Hue-bridge is eigenlijk een gateway, tussen het Zigbee protocol en het internet protocol.
MQTT - als voorbeeld van een IoT protocol
Het basisprotocol van het web is HTTP. Voor het Internet of Things is dit protocol minder geschikt: de karakteristieken van de web-communicatie verschillen van de IoT-communicatie. Voor het IoT is er geen standaardprotocol zoals HTTP voor het web. Eén van de protocollen die veel gebruikt wordt voor het IoT is MQTT (Message Queuing Telemetry Transport; zie https://en.wikipedia.org/wiki/MQTT, http://mqtt.org):
- MQTT is een publish/subscribe-protocol, waarbij een MQTT-broker als tussenschakel fungeert tussen de clients;
- een client "pusht" een bericht naar de broker, die het vervolgens naar andere clients "pusht"
- dit in tegenstelling tot de "pull" interactie tussen een HTTP client (browser) en server (webserver).
JSON-formaat voor berichten
Waar in het geval van HTTP HTML-documenten gecommuniceerd worden, gebruiken wij in het geval van MQTT berichten in het JSON-formaat. MQTT staat ook andere vormen van berichten toe, maar JSON is een veel gebruikte keuze.
- Websites of -apps gebruiken ook vaak JSON-documenten in de AJAX-interactie met de webserver.
NodeRed - voor het samenknopen van protocollen, data en diensten
IoT-toepassingen combineren vaak data uit verschillende bronnen: vanuit verschillende netwerken met IoT-knopen, maar ook uit andere databases of datastromen. Deze data kunnen door allerlei diensten (Data Science, Artificial Intelligence, enz.) verwerkt worden voordat deze bruikbaar zijn in een toepassing voor een gebruiker. Deze databronnen, diensten en gebruikerstoepassingen gebruiken vaak verschillende protocollen en formaten. Met NodeRed knoop je deze verschillende onderdelen samen, op een grafische manier.
Server - met web-app (dashboard)
Een IoT-toepassing heeft vaak een gebruikersinterface, bijvoorbeeld in de vorm van een dashboard met een samenvatting van de gegevens van de IoT-knopen. In onze voorbeeld-toepassing werken we met een eenvoudig dashboard met de gegevens van één IoT-knoop. Dit dashboard maken we met NodeRed: we gebruiken deze dan als web-server. Bovendien kunnen we via dit dashboard de actuators van de IoT-knoop bedienen. Dit gebruikersinterface heeft de vorm van een webtoepassing ("app"), beschikbaar via een server in het publieke web.
Opdrachten
Opdracht 1: een eerste IoT-keten
Een eerste voorbeeld van een IoT-keten, van IoT-knoop tot toepassings ("app") bestaat uit de volgende onderdelen:
- een gesimuleerde IoT-knoop
- een MQTT-broker in het publieke internet;
- het programma MQTT0 (of MQTT1), waarmee je het mqtt-verkeer van de sensor kunt bekijken.
Voer de onderstaande stappen uit:
- open de gesimuleerde IoT-knoop op in een browservenster
- open het programma MQTT1 in een ander browservenster
- deze opzet werkt het best met twee browservensters naast elkaar.
- voer in het "IoT-node"-venster van MQTT1 de nodeID in van de gesimuleerde IoT-knoop
- verander één van de sliders van de IoT-knoop
- je ziet nu de berichten met de nieuwe waarde langskomen, en de waarden bovenin in tabelvorm verschijnen.
- druk in MQTT1 op de knop om de LED (led0) aan (of uit) te zetten
- je ziet in de gesimuleerde IoT-knoop de linker LED aan (of uit) gaan.
Mogelijk zie je ook berichten van andere IoT-knopen langskomen: die gebruiken dezelfde MQTT-broker,
en via subscribe: +/+/+
ontvangt MQTT1 de berichten van alle knopen.
Opdracht 2: een tweede IoT-keten
Verder uitwerken - ook de infrastructuur.
- gebruik van een IoT-dashboard
- NB: uiteindelijk moeten we een dashboard zien te bieden waarin meerdere sensoren/IoT-knopen gecombineerd worden?
- gebruik van IoT-dashboard voor gegeven knopen (elders)
- gebruik van IoT-dashboard voor gesimuleerde knopen
Toetsvragen
- Wat zijn de gebruikelijke onderdelen van een IoT-knoop?
- Waar hangt de keuze voor een bepaalde radio vanaf?
- Wat is het verschil tussen een gateway en een bridge
- Wat is de functie van een IoT-gateway (o.a. protocol conversie)