IoT workshop 11 juni 2018
Workshop Netwerken/IoT 11 juni 2018
In deze workshop maak je kennis met het lesmateriaal voor dit thema. Je voert enkele experimenten uit als een eerste voorproefje van dit materiaal.
- het internet of things maak je zelf
- bedenk eigen IoT-toepassingen rond huis, school, of omgeving
- grote invloed van internet, web en internet of things op mens en maatschappij
Inleiding
Internet of Things - van fysieke dingen naar de virtuele wereld - en terug
Bij communicatie heb je niet alleen te maken met de virtuele wereld, maar ook met de fysieke wereld: veel minder dan bij rekenen of bij opslag van gegevens kun je op een laag niveau abstraheren van de onderliggende fysieke laag. Deze bepaalt o.a.:
- de snelheid van communicatie (bitsnelheid en latency);
- de betrouwbaarheid van communicatie;
- de veiligheid van communicatie;
Bij radiocommunicatie en communicatie over lange afstanden (internet) heb je hier direct met te maken.
Bij het Internet of Things speelt de fysieke wereld een nog grotere rol: het gaat om het koppelen van fysieke dingen in de virtuele wereld van het internet.
In het materiaal laten we leerlingen kennismaken met een aantal verschijnselen, concepten en problemen rond communicatie; we laten zien hoe die bijvoorbeeld in het internet opgelost worden. In de opdrachten rond het internet of things kunnen leerlingen hier zelf mee aan de slag.
Opzet van het materiaal
- Algemene inleiding communicatie en netwerken
- begrippen rond communicatie en netwerken - met de dagelijkse wereld (van de leerling) als context
- Internet of Things voor gebruikers
- praktische inleiding in het internet of things - wat kun je ermee?
- gebruik van verschillende soorten radio, in verschillende configuraties (gateways e.d.)
- Internet of Things voor makers
- facultatief/eigen keuze van onderdelen
- uitwerking in detail van de onderdelen, samenstelling, programma's en configuraties
- Project Internet of Things
- voor een eigen IoT-toepassing, met (zo mogelijk) een gemengd team
Opdracht 1: gesimuleerde IoT-knopen, mqtt en dashboard
<<fig van de communicatie - opdracht 1>>
- we gebruiken IoT-knopen van elders en een IoT-knoop-simulator (http://infvopedia.nl:1884/iotnode-app-1.html)
- de informatie over de sensoren zie je op een dashboard (http://infvopedia.nl:1880/ui)
- via het MQTT-protocol koppelen we de knopen en de toepassingen (het dashboard)
- je volgt de MQTT-berichten met het MQTT0-hulpprogramma (http://infvopedia.nl:1884/mqtt1.html)
(1) Open de bovenstaande webpagina's in een browservenster. Het kan handig zijn om de vensters met de IoT-knoop-simulator en met het MQTT0-hulpprogramma naast elkaar te plaatsen op de desktop.
- de ID van de knoop speelt een centrale rol in de communicatie; deze vind je onderaan.
- deze waarde kun je eventueel aanpassen.
- MQTT0: vul de ID van de gesimuleerde knoop in, bij
IoT-node
- IoT-knoop-simulator: verander een sensorwaarde (slider)
- MQTT0: je ziet nu een bericht met de nieuwe waarde(n) langskomen in het venster onder "subscribe".
- MQTT0: en je ziet de sensorwaarden in tabelvorm verschijnen.
- MQTT0: druk op de led-aan knop
- je ziet het bericht langskomen in het venster onder "subscribe"
- IoT-knoop-simulator: de linker led (led0) gaat (rood) branden.
Opmerking (MQTT0): je ziet ook de berichten van de andere knopen langs komen in het venster onder "subscribe". Als je alleen de berichten van je eigen knoop wilt zien, pas je het subscribe-topic aan, bijvoorbeeld tot node/e0f1/+
.
MQTT0: met de twee onderste vensters kun je een MQTT-bericht versturen.
- MQTT0: vul het topic in dat je nodig hebt om de led(s) van je IoT-knoop-simulator aan te sturen
- MQTT0: vul het bericht in om beide LEDs van je IoT-knoop aan te zetten; en verstuur dit ("publish").
Theorie bij deze opdracht
- MQTT is een publish-subscribe (Pub/Sub) protocol; zie:
- de mqtt-broker is
infvopedia.nl:1883
- deze is in de clients geconfigureerd: IoT-knoop-simulator, MQTT0-hulpprogramma, en NodeRed dashboard.
- deze clients zijn voor de broker gelijkwaardig (en in de berichten niet te onderscheiden).
- deze clients communiceren alleen via de broker: ze kennen elkaar niet.
- de mqtt-broker is
Opdracht 2: IoT-knopen op basis van ESP8266
De ESP8266-knopen hebben een ingebouwde WiFi-radio; daarmee communiceren ze via een lokaal WiFi-netwerk met de MQTT-broker in het publieke internet.
De node-ID is afgeleid van het MAC-adres van deze WiFi-radio: de laatste 4 cijfers; je vindt dit op de sticker op de node.
Voor het lokale WiFi-netwerk gebruiken we een MiFi: een mobiele WiFi-router. (Deze heeft maar een beperkt WiFi-bereik; maar je kunt deze bijna overal gebruiken...)
- MQTT0: vul de node-ID in van je ESP8266-knoop
- MQTT0: zet led0 van de ESP8266-knoop aan
- MQTT0: stuur een bericht om beide LEDs aan (of uit) te zetten naar de ESP8266-knoop
- ESP8266-knoop: hou je vinger op de LDR; en zie dat (binnen ca. 50 seconden) MQTT0 een andere sensorwaarde weergeeft.
Opmerkingen bij deze opdracht
Je kunt een dergelijke node eenvoudig opbouwen op een breadboard; maar je kunt ook een voorgesoldeerde versie (laten) maken. De sensoren zijn dezelfde als voor de simulator.
Opdracht 3: NodeRed (via Fred)
Met NodeRed kun je een dashboard maken van de sensorgegevens. Je kunt ook de MQTT-berichten aan elkaar en aan allerlei diensten koppelen.
Een eenvoudig voorbeeld is het koppelen van de knoppen van een IoT-knoop aan een LED (led0) van een andere knoop. Het is handig als je ook weet wat de toestand van de LED van die andere knoop is: deze krijg je dan via een eigen LED (led1) te zien.
We gebruiken afzonderlijke knoppen om de LED aan- en uit te schakelen. Dit zorgt ervoor dat er geen vreemde dingen gebeuren als er een bericht verloren gaat.
- Deze aanpak gebruik je veel vaker bij communicatie: het maakt geen verschil of een bepaalde opdracht 1 keer of vaker uitgevoerd wordt. Een dergelijke opdracht noemen we idempotent. Dit vinden we onder andere terug bij de HTTP-opdrachten: GET en PUT zijn idempotent; POST, bijvoorbeeld voor het opsturen van een ingevuld formulier, is niet idempotent: de browser vraagt je dan ook of je "het formulier nog een keer wilt opsturen".
- Ga na wat er kan gebeuren als je één knop gebruikt voor het in- en uitschakelen van een enkele LED, in een situatie dat er berichten verloren kunnen gaan.
Kopieer onderstaande flow naar je NodeRed-flowvenster; en activeer deze flow ("deploy").
Opdracht 4: gebruik van RFM69-radio
Om IoT-knopen met een kleine batterij te kunnen voeden, met een lange levensduur, is "low power" communicatie van belang. WiFi is daarvoor niet de beste keuze. Een alternatief is de RFM69-radio (of vergelijkbaar: ZigBee, Z-wave). Deze heeft een bereik van 25-250 meter, afhankelijk van de omgeving en van de antenne.
We gebruiken IoT-knopen met deze radio in combinatie met een gateway: deze zet het "low power" protocol van de IoT-knopen om in MQTT over WiFi.
- in de mqtt-berichten zie je behalve de sensorgegevens ook enkele gegevens van de gateway, zoals de sterkte van het ontvangen signaal (rssi).
- omdat er berichten verloren kunnen gaan, stuurt de IoT-knoop ook een volgnummer mee.
Concepten: pakketcommunicatie; best-effort communicatie; gateway; protocolconversie; adressering; installatie/commissioning;
<<tabel verschillende radio's en eigenschappen>>