ID.nl logo
Node-RED: apparaten en diensten koppelen zonder code
© PXimport
Huis

Node-RED: apparaten en diensten koppelen zonder code

Node-RED is een populair systeem waarmee je apparaten en diensten aan elkaar koppelt zonder code te hoeven intypen. Het programmeren verloopt immers op een grafische manier door nodes in flows met elkaar te verbinden. Er bestaat een bloeiende community rond Node-RED en naast het automatiseren van zaken, kun je er ook dashboards mee maken. Onlangs kwam versie 1.0 van Node-RED uit. De ideale gelegenheid om er eens mee aan de slag te gaan in dit artikel.

Op de website van Node-RED wordt het programma omschreven als ‘low-code programming for event-driven applications’. Dat is een hele mond vol. Low-code programming betekent gewoon dat je geen code hoeft in te typen, in tegenstelling tot bijvoorbeeld een Python-programma. In de plaats daarvan selecteer je in een webinterface componenten uit een gereedschapskist en koppel je die aan elkaar.

Met ‘event-driven applications’ wordt bedoeld dat je met Node-RED toepassingen bouwt die reageren op gebeurtenissen. Zo kan je programma reageren als je een knop indrukt die je op een Raspberry Pi aansluit, of op een bericht dat via MQTT over je thuisnetwerk wordt verstuurd, of op een sensorwaarde die verandert in je Home Assistant-installatie.

01 Systeemvereisten voor Node-RED

Node-RED kun je op Windows, macOS, Linux, op een Raspberry Pi en zelfs in de cloud installeren. Op de pagina Getting started vind je de installatie-instructies voor de verschillende mogelijkheden.

In deze basiscursus gaan we uit van een installatie via Docker op een Raspberry Pi. Maak je een andere keuze, volg dan op de website van Node-RED de specifieke instructies voor jouw systeem. Na de installatie werkt zo goed als alles hetzelfde, ongeacht het systeem waarop je Node-RED draait.

©PXimport

02 Raspbian met Docker

We gaan ervan uit dat je Raspbian Buster Lite op je Raspberry Pi hebt geïnstalleerd, bijvoorbeeld met balenaEtcher. Op je Raspberry Pi inloggen doe je via de opdracht ssh in de Opdrachtprompt of door een toetsenbord en beeldscherm op je Raspberry Pi aan te sluiten.

Installeer dan Docker op de Raspberry Pi, geef de standaardgebruiker pi toegang tot Docker, installeer pip en Docker Compose, en reboot tot slot met deze commando’s:

curl -sSL https://get.docker.com | sh

sudo usermod pi -aG docker

sudo apt install python3-pip

sudo pip3 install docker-compose

sudo reboot

Zodra je weer ingelogd bent, maak je ook een directory aan waarin je de gegevensbestanden van Node-RED opslaat, zoals je flows en de uitbreidingen die je installeert:

mkdir /home/pi/node-red

03 Installeer Node-RED

We installeren Node-RED met behulp van Docker Compose. Maak daarvoor eerst een Docker Compose-bestand aan:

nano docker-compose-node-red.yml

Plaats daarin de volgende regels:

version: '3.7'

services:

node-red:

image: nodered/node-red

container_name: node-red

restart: always

volumes:

- ./node-red:/data

ports:

- "1880:1880"

environment:

- TZ=Europe/Amsterdam

Hierin definiëren we dat we het Docker-image nodered/node-red downloaden en starten, waarbij we de directory node-red in de huidige directory in de Docker-container van Node-RED aankoppelen op de directory /data. We forwarden poort 1880 van de container naar poort 1880 op de Raspberry Pi. Tot slot stellen we ook onze tijdzone in, zodat Node-RED de juiste tijd gebruikt.

Sla het bestand op met Ctrl+O en sluit nano af met Ctrl+X. Daarna starten we Node-RED eenvoudig op met de volgende opdracht:

docker-compose -f docker-compose-node-red.yml up -d

Dat duurt wel even, want Docker gaat nu het image van Node-RED eerst downloaden. Maar als je de Opdrachtprompt weer te zien krijgt, is Node-RED gestart en in je webbrowser bereikbaar op http://IPADRES:1880. Lukt het niet, bekijk dan met docker logs node-red wat er misloopt.

©PXimport

04 Je eerste flow

De webinterface van Node-RED bestaat uit vier onderdelen. Bovenaan heb je de header met rechts een knopje Deploy en helemaal rechts het menu dat je toegang geeft tot allerlei functionaliteit.

Links heb je het palet, waarin je allerlei ‘nodes’ vindt. Die nodes kun je naar het midden slepen, de werkruimte. Die werkruimte bevat aanvankelijk één tabblad met een ‘flow’ met de naam Flow 1. Rechts heb je dan de zijbalk, die je meer informatie geeft over het geselecteerde onderdeel. Momenteel is dat de lege flow, zodat je daar de naam van de flow te zien krijgt.

Laten we eens een eerste flow maken. Sleep een node inject en een node debug naar de werkruimte. De tekst bij die eerste verandert in timestamp en bij die tweede in msg.payload. Verbind het rechtse grijze vakje van de eerste node met het linkse grijze vakje van de tweede node. Klik dan bovenaan rechts op Deploy.

Klik dan op het omgekeerde driehoekje onder het menu en kies Debug messages. Als je daarna op het grote vierkantje links van de node timestamp klikt, verschijnt de tijd (in aantal seconden sinds 1 januari 1970) in de zijbalk.

©PXimport

05 Installeer extra nodes

Dat tijdstip in het debugvenster is niet heel leesbaar. Zouden we dit kunnen omzetten naar een leesbare datum en tijdstip? Uiteraard, en dat kan bijvoorbeeld met een node function waarin je javascript-code kunt opgeven die de opdracht uitvoert. Maar we zijn dit artikel begonnen met de boodschap dat je niet zou hoeven te programmeren in Node-RED (wat wel kan, zie ook het kader ‘Javascript-code in Node-RED’), dus we gaan dit op een grafische manier uitvoeren.

In het palet links zie je een heel aantal nodes die Node-RED standaard al installeert, maar er zit er geen tussen om tijdstippen in leesbaar formaat te tonen. Gelukkig heeft Node-RED een bloeiend ecosysteem van externe nodes, die eenvoudig te installeren zijn. Klik op het menu en dan op Manage palette.

In het tabblad Install zie je dat er meer dan 2400 modules beschikbaar zijn voor installatie. Typ in het zoekveld eens date in. Je krijgt dan alle mogelijke nodes te zien die iets met een datum doen. Let zeker op de datum van de laatste update, want je vindt hier ook heel wat nodes die niet meer onderhouden worden. Bij elke node kun je op het icoontje naast de naam klikken voor meer informatie.

©PXimport

06 Leesbaar tijdstip

Klik op de knop install bij de node node-red-contrib-moment en bevestig met Install. Sluit daarna het venster. Als je nu in het paneel links helemaal naar onderen scrolt, zie je twee nieuwe nodes: moment en humanizer. Klik je op een ervan, dan krijg je in de zijbalk nuttige informatie over het gebruik te zien.

Verbreek de verbinding tussen timestamp en msg.payload door ze te selecteren en op de Delete-toets te drukken. Sleep dan de node moment naar de werkruimte. Ze krijgt dan de naam Date/Time Formatter. Verbind de uitvoer van timestamp met de invoer van deze node, en de invoer van msg.payload met de uitvoer.

Deploy de flow opnieuw en klik weer op de timestamp. In het debugvenster moet nu een tijdstip zoals “2020-02-11T14:15:56.321Z” verschijnen. Indien de tijd verkeerd is, dubbelklik dan op de node en kijk na of je tijdzone correct staat. Indien nodig tel je bij Adjustment een uur op. Vergeet niet na elke aanpassing op Deploy te klikken.

©PXimport

07 Download elke vijf minuten

Node-RED doet nu iets wanneer we op de eerste node klikken, maar we kunnen onze flow ook automatisch laten uitvoeren, bijvoorbeeld elke vijf minuten. Klik op de eerste node, kies bij Repeat voor interval en vul dan every 5 minutes in. Wijzig ook de naam van de node in Elke 5 minuten, zodat de functie duidelijker is. Sla op met Done en klik dan op Deploy. Je krijgt nu in het debugvenster elke vijf minuten de huidige tijd te zien.

Nu we Node-RED om de vijf minuten iets kunnen laten doen, gaan we daar iets nuttigers van maken: weergegevens downloaden. Verwijder de node Date/Time Formatter en zet in de plaats daarvan een node http request. Dubbelklik erop en vul bij de url http://xml.weerslag.nl/xmlfeed.xml in. Geef de node de naam Weerslag.NL.

Als je nu op het vierkantje bij de eerste node klikt (of vijf minuten wacht), wordt het xml-bestand van Weerslag.NL gedownload en de inhoud in het debugvenster getoond. Maar je bent uiteraard alleen geïnteresseerd in het weer bij jou. Open de feed in je webbrowser en zoek naar een weerstation bij je in de buurt. Noteer de stationscode.

©PXimport

08 Filter de xml-code

De xml-code van de feed van Weerslag.NL filter je eenvoudig zodat je alleen de informatie te zien krijgt van het weerstation waarin je geïnteresseerd bent. Plaats daarom een node xml tussen je node http request en de node debug. Deze node zet de xml om in een javascript-object. Bekijk het resultaat eerst maar eens in het debugvenster.

Voeg dan een node change toe tussen xml en debug, en dubbelklik daarop. Verander nu achter to het type uitvoer naar expression (getoond als een gestileerde hoofdletter J). Vul daarachter de volgende expressie in:

payload.**.weerstation[stationcode[0]='11179']

Vervang hierin 11179 door de stationscode van in je buurt. Wil je meer weten over dit soort expressies, lees dan de documentatie van JSONata. Na een deploy en een klik op de eerste node krijg je in het debugvenster alleen de informatie van het ene weerstation te zien.

©PXimport

Javascript-code in Node-RED

Bestaat er geen node die doet wat je nodig hebt, dan kun je nog altijd gaan programmeren. Node-RED is immers in javascript geschreven en ondersteunt via de node function ook javascript-code. Zo zou je de node moment kunnen vervangen door een node function, waarin je javascript-code schrijft die een Date-object aanmaakt op basis van de payload, en de payload vervangt door de stringversie van dat object. Dit is een eenvoudig voorbeeld, maar je kunt nog veel complexere functies schrijven. Zie de online documentatiepagina Writing functions voor meer informatie.

©PXimport

09 Temperatuur en luchtdruk

Tot nu toe toonden we volledige javascript-objecten in het debugvenster, maar we zijn eigenlijk alleen geïnteresseerd in de temperatuur en luchtdruk. De temperatuur filteren we er eenvoudig uit met een node change na de vorige node change. We veranderen het type achter to naar msg en vullen daar in:

payload.temperatuurGC[0]

Hang achter deze node weer een debug-node. Doe nu hetzelfde om de luchtvochtigheid eruit te filteren. Bestudeer in het debugvenster de inhoud van het volledige javascript-object van het weerstation om te zien wat je in de node change dient in te typen.

Als je nu de flow uitvoert, krijgt je de waardes van de temperatuur en luchtvochtigheid in het debugvenster te zien.

©PXimport

10 Dashboard

Het debugvenster is handig als je in Node-RED een flow aan het opbouwen bent, maar zodra die werkt, wil je uiteraard je gegevens wat mooier weergeven. Gelukkig kent Node-RED ook een dashboard. Daarvoor dienen we eerst een extra node te installeren.

Open weer Manage palette in het menu en installeer daar de node node-red-dashboard. Dat voegt maar liefst zestien nieuwe types nodes toe in je palet.

Hang dan een node gauge achter de node voor de temperatuur. Dubbelklik erop en klik naast Group op het icoontje van het potlood. Geef de groep een naam (bijvoorbeeld Temperatuur) en klik naast Tab op het potloodicoontje. Geef het tabblad een naam (bijvoorbeeld Weer), klik op Add en nog eens op Add. Dan ben je weer in de eigenschappen van de node gauge. Vul bij Label een naam zoals Temperatuur in, bij Units de eenheid °C, en bij Range een minimum- en maximumtemperatuur. Klik op Done om de node op te slaan.

Nadat je op Deploy geklikt hebt, klik je op het icoontje van het grafiekje bovenaan rechts (links naast het omgekeerde driehoekje). Klik daarna op het icoontje van het vierkantje met het pijltje eruit. Je krijgt nu je eerste dashboard van Node-RED te zien. Uiteraard is dit nog maar het begin. Het toevoegen van de luchtvochtigheid en van enkele andere interfacecomponenten zoals een lijnplot laten we aan jou als lezer over.

©PXimport

11 Controleer of het vriest

Node-RED kan nog veel meer. Zo kun je bijvoorbeeld waarschuwingen uitsturen als het vriest. Om te weten wanneer het vriest, voeg je een switch toe achter de node voor de temperatuur. Geef die switch de naam Test op vorst en zet de test op <= 0, waarbij je vlak voor de 0 het datatype number kiest.

De node aan de uitgang van de switch wordt nu alleen uitgevoerd wanneer de temperatuur in het weerstation lager dan 0 is. Test dat door een inject-node aan de ingang te koppelen met als waarde -15 met datatype string, en door een debug-node aan de uitgang te koppelen. Als je nu na een deploy op de inject klikt, zie je in het debugvenster de temperatuur -15 graden. En als je de -15 in de inject-node verandert naar 15 en op de inject-node klikt, gebeurt er niets.

©PXimport

12 Vorstwaarschuwing

Dan hoeven we alleen nog maar die laatste debug-node te vervangen door een node die ons waarschuwt. We geven hier het voorbeeld van een waarschuwing met een e-mail. Installeer daarvoor de node node-red-node-email.

Voor je nu die node toevoegt, voeg je een node change toe achter de switch. Geef die de naam E-mail en zet msg.topic op Het vriest. Dit wordt het onderwerp van onze e-mail. Het bericht zelf komt in msg.payload, en dat bevat nog altijd de temperatuur, dus dat houden we.

Voeg dan de node email toe achter de node change. Vul de juiste gegevens in: het e-mailadres van de ontvanger, de smtp-server, poort, gebruikersaccount en wachtwoord. Als je een mailserver met STARTTLS gebruikt, dien je Use TLS? wel aan te vinken, maar Use secure connection niet. En als je tweefactorauthenticatie voor Gmail ingesteld hebt, dien je eerst een app-wachtwoord aan te maken. Als je daarna je flow deployt, krijg je via e-mail een melding wanneer het vriest.

Uiteraard is dit maar een eerste versie. Momenteel zou je elke vijf minuten een e-mail krijgen zolang het vriest. Dat aantal e-mails zou je zeker nog moeten beperken. Maar Node-RED biedt voldoende componenten om deze basisflow verder uit te werken. En als de standaardnodes niet volstaan, installeer je gemakkelijk extra nodes van de community of programmeer je zelf je eigen nodes in javascript.

©PXimport

▼ Volgende artikel
Waar voor je geld: 5 4K QLED-televisies onder de 500 euro
© Samsung
Huis

Waar voor je geld: 5 4K QLED-televisies onder de 500 euro

Bij ID.nl zijn we gek op producten waar je niet de hoofdprijs voor betaalt. Een paar keer per week speuren we daarom binnen een bepaald thema naar zulke deals. Vandaag hebben we vijf 4K QLED-tv's onder de 500 euro voor je gevonden. Ideaal voor wie wil genieten van haarscherpe beelden en realistische kleuren zonder zijn of haar budget te overschrijden.

Disclaimer

Op het moment van schrijven zijn de televisies bij de goedkoopste webwinkels niet duurder dan 500 euro. De prijzen kunnen schommelen.


Hisense 43A7NQ

De Hisense 43A7NQ biedt verrassend veel voor zijn formaat en prijs. Deze 43 inch QLED-tv levert levendige kleuren dankzij Quantum Dot Color en biedt ondersteuning voor maar liefst vier HDR-formaten, waaronder Dolby Vision IQ en HDR10+. De 4K AI-upscaler tilt oudere content naar een hoger kwaliteitsniveau, zodat ook SD- en HD-beelden scherp en helder ogen. Het geluid wordt verzorgd door twee speakers met Dolby Atmos, wat zorgt voor een ruimtelijk en indrukwekkend geluid. De tv draait op het overzichtelijke VIDAA-platform en ondersteunt handige functies zoals spraakbesturing, bluetooth-koppeling en Game Mode.

Beelddiagonaal: 43 inch (109 cm)
HDR-ondersteuning: Dolby Vision IQ, HDR10, HDR10+, HLG
Smart TV-platform: VIDAA
Bijzonderheden: Quantum Dot Color, AI-upscaling, Dolby Atmos, Game Mode

TCL 43P7K

De TCL 43P7K is een veelzijdige 43 inch QLED-tv met een hoge helderheid van 430 nits en ondersteuning voor alle gangbare HDR-formaten zoals HDR10+ en Dolby Vision. Hierdoor ogen beelden levendig en scherp, met mooie kleurgradaties. Deze televisie draait op Google TV, wat betekent dat je kunt rekenen op een slimme en overzichtelijke interface met ondersteuning voor spraakbediening via Google Assistent of Alexa. Ook stream je gemakkelijk content vanaf je smartphone met Apple AirPlay of ingebouwde Chromecast. De Game Master-modus en ALLM maken dit een goede keuze voor casual gamers.

Beelddiagonaal: 43 inch (109 cm)
HDR-ondersteuning: Dolby Vision, HDR10+, HDR10, HLG
Smart TV-platform: Google TV
Bijzonderheden: Google Assistent, Game Master, 430 nits helderheid, AirPlay

Samsung QE50Q60D

De Samsung QE50Q60D is een 50 inch televisie met QLED-schermtechnologie die garant staat voor levendige kleuren en een hoge helderheid. Dankzij Quantum HDR en 100% kleurvolume oogt elk beeld natuurgetrouw, met rijke details en krachtig contrast. De Dual LED-achtergrondverlichting verbetert bovendien de kijkhoek, waardoor iedereen in de kamer geniet van hetzelfde beeld. De tv draait op het gebruiksvriendelijke Tizen-platform, dat snelle toegang geeft tot je favoriete apps. Ook bijzonder is de ondersteuning voor cloud gaming – je hebt geen console nodig om meteen te spelen. Met het Air Slim Design is deze tv slechts 26 mm dun, en de in hoogte verstelbare voet biedt ruimte voor een soundbar. Je krijgt er bovendien een Solar One Remote bij waarmee je meerdere apparaten aanstuurt.

Beelddiagonaal: 50 inch (126 cm)
HDR-ondersteuning: HDR10, HDR10+
Smart TV-platform: Tizen
Bijzonderheden: verstelbare standaard, cloud gaming, Solar Remote, slechts 26 mm dik

Salora 43QLED320

Met de Salora 43QLED320 haal je een compacte 43 inch QLED-tv in huis die qua beeldkwaliteit verrassend goed presteert. De combinatie van HDR10, Dolby Vision en HLG zorgt voor diepe contrasten en heldere kleuren, ook bij donkere scènes. Dankzij het Android TV-platform heb je toegang tot talloze apps zoals Netflix, YouTube en Disney+. De ingebouwde Chromecast maakt streamen vanaf je telefoon of laptop bijzonder eenvoudig. Ook zijn er drie HDMI 2.1-poorten aanwezig, ideaal voor het aansluiten van een gameconsole. Het frameloze ontwerp geeft deze televisie een moderne uitstraling, terwijl bluetooth en wifi zorgen voor goede draadloze connectiviteit.

Beelddiagonaal: 43 inch (109 cm)
HDR-ondersteuning: Dolby Vision, HDR10, HLG
Smart TV-platform: Android TV
Bijzonderheden: ingebouwde Chromecast, HDMI 2.1, frameloos design

Hisense 55E7NQ PRO

De Hisense 55E7NQ PRO is een serieuze kandidaat voor wie zowel wil genieten van films als games. Met een indrukwekkende verversingssnelheid van 144 Hz en ondersteuning voor FreeSync Premium loopt alles vloeiend en zonder haperingen. Het 55 inch QLED-paneel toont heldere kleuren en diepe zwarttinten, terwijl de Dolby Vision IQ-technologie zich aanpast aan de lichtomstandigheden in je kamer. De Dolby Atmos-audio zorgt ervoor dat het geluid net zo meeslepend is als het beeld. Het VIDAA-platform biedt toegang tot alle bekende apps en reageert snel en intuïtief. Dankzij vier HDMI 2.1-poorten is aansluiten van je game-pc of console geen enkel probleem.

Beelddiagonaal: 55 inch (139 cm)
HDR-ondersteuning: Dolby Vision, Dolby Vision IQ, HRD10, HDR10+, HLG
Smart TV-platform: VIDAA
Bijzonderheden: 144 Hz, FreeSync Premium, IMAX Enhanced, 40 watt audio

▼ Volgende artikel
Van zelf ijs maken tot de hitte verdrijven uit huis: 5 verkoelende leestips
© ID.nl
Huis

Van zelf ijs maken tot de hitte verdrijven uit huis: 5 verkoelende leestips

🌡️ Man man man, wat is het heet. Sterker nog: bloedheet. Wij hebben daarom vijf artikelen voor je met ideeën om de hitte te slim af te zijn. Van simpele manieren om je slaapkamer koel te houden tot zelf ijs maken tot een plaknacht overleven: inspiratie voor iedereen die liever niet wegsmelt.

Een plaknacht overleven

Een slaapkamer waarin de hitte van de dag is blijven hangen: dat staat garant voor een nacht woelen en slecht slapen. Gelukkig kun je veel doen om het koeler te maken. Overdag de zon buitenhouden en licht beddengoed kiezen bijvoorbeeld. En 's avonds een lauwe douche nemen of ijsblokjes bij de ventilator zetten helpt ook. Wij hebben acht onmisbare tips voor je verzameld.
→ Lees verder: Zo houd je het hoofd (en de slaapkamer) koel

Hitte verdrijven uit huis

Zit je huis nog vol warmte als de buitentemperatuur alweer zakt? Dan is het tijd voor actie. In dit artikel lees je over ventilatie en isolatie airco's en zonwering, en over snelle tips die gegarandeerd graden schelen.
→ Lees verder: Tips om de warmte uit huis te krijgen na een hittegolf

Zelf ijs maken? met een ijsmachine ...

Roomijs maken in je eigen keuken? Dat kan met de hand, maar makkelijker met een ijsmachine. In dit overzicht zie je hoe de klassieke modellen met losse koelkom werken, wat een zelfvriezende machine voor je doet en waarom de Ninja Creami zo populair is. Je eigen ijs maken: leuk om te doen, maar al helemaal lekker om op te eten! 🍦
→ Lees verder: IJs maken met ijsmachines – zo werkt het

... en zonder ijsmachine

Ook zonder machines kun je prima zelf ijs maken. In dit artikel lees je hoe je waterijs of yoghurtijs maakt met wat je al in huis hebt. Meng wat fruit, sap of yoghurt, giet het in vormpjes of bekertjes en laat het bevriezen. Je kunt eindeloos variëren met smaken, en zelfs alcohol toevoegen. Maar dat is met deze tropische temperatuur misschien niet het beste idee...
→ Lees verder: Geen ijsmachine, toch zelf ijs maken

Getest: de Ninja Slushi

Met de Ninja Slushi maak je meer dan slushi alleen. Van granita's tot milkshakes, van slush met frisdrank tot frozen cocktails: dit apparaat kan het allemaal. Hoe dat bevalt in de praktijk, lees je in deze uitgebreide review.
→ Lees verder: Review Ninja Slushi – Voor ijskoude drankjes op warme dagen

Koud, kouder, koudst

Of je nou je huis wilt laten afkoelen, een plaknacht wilt overleven of gewoon zin hebt in een zelfgemaakt ijsje: met deze tips kom je de hitte wel door. Sterkte!

🥶 Kon je er maar in gaan zitten! 👇