Node-RED is een toepassing die tegewoordig heel veel word gebruikt om systemen te automatiseren. Het is een systeem die als vervanging kan dienen voor de Logica in System Manager of de Rules in openHAB. Het voordeel van dit systeem is dat alles via een grafische intercface (een webpagina) gebeurt. Met een paar klikken kan je al een eenvoudige logica opzetten.
Het installatiescript bevat vanaf 7/10/2022 een optie om nodeRED te installeren. Tevens maakt dit script ook diverse Qbus-Nodes aan. Dus is het nu niet meer nodig om Qbus uitgangen via openHAB aan te spreken, maar dit kan rechtsreeks vanuit node-RED.
Elke uitgangsnode heeft 3 configuratie schermen.
Uitleg:
Om een bistabiele uitgang te bedienen zetten we voor de node een inject node.
Aan de uitgang krijgen we bij msg.payload een true of een false
Om een dimmer uitgang te bedienen zetten we voor de node een inject node.
Aan de uitgang krijgen we bij msg.payload een waarde van 0-100
Om een thermostaat uitgang te bedienen zetten we voor de node een inject node.
Aan de uitgang van de node krijgen we dezelfde data.
Deze node kan rolluiken of screens met of zonder lamellen sturen.
Om een rolluik uitgang te bedienen zetten we voor de node een inject node.
Aan de uitgang van de node krijgen we dezelfde data.
Om een sfeer te bedienen zetten we voor de node een inject node.
Om het even welke data we naar deze node sturen zal de sfeer activeren.
Van het weerstation kan je enkel data ontvangen:
nodeRED zit standaard in de repositories van Linux. Om nodeRED te gebruiken op de raspberry pi wordt aangeraden om dit via een script te installeren.
Zie ook https://nodered.org/docs/getting-started/raspberrypi
Om nodeRED (net zoals elk ander programma) te instaleren op een raspberry pi maken we best verbinding via de SSH shell. Zorg er in eerste instantie voor dat je repositories up to date zijn. Dit kan met het commando sudo apt-get update
. Daarne voer je deze regel in om het installatie script te downloaden en tegelijk ook uit te voeren:
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Bovenstaand commando zou moeten volstaan. Ik kreeg echter een error in veband met nodejs, dus heb ik dit commando gebruikt, om met nodejs versie 16 te werken):
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered) --node16
Eens de installatie loopt kan je de vooruitgang volgen:
Running Node-RED install for user pi at /home/pi on raspbian
This can take 20-30 minutes on the slower Pi versions - please wait.
Stop Node-RED ✔
Remove old version of Node-RED ✔
Remove old version of Node.js ✔ v10.24.0
Install Node.js 16 LTS ✔ v16.13.0 Npm 8.1.0
Clean npm cache ✔
Install Node-RED core ✔ 2.1.3
Move global nodes to local -
Npm rebuild existing nodes ✔
Install extra Pi nodes ✔
Add shortcut commands ✔
Update systemd script ✔
Any errors will be logged to /var/log/nodered-install.log
All done.
You can now start Node-RED with the command node-red-start
or using the icon under Menu / Programming / Node-RED
Then point your browser to localhost:1880 or http://{your_pi_ip-address}:1880
Started : Sat 20 Nov 08:54:00 CET 2021
Finished: Sat 20 Nov 08:59:10 CET 2021
You may want to run node-red admin init
to configure your initial options and settings.
Nu volgen enkele stappen om nodeRED te configureren en te laten opstarten na een reboot van de raspberry.
Eerst initialiseren we nodeRED, waardoor de belangerijkste settings worden weggeschreven:
node-red admin init
Hieronder zie je welke instellingen ik heb gebruikt:
Node-RED Settings File initialisation
=====================================
This tool will help you create a Node-RED settings file.
✔ Settings file · /home/pi/.node-red/settings.js
User Security
=============
✔ Do you want to setup user security? · Yes
✔ Username · Koen
✔ Password · *****************
✔ User permissions · full access
✔ Add another user? · No
Projects
========
The Projects feature allows you to version control your flow using a local git repository.
✔ Do you want to enable the Projects feature? · No
Flow File settings
==================
✔ Enter a name for your flows file · flows.json
✔ Provide a passphrase to encrypt your credentials file · *****************
Editor settings
===============
✔ Select a theme for the editor. To use any theme other than "default", you will need to install @node-red-contrib-themes/theme-collection in your Node-RED user directory. · dark
✔ Select the text editor component to use in the Node-RED Editor · monaco (new for 2.0)
Node settings
=============
✔ Allow Function nodes to load external modules? (functionExternalModules) · Yes
Settings file written to /home/pi/.node-red/settings.js
To use the 'dark' editor theme, remember to install @node-red-contrib-themes/theme-collection in your Node-RED user directory
Zoals je kan zien koos ik ervoor om het Dark thema te gebruiken. Hiervoor is nog een extra commando nodig:
npm install @node-red-contrib-themes/theme-collection
Vervolgens zorgen we ervoor dat nodeRED zal opstarten na een reboot van de pi:
sudo systemctl enable nodered.service
Dan herstarten we nodeRED om de instellingen in te lezen:
sudo systemctl restart nodered.service
Om nu effectief nodeRED te gebruiken openen we een browser en geven dit in: <ip-raspberry-pi>:1880
We vullen de Username en Password in dat we tijdens de installatie hebben opgegeven.
Na een korte rondleiding krijgen we een lege pagine van nodeRED te zien.
Het is de bedoeling om nodeRED met het Qbus Systeem te laten communiceren via openHAB. Hiervoor dienen we een nieuwe node set te installeren. Klik rechtsboven op het menu icoon en kies Manage Palette. Klik op de tab Install. En bij search voer je 'openhab' in.
Je krijgt een lijst te zien van alle openHAB nodes die reeds werden gemaakt voor openHAB. We nemen best steeds de meest recente. Hier zie je de enige node die kan gebruikt worden voor openHAB (v3) van 1 week oud. De andere nodes werken enkel nog op een oude versie van openHAB. Klik op de knop Install en laat nodeRED de nod installeren. Klik dan bovenaan op Close.
Als je nu in de linker kolom kijkt, dan zal je de nieuw geïnstalleerde openHAB node ertussen zien staan onder Home Automation:
.
Laat ons een de Rule die we in openHAB maakten (Bistabiel aan -> waarde naar dimmer) namaken in nodeRED.
We hebben eerst een input nodig van Qbus, de bistabiele uitgang die we gaan volgen. Dus slepen we de node openhab2-in2 naar ons werkveld. Om onze items op te halen, maken we eers verbinding met openHAB. Dubbelklik hiervoor op de node.
We beginnen met het toevoegen van een nieuwe controller. Klik hiervoor op het potlood.
We kiezen eerst onderaan onze versie (3) en in het vel OAuth2 token voeren we onze token in die we ook gebruikt hebben in Visual Studio Code. Klik dan op Add.
We krijgen nu een lijst te zien van alle Items in openHAB. We kiezen het Item opl_toggle_bureau1 en klikken dan op Done.
Om iets te doen met de waarde van de uitgang slepen we de 'switch' node naar ons veld en plaatsen dit rechts van de openHAB node. We dubbelklikken op de 'switch' om deze te configureren:
We geven een Name in voor onze switch, zodanig dat we aan de naam kunnen zien wat de switch doet.
De property blijft op msg.payload staan. msg is de boodschap die we krijgen van openHAB en payload bevat het status veld.
Dan willen we iets doen als de uitgang op ON komt. Dus we geven de conditie == ON in.
Klik dan op Done.
Als we ON hebben willen we een waarde naar een dimmer sturen. Sleep hiervoor de de node openHAB2-out2 naar het veld en dubbelklik.
We geven terug een deftige naam op.
Kiezen onze 'controller' die we reeds hebben aangemaakt bij de bistabiele uitgang.
en kies de dimmer.
Dan kiezen we als Topic 'ItemCommand', omdat we een command willen zenden naar het dimmer Item.
En bij payload vullen we de waarde in die we willen meesturen.
Klik op Done
Nu kunnen we onze node's met elkaar verbinden. Klik dan rechtsboven op Deploy.
Als we onze bistabiele nu AAN zetten in openHAB of gewoon via het Qbus Systeem, dan zal onze dimmer naar 25% gaan.
Nu willen we ook dat deze naar 0% gaat bij een UIT van de bistabiele.
Slecteer hiervoor de switch en de openHAB out node door met de muis een kader te trekken.
Doe dan + om te kopiëren en + om te plakken. Beweeg met je muis en klik als de nodes onder de vorige staan:
Pas beide nodes aan zodat je luitert naar OFF voor de bistabiele een een payload van 0 zend voor de dimmer. Maak dan de verbindingen:
Klik terug op Deploy om uit te voeren.
We hebben nu gezien hoe je van een dimmer een bistabiele kan maken.
Dit is echter nog maar een tipje van de sluier. Zo kan je zoals je bij openHAB Bindings toevoegd, hier ook heel veel nodes toevoegen (zie toevoegen van openHAB), om zo bv een commando te sturen naar een of ander toestel ipv een dimmer. Of iets ontvangen van een of andere node om een status te wijzigen in het Qbus Systeem.
Je kan de flows eenvoudig houden, maar je kan evengoed heel complexe flows gaan maken, op een overzichtelijke manier.