Koppel Domoticz aan Google Assistant met Node Red

In mijn zoektocht naar een goedkopere en snellere oplossing dan Controllicz kwam ik bij Node Red uit. 

Het voordeel van Node Red is dat je het volledig in eigen beheer hebt. Het draait lokaal wat geen vertraging oplevert en de mogelijkheden zijn eindeloos. 

Het is wat technischer dan Controllicz, maar als je het eenmaal onder de knie hebt werkt het super.

Laten we beginnen.Neem je tijd. Deze methode is een stuk technischer, maar zeker niet onmogelijk. Zorg dat je een paar vrije uren hebt om dit stappenplan op je gemak uit te voeren.

De voorbereiding

Voordat we Node Red kunnen installeren moeten we zeker weten dat we de volgende zaken op orde hebben:

  • Python is geinstalleerd op je Raspberry Pi
  • Installeer een MQTT broker om verbinding te maken met Domoticz.
  • Zorg voor root toegang op je Pi


Heb je bovenstaande punten op orde, dan kunnen we beginnen met het installeren van Node Red op de Raspberry Pi.

Node Red installeren op de Raspberry Pi

De installatie van Node Red is heel eenvoudig omdat Node Red een speciaal pakket voor Raspberry Pi heeft ontwikkeld. 

Dit pakket controleert op oudere versies en verwijdert deze, zodat je zeker de nieuwste versie hebt. Daarnaast worden er services geïnstalleerd zodat je Node Red automatisch kunt laten starten wanneer je Pi opstart. 

Om Node Red te installeren gebruiken we het volgende commando:

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Copy

Nadat de installatie klaar is kunnen we Node Red starten met:

node-red

Copy

Node Red automatisch starten

Zoals ik net al zei kunnen we Node Red automatisch starten wanneer de Pi wordt opgestart. Dankzij de service kunnen we dit eenvouig doen met: 

sudo systemctl enable nodered.service

Copy

Wil je de automatische start uitschakelen, gebruik dan:

sudo systemctl disable nodered.service

Copy

Node Red openen

Je hebt nu Node Red geinstalleerd en gestart. Tijd om de interface te bekijken. Gebruik je de desktop versie op je Pi, browse dan naar http://localhost:1883

Liever extern benaderen, vervang localhost dan voor het ip-adres van je Pi.

Nora installeren

Om Node Red te koppelen aan Google Assistent maken we gebruik van Nora. 

Klik rechtsboven op het hamburger menu en klik op Manage pallete.

nodered menu

Selecteer het tabblad Install en zoek op “nora”.

Zoek naar “node-red-contrib-nora” en klik op Install.

nodered nora installeren

Sluit het venster en keer terug naar het hoofscherm.

Nora configureren

Voordat we verder gaan met het koppelen moeten we Nora configureren. Maak op de website van Nora een account aan en kopieer de token die je krijgt.

  • Open de Google Home app op je smartphone.
  • Klik op + om een apparaat toe te voegen en selecteer Apparaat instellen.
  • Kies voor de optie “Werkt met Google
  • Zoek naar Nora
  • Koppel je zojuist aangemaakte account

Keer terug naar Node Red en voeg een Nora light node toe.

nodered nora light node

Dubbelklik op de light node (Light). En klik op het potlood achter Config.

nodered nora config

Vul je token in bij Token en geef de configuratie een herkenbare naam.

Klik op Update.

Geef de lamp een naam (Ik hou dezelfde naam als in Domoticz aan om het overzichtelijk te houden.)

Is de lamp voorzien van een dimmer, vink dan de optie “Allow brightness control” aan.

Als optie kun je nog “Turn on when brightness/color changes:” aanvinken. De lamp zal dan aangaan zodra de helderheid of kleur wordt aangepast.

Heeft je lamp een RGB-functie vink dan de optie “Color support (RGB)” aan. Dit zorgt ervoor dat er in  de Google Home app een kleurenpalet getoond wordt. 

Een handige functie in Node Red is de Room Hint functie. In de Google Home app kun je apparaten toevoegen aan ruimtes in huis. Zo kun je per ruimte bepalen wat er gebeurt. 

Door gebruik te maken van Room Hint kunt je het apparaat automatisch in de juiste ruimte plaatsen. Vul maar eens “Woonkamer” in en kijk wat er in de Google Home app gebeurt.

De optie Topic is de belangrijkste. Deze koppelt de node aan een Domoticz idx. Vul hier de idx van de lamp in. 

Alles ingevuld? Klik dan op Done.

Klik in het hoofdvenster rechtsboven op Deploy.

Als het goed is zie je onder de light node nu een groen bolletje met daarachter “connected”.

nodered nora node connected

Nora is nu succesvol gekoppeld aan Google Assistant. 

Open de Google Home app en je zal zien dat er een apparaat is toegevoegd.

Wanneer je het apparaat in de Google Home app aan of uit zet zul je die verandering ook in Node Red zien. Let opWe hebben nog geen koppeling met Domoticz gemaakt, de lamp zal dus niet aan of uit gaan.×Melding negeren

Domoticz koppelen aan Nora

We hebben nu Nora gekoppeld aan Google Assistant. Nu gaan we de andere kant op. Nora laten communiceren met Domoticz.

Hiervoor maken we gebruik van MQTT. Dat is een snel en lightgewicht protocol wat communicatie tussen slimme apparaten mogelijk maakt. Heb je dit nog niet geinstalleerd doe dit dan, de Installatie handleiding of als je niet kan wachten kijk dan even hier.

Laten we beginnen met de koppeling.

MQTT node

Zoek in de lijst met nodes naar “MQTT out”. Sleep de node links naast de light node.

nodered nora nodes

Dubbelklik op de MQTT node om de opties te openen. 

Klik bij Server op het potloodje. 

Vul hier de instellingen van je MQTT broker in. Standaard is dit localhost en poort 1883. Geef de configuratie de naam Domoticz.

Klik op Update.

nodered nora mqtt config

Vul bij Topic “domoticz/out” in en klik op Done.

Op die manier luistert de node naar alle uitgaande berichten vanuit Domoticz.

JSON node

Om die berichten te vertalen naar een taal die Node Red begrijpt plaatsen we een JSON node. Voeg deze rechts naast de MQTT node in en koppel de nodes aan elkaar.

nodered json node

Dubbelklik op de JSON node om de opties te openen. 

Selecteer bij Action in het dropdown menu de optie Convert between JSON string & Object

Vul bij Property “payload” in. En klik op Done.

nodered json opties

Schakelaar node

Lampen kunnen verschillende opties hebben. Denk hierbij aan aan/uit, dimmer, etc.

Met een switch node kunnen we de verschillende acties uit elkaar houden. 

Voeg een switch node toe rechts van de JSON node en koppel ze aan elkaar.

Dubbelklik de switch node om de opties te openen.

Bij Property vullen we payload.switchType in.

Daarna voegen we 2 regels toe. 

  • Regel 1: contains On/Off
  • Regel 2: contains Dimmer
nodered schakelaar opties
Hier maakt Node Red de keuze tussen een gewone schakelaar of een dimmer

Klik op Done en keer terug naar het hoofdvenster. Zoals je ziet, heeft de switch node 2 uitgangen (een voor de On/Off en een voor de Dimmer). Om de juiste acties uit te voeren dienen we 2 functions nodes aan te maken.

Function nodes

We voegen nu 2 function nodes toe en koppelen deze aan de uitgangen van de switch node. 

Geef de nodes de namen “Convert On/Off” en “convert Dimmer”.

nodered function nodes

Open de node “Convert On/Off” en plak onderstaand script.

msg.topic = msg.payload.idx
if (msg.payload.nvalue == 1)
{
    msg.payload = true
}
else if (msg.payload.nvalue === 0)
{
    msg.payload = false
}
return msg;

Copy

Klik op Done.

Open nu de node “Convert Dimmer” en plak onderstaand script.

msg.topic = msg.payload.idx
var Level = msg.payload.svalue1
if (msg.payload.nvalue >= 1)
{
    msg.payload.on = true
    msg.payload.brightness = Level
}
if (msg.payload.nvalue === 0)
{
    msg.payload.on = false
    msg.payload.brightness = 0
}
return msg;

Copy

Domoticz idx check node

Om alle apparaten uit elkaar te houden plaatsen we een nieuwe switch node en koppelen we de uitgangen van de function nodes.

In de switch node plaatsen we alle Domoticz idx waardes van de lampen die we willen bedienen met Google Assistant.

Dit keer vullen we bij Property “topic” in.

nodered domoticz idx check

Koppel nu de juiste NORA lamp aan de idx. 

Weet je nog dat we in de light switch bij Topic het juiste idx hebben ingevuld. Koppel nu die lampen met de juiste idx uitgang van de switch node.

Als je met je muis op een uitgang gaat staan kun je zien welke waarde er aan hangt. Op die manier kun je ze makkelijk koppelen.

nodered idx hover

Als je alle lampen hebt gekoppeld klik je rechtsboven op Deploy.

De MQTT node aan het begin en de NORA lamp aan het eind horen nu allebei een groen bolletje te hebben.

Open Domoticz en wijzig de status van een van de lampen die je in Node Red hebt gekoppeld. Je ziet nu in Node Red de status veranderen onder de lamp (connected (on)).

De koppeling van Domoticz naar Node Red is gelukt. Domoticz stuurt een bericht uit wat door Node Red wordt opgevangen en uitgelezen. 

De communicatie van Domoticz naar Google Assistant via Node Red is klaar. Maar we willen natuurlijk ook nog de andere kant op communiceren. 

Google Assistant met Domoticz laten communiceren

Domoticz praat nu met Nora, maar we willen Nora ook met Domoticz laten praten zodat we de apparaten van beide kanten kunnen bedienen. 

Om dit te doen voegen we een nieuwe function node toe aan het eind van onze flow. 

Voeg de volgende code toe aan de function node:

var idx = parseInt(msg.topic);
if ( msg.payload === true )
{
msg.payload = { "command": "switchlight", "idx": idx, "switchcmd": "On" };
}
else if ( msg.payload === false )
{
msg.payload = { "command": "switchlight", "idx": idx, "switchcmd": "Off" };
}
return msg

Copy

Deze node zorgt dat alle switch opdrachten van Nora vertaald worden naar MQTT. 

Voeg een JSON node toe en koppel de function node aan de switch node. 

Zet de JSON node weer op “Convert between JSON String & Object

De Property is payload.

nodered nora json 2

Als laatste stap voegen we de “MQTT out” node toe. Selecteer hier de Domoticz server die we bij de andere MQTT node hebben aangemaakt. 

Typ achter Topic “domoticz/in”.

Sla alles op en klik op Deploy.

Test of alles werkt. 

Schakel de lamp aan via Domoticz en zet hem uit via Google Assistant. 

Leave a Comment