Bijeenkomst 1#
Het IoT (internet of things) is een volgende stap in de ontwikkeling van het internet, na het web. Het web vormt de (grafische) gebruikersinterface voor het internet, en de verbinding van het internet naar mensen. Het IoT verbindt fysieke dingen en omgevingen met het internet, en maakt het mogelijk deze automatisch te monitoren (bewaken) en te besturen. In het bijzonder zorgt het IoT voor de verbinding van het internet naar machines. Dit maakt het mogelijk dat machines via het internet met machines communiceren, maar ook mensen met machines.
Praktische opdrachten#
microbit radio#
Stap 1: installeer de code voor de IoT-node op microbit 1, zie IoT-node code
installeer met behulp van de online Python editor de code van de IoT-knoop op een microbit
kopieer de code van IoT-node code over de bestaande code heen
als alternatief kun je een desktop editor als Mu gebruiken
deze versie gebruikt alleen de ingebouwde sensoren en actuatoren; maar je kunt eventueel een LED aansluiten op pin0, deze werkt parallel aan het display.
test deze software: bij het verzenden krijg je de bytes van het verzonden bericht te zien (via de “serial” host-USB verbinding).
Stap 2: installeer de code voor de radio-logger op microbit 2, zie radio-logger code. Deze code gebruikt een extra module die je als project-bestand aan de editor moet opgeven.
installeer de microbit logger-software op een andere microbit
links in het project-menu: “create file”; noem deze
lppjson
; kopieer de lppjson module code naar het middelste venster (over de bestaande code heen).selecteer links in het project-menu:
main.py
, en kopieer de radio-logger code naar het middelste venster.
de berichten van de IoT-knoop(en) kun je nu volgen via de logger (=”packet snifffer”)
de berichten worden getoond als bytes en als JSON-string.
controleer voor een bericht of je de bytes-begrijpt in samenhang met de bijbehorende JSON-string. Gebruik daarvoor de uitleg van het LPP payload formaat.
Merk op dat de berichten niet versleuteld worden: iedereen in het netwerk kan meeluisteren (net als in een WiFi-netwerk, waar de versleuteling voor het netwerk geldt, niet per bericht).
(Voeg een presence sensor toe)
Voor onze voorbeeld-toepassing hebben we een presence sensor nodig. Een primitieve versie daarvan is het schudden van de micro:bit (“shake” event). Als je de mogelijkheden daarvoor hebt, kun je een PIR-sensor gebruiken.
breid de functie
send_sensors
uit met een extra parameter voor presencegebruik hiervoor channel
voeg aan de event-loop een IF-statement toe voor het detecteren een presence event
stuur direct de sensor-waarden op, inclusief de waarde voor presence
MQTT#
Uitleg over MQTT: https://eelcodijkstra.github.io/netbook0/mqtt/toctree.html
Opdrachten uit het bestaande materiaal: https://eelcodijkstra.github.io/netbook0/mqtt/mqtt-opdrachten.html
Chat: https://eelcodijkstra.github.io/netbook0/mqtt/mqtt-opdrachten.html#mqtt-chat
Knoop volgen: https://eelcodijkstra.github.io/netbook0/mqtt/mqtt-opdrachten.html#knoop-volgen
Knoop besturen: https://eelcodijkstra.github.io/netbook0/mqtt/mqtt-opdrachten.html#knoop-besturen
Bij de laatste opdrachten kun je gebruik maken van bestaande IoT-knopen, maar ook van een gesimuleerde knoop in je browser. Hiervoor gebruik je het programma: http://infvopedia.nl/iotnode-app.html. Zorg ervoor dat je een eigen uniek node-ID invult (4 hexadecimale cijfers).
NodeRed#
https://eelcodijkstra.github.io/netbook0/protocollen/nodered/nodered-opdrachten.html
voor de opdrachten kun je gebruik maken van een NodeRed project op: https://forge.infvoflows.nl/