Jaren geleden zag ik de film Iron Man. Tony Stark bediende zijn huis door middel van zijn stem. Jarvis was zijn assistent in huis. Hoe tof was dat!
Toen ik die film zag ging er bij mij een knop om: Dit wil ik ook! Ik begon met het knutselen aan een Raspberry Pi. Via een oude webcam kon ik spraakcommando’s geven, 15 seconden later reageerde de Pi. Niet helemaal wat ik verwacht had.
Een paar jaar later heb ik het voor elkaar! Mijn huis reageert op mijn stem. Lampen aan en uit, temperatuur omhoog of omlaag, muziek afspelen in bepaalde ruimtes en zelf het laatste nieuws horen wanneer ik wakker word. Sindsdien noem ik mijzelf Iron Man…..geintje natuurlijk.
Hoe heb ik dat voor elkaar gekregen? Door Google Home te koppelen aan Domoticz. Het is vrij eenvoudig en na het lezen van deze blog heb jij het ook voor elkaar.
In dit artikel
Google Assistant koppelen met Controlicz
Ben je wat minder technisch en heb je een paar tientjes per jaar over voor de koppeling? Dan is Controlicz de perfecte oplossing. In onderstaande stappen leg ik je uit hoe je Domoticz aan Google Assistant koppelt door middel van Controlicz.
Wat heb je nodig?
- Google Nest
- Raspberry Pi
- Domoticz
- Controlicz account
Google Nest installeren
Voordat we beginnen is het verstandig om je Google Nest te installeren. Voor de installatie verwijs ik je door naar mijn artikel: Google Nest: De Ultieme Gids Voor Beginners.
Nadat je de Google Home hebt geïnstalleerd kun je verder met onderstaande stappen.
Nieuwe gebruiker aanmaken in Domoticz
We beginnen in Domoticz door het aanmaken van een nieuwe gebruiker. Deze gebruiker koppelen we later aan Controlicz. Controlicz is de koppeling tussen Domoticz en jouw Google Nest.
Ga naar Instellingen → Meer opties → Gebruikersinstellingen.
Vul een Gebruikersnaam in. Ik heb mijn gebruiker Controlicz genoemd zodat ik snel kan zien wat het doel van de gebruiker is.
Vul een sterk wachtwoord in. Kies bij de rechten voor Kijker. Controlicz maakt gebruik van beveiligde verbindingen, maar stel dat jouw inloggegevens toch lekken, dan kan een hacker nog niet veel. Safety first 😉
Voeg de gebruiker toe.
Google Home maakt gebruik van verschillende ruimtes. Om Google Home te laten weten in welke ruimte de apparaten zich bevinden moeten we een kamerplan aanmaken in Domoticz.
Maak een kamerplan in Domoticz
In Domoticz ga je naar Instellingen → Meer opties → Ruimtes → Kamerplan en klik op Ruimte toevoegen.
Geef je ruimte een herkenbare naam. Ik heb ervoor gekozen om de ruimtes in huis te gebruiken.
Voeg vervolgens alle apparaten in deze ruimte toe.
Je hebt nu al je apparaten ingedeeld in ruimtes. Tijd om de koppeling met Google Home te maken.
Een Controlicz account aanmaken
We gaan je Domoticz apparaten koppelen aan Google Home door middel van Controlicz. Controlicz is de gateway tussen jouw Google Home en Domoticz. Ga naar https://controlicz.com/login en maak een account aan.
Vul bij Your Domoticz Host jouw externe IP-adres in. Bij Your Domoticz Port vul je het poortnummer in.
Bij Username en Password vul je de gegevens in die je hierboven hebt aangemaakt.
Vergeet geen vinkje te zetten bij “Ik ben geen robot”.
Je hebt nu een account aangemaakt en komt terecht in je Dashboard. Klik aan de linkerkant op Profile.
Kies voor Test Connection om je instellingen te controleren. Heb je alles goed ingesteld? Dan krijg je de melding “Success – your connection is working”.
Hoppa! Dat werkt.
Helaas is Controlicz niet meer gratis. Voor € 20/jaar (of € 2/maand) heb je een abonnement met alle mogelijkheden. Om een abonnement af te sluiten klik je aan de linkerkant op Billing en kies je een betaalmethode.
Als alles goed gegaan is zie je nu bij Devices jouw apparaten verschijnen. Tijd om Google Home te vertellen dat we er klaar voor zijn!
Controlicz toevoegen aan Google Home
Voordat we Domoticz met onze stem kunnen bedienen moeten we Controlicz aan Google Home koppelen. Zoals ik eerder al zei is Controlicz de gateway tussen beide programma’s. Allebei de kanten moeten daarom wel gekoppeld zijn.
Klik op Toevoegen en vervolgens op Apparaat instellen. Kies voor “Werkt met Google“. Zoek in de lijst naar Controlicz.
Log nu in met de inloggegevens die je bij stap 3 aangemaakt hebt.
Je krijgt de volgende vraag: “Google is requesting full acces to your account, do you approve?” kies voor “Allow“.
Zodra je Controlicz account gelinkt is zie je in het beginscherm van Google Home al jouw Domoticz apparaten verschijnen.
Binnen Google Home kun je de namen van de apparaten aanpassen. Dit is makkelijk voor de spraakcommando’s.
Het is veel makkelijker om te zeggen:
- Hey Google, zet de tuinlampen op 30%
- Hey Google, zet alle lampen in de woonkamer aan
- Ok Google, zet de thermostaat op 19 graden
Met Google Home kun je niet alleen je lampen bedienen, maar ook je robotstofzuiger aanzetten, het alarm in-/uitschakelen of muziek afspelen in de slaapkamer (superromantisch 😄)
Is het jou gelukt je Google Home te koppelen met Domoticz? Laat even in de reacties weten wat jij allemaal bedient, zo help je andere aan inspiratie voor hun automatisering.
Koppel Domoticz aan Google Assistant met Node Red
Ik heb je laten zien hoe je eenvoudig met Controlicz je Domoticz apparaten aan Google Assistant koppelt.
Zelf heb ik hier jaren meegewerkt. Alleen de laatste tijd stoor ik mij aan de vertraging van het inschakelen van apparaten.
Soms met ik een aantal seconden wachten voordat mijn lampen aanspringen.
Daarnaast kreeg ik regelmatig de melding dat er geen verbinding gemaakt kon worden met Controlicz.
In mijn zoektocht naar een betere, goedkopere en snellere oplossing 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 bovenstaande methode, maar als je het eenmaal onder de knie hebt werkt het super.
Laten we beginnen.
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)
Nadat de installatie klaar is kunnen we Node Red starten met:
node-red
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
Wil je de automatische start uitschakelen, gebruik dan:
sudo systemctl disable nodered.service
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.
Selecteer het tabblad Install en zoek op “nora”.
Zoek naar “node-red-contrib-nora” en klik op Install.
Sluit het venster en keer terug naar het hoofscherm.
Nora configureren
- 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
Dubbelklik op de light node (Light). En klik op het potlood achter 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”.
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.
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 lichtgewicht protocol wat communicatie tussen slimme apparaten mogelijk maakt. Heb je dit nog niet geïnstalleerd, bekijk dan eerst mijn artikel over MQTT installeren op Raspberry Pi.
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.
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.
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.
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.
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
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”.
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;
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;
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.
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.
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
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.
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.
Conclusie
Je hebt nu 2 manieren gezien om je Domoticz aan Google Assistant te koppelen. De een wat technischer dan de ander.
Ik hoor graag wat je van dit artikel vond. Liep je ergens tegenaan of had je het in een keer werkend?