4.10.5. Knipperende LEDs¶
Via NodeRed kun je allerlei protocollen en toepassingen koppelen. Je kunt ook allerlei zaken automatiseren, bijvoorbeeld een lamp inschakelen als je thuiskomt.
Een eenvoudige automatisering is het laten knipperen van LED-0 op je IoT-knoop.
Maak een NodeRed-flow waarmee je LED-0 van een (gesimuleerde) IoT-knoop laat knipperen. Begin met de eenvoudige flow van Opdracht 1, en breid deze later uit met een MQTT-output-node. Vergeet niet aan het eind van elke opdracht de flow te activeren (Deploy); controleer bij elke stap of het werkt.
Opdracht A
In de eerste stap maak je een flow die elke 5 seconden een bericht genereert, afwisselend “aan” en “uit”. Je gebruikt hierbij twee inject-nodes; een inject-node genereert een bericht als je op de knop links klikt. (Zie de “eerste flow”.) Om het bericht zichtbaar te maken gebruik je een debug-node.
Maak de bovenstaande flow met 2 inject-nodes en 1 debug-node.
Configureer de bovenste inject-node:
Geef deze node de naam “On”;
Stel de payload is als “string”, met waarde: “Aan”;
zet “Repeat” van “none” naar “interval” (every 10 seconds);
Bewaar de configuratie (“Save”);
“Deploy”, en controleer de output in het debug-venster.
Configureer de onderste inject-node:
Geef deze de naam “Off”;
Stel de payload in als “string”, met waarde “Uit”;
Selecteer “inject once after” - met als waarde “5 seconds”;
Zet “Repeat” naar “interval” (every 10 seconds);
Bewaar de configuratie (“Save”);
“Deploy”, en controleer de output in het debug-venster.
Als het goed is zie je in het debug-venster elke 5 seconden een bericht verschijnen, afwisselend “aan” en “uit”.
Tips:
je kunt in het debug-venster aangeven dat je alleen de “current flow” wilt zien;
je kunt het debug-venster leeg maken via het vuilnisbakje (rechts boven).
Opdracht B
De volgende stap is om deze waarden te koppelen aan de led van de IoT-knoop. Eerst maken we de waarden geschikt voor de LED. Vervolgens koppelen we deze aan de IoT-knoop, via MQTT.
Configureer de bovenste inject-node:
Stel de payload in als JSON, met als waarde:
{"0": {"dOut": 1}}
. Tip: bij het invoeren van een JSON-waarde kun je de JSON-editor gebruiken, via de...
rechts in het edit-venster. Je maakt dan minder fouten.Bewaar de configuratie (“Save”)
“Deploy”, en controleer de output in het debug-venster.
Configureer de onderste inject-node:
Stel de payload in als JSON, met als waarde:
{"0": {"dOut": 0}}
.Bewaar de configuratie (“Save”)
“Deploy”, en controleer de output in het debug-venster.
Voeg een MQTT output-node toe, en configureer deze:
stel de MQTT broker (“server”) in als in bij het dashboard.
gebruik als Topic:
node/xxxx/actuators
, waarbij je voorxxxx
de ID van je IoT-knoop invult.Bewaar de configuratie (“Save”)
“Deploy”, en controleer de output in het debug-venster.
Als het goed is zie je nu de berichten niet alleen in het debug-venster verschijnen, maar knippert de LED van je IoT-knoop ook op dezelfde manier mee.
De codes voor het in- en uitschakelen van de LED behandelen we later uitgebreider. De eerste “0”` staat hier voor LED-0. Sommige IoT-knopen hebben ook een LED-1: probeer die op dezelfde manier te laten knipperen.
Deze manier van werken is typisch voor NodeRed: je bouwt een flow beetje voor beetje op, waarbij je in het begin veel gebruik maakt van inject- en debug-nodes. Je test hiermee elke stap. Deze nodes kun je laten zitten tijdens het gebruik: een debug-node kun je eenvoudig uitschakelen als je deze even niet nodig hebt.
Nog enkele suggesties:
je kunt meerdere MQTT-output-nodes toevoegen met dezelfde input, voor verschillende IoT-knopen: je kunt die LEDs tegelijk laten knipperen.
Opdracht C
Je kunt een reeks afwisselende berichten krijgen met behulp van een combinatie van een vertraging en een terugkoppeling, zoals in de flow hierboven. In deze flow injecteert de inject-node éénmaal een bericht; dat wordt via de terugkoppeling 5 maal rondgestuurd. Na een vertraging van 1 seconde wordt de LED uitgezet, en weer een seconde later weer aan; dat wordt 5 maal herhaald.
Vraag Is na afloop de LED aan of uit? Wat is het laatste bericht dat verstuurd wordt?