Praten met je Home Assistant installatie via Google Home – deel 1

Het tweede weekend met de Google Home Mini in huis betekende dat ik verder gewerkt heb aan de integratie ervan met Home Assistant. Maar voordat ik daar over ga schrijven, eerst even wat begrippen op een rij om te voorkomen dat je al bij de start van dit bericht de draad helemaal kwijt bent. Het doel / resultaat zie je in de tweet hierboven. Hoe ik dat gerealiseerd heb lees je uiteindelijk in deel 3, maar dit eerste deel is wel even handig om te lezen. Goed, de spelers dan eerst even op een rij.

Home Assistant – is een open source software omgeving die niet van Google is. Ik gebruik Home Assistant en meer in het bijzonder Hass.io als vervanger voor OpenHAB (een ander open source systeem voor home automation / domotica). Omdat ik vooral ‘domme’ sensoren en schakelaars gebruik zou Google niet veel kunnen in mijn huis. Straks zal ik ook de “app” Home Assistant introduceren. dat is wat anders. Als ik alleen Home Assistant als begrip gebruik dan heb ik het over deze omgeving, geïnstalleerd op een Raspberry Pi 3B+ thuis bij mij in de meterkast.

Google Home Mini – het kleinere zusje van de Google Home. Een speaker / microfoon combinatie die luistert naar opdrachten en die doorgeeft aan Google Assistant. Vergelijkbaar met wat de Amazon Echo is voor Alexa.

Google Assistant – zorgt voor het omzetten van mijn gesproken opdrachten naar tekst en probeert daar dan iets mee te doen. Dat iets kan van alles zijn: opzoeken van een definitie van een woord op internet, het toevoegen van een item aan een boodschappenlijst, het starten van een liedje op Spotify. Google Assistant heeft ook ondersteuning voor domotica. Bijvoorbeeld voor het aanzetten van lampen of schakelaar. Google Assistant kan communiceren met Home Assistant waarbij Home Assistant er dan voor zorgt dat de actie daadwerkelijk uitgevoerd wordt. Dat is handig want hoewel Google Assistant geen ondersteuning heeft voor mijn goedkope (3 voor 10 euro) schakelaars van de Action, vindt ze het geen enkel probleem om een commando als “Zet Kerstboom Aan” door te geven aan Home Assistant. Home Assistant zorgt er dan wel voor dat via de RFXcom module die er aan hangt de juiste codes via 433Mhz naar de schakelaar gestuurd wordt.

Onhandiger wordt het als ik wil weten hoe warm het ergens in huis is. Of hoe vochtig. Home Assistant weet daar het antwoord op omdat ik daar er voor zorg dat de waardes van die sensoren via 433Mhz en wederom de RFXcom module ontvangen wordt. Maar Home Assistant heeft nog geen ondersteuning voor sensoren die luchtvochtigheid terug geven. Wel voor thermometers. Dus rechtstreeks vragen kan nog niet.

De oplossing voor (de omweg om) dit probleem is het bouwen van Custom actions voor Google Assistant. Deze custom actions kun je zelf op maat maken en koppelen aan Google Assistant. Zo’n custom action of app, moet je expliciet opstarten. Dat kan door te zeggen “Hey Google, praat met …” gevolgd door de naam van de action.  Logisch eigenlijk, want iedereen kan actions bouwen en je wilt natuurlijk ook wel weten of je met Buienrader, BNR of Home Assistant aan het praten bent. Je kunt hier een overzicht vinden van publiekelijk beschikbare actions. In dit bericht liet ik je al zien/horen hoe de BNR app klinkt en hoe ik hem gebruik om een podcast af te laten spelen op de Google Home Mini. Als het goed is begin je inmiddels te begrijpen dat de Home Mini er alleen voor zorgt dat mijn spraakopdrachten doorgestuurd worden naar Google Assistant die dan de app van BNR opstart en de resultaten weer doorstuurt naar de Home Mini.

We zijn er bijna, nog een paar begrippen:

DialogFlow – dit is een online dienst van Google. Het stond eerst bekend als API.ai voordat het opgekocht werd door Google, die naam kom je daarom ook af en toe nog tegen in videos. De dienst stelt je in staat om (relatief) eenvoudig spraakgestuurde chatbots te ontwikkelen. Je ziet DialogFlow in het schema hierboven. Met DialogFlow kan ik een app bouwen die door Google Assistant opgestart wordt als ik daar om vraag. Om het voor mezelf logisch te maken heb ik die app de naam “Home Assistant” gegeven. Dat is dus wat anders dan de Home Assistant omgeving waar ik aan het begin over sprak!
Als ik zeg “Hey Google, praat met Home Assistant” dan start Google Assistant de (testversie van de) app “Home Assistant” op. Die app is gebouwd in DialogFlow. Als ik een vraag stel aan de app, bijvoorbeeld “Wat is de temperatuur onder de carport?” dan zorgt Google Assistant voor het omzetten van de audio naar tekst. DialogFlow gaat dan met die tekst aan de slag en haalt daar de voor mij benodigde informatie uit. Ik moet weten welke sensor gevraagd wordt (d.w.z. van welke ruimte wil ik iets weten?) en of het gaat om de luchtvochtigheid (‘humidity’) of de temperatuur (’temperature’). Als die waarden ontvangen zijn dan stuurt de app Home Assistant in DialogFlow die informatie met behulp van een webhook (een internetadres dat verwijst naar de Raspberry Pi 3B+ in mijn meterkast) die door naar de Home Assistant omgeving. Daar draait dan een script dat kijkt welke informatie verzameld moet worden (bv het attirbuut ’temperature’ van de sensor ‘sensor.carport’ en stuurt het antwoord dan als een zin terug naar DialogFlow. Die stuurt de tekst dan door naar Google Assistent die hem omzet naar audio, doorstuurt naar de Google Home Mini en het antwoord is hoorbaar.

Firebase – In het plaatje hierboven zie je ook het logo van Firebase staan. En ook in de online video’s kom je die omgeving meestal tegen. Firebase biedt je de mogelijkheid om de code die nodig is voor een webhook te maken zónder dat je een Raspberry Pi met Home Assistant in je meterkast hebt staan. Voor mij is dat dus in deze context niet zo relevant omdat ik vooral aan het experimenteren ben met de combinatie met Home Assistent. Qua plek in de architectuur is het dus vergelijkbaar met elkaar. Helemaal rechts in het overzicht van de architectuur zie je nog een database staan. Veel voorbeelden die je ziet online nemen een reserveringssysteem of ordersysteem als uitgangspunt. Bijvoorbeeld in deze uitgebreide presentatie van Google I/O 2018:

En dan wil je een boeking voor een afspraak natuurlijk wel kunnen opslaan. Dat kan in de Google Agenda, maar natuurlijk ook in andere databases. In mijn geval kan ook dat op de server waar Home Assistant. De video hierboven is overigens zeker de moeite van het bekijken waard want hoewel ze wat snel over de code heen gaan, geeft het een goede indruk van de werking. Meer daarover in deel 2. Voor wie l

Apps voor iOS en Android – we zijn er bijna voor wat betreft dit eerste deel. Mocht je nou denken “ik heb geen Google Home Mini, voor mij is dit niet relevant”, dan heb je mazzel, want als je een iPhone, iPad of Android device hebt, dan mag je ook meedoen. En om het vooral niet té simpel te maken, kun je op beide platformen kiezen uit twee apps:

De Google Home app gebruikte ik tot nu toe alleen voor de Chromecast maar met dank aan de integratie van Home Assistant en Google Assistant zie ik de schakelaars, lampen etc. die ondersteund worden door Google Assistant nu ook in de Google Home app (zie afbeelding hiernaast). Ik kan ze daar dus ook bedienen zonder gebruik te maken van spraak. Is eigenlijk vaak wél zo handig wat mij betreft.

De Google Assistant app laat die knoppen niet zien, maar biedt dezelfde functionaliteit als ook de Google Home Mini doet. Ik kan er tegen praten (maar ook via tekst die ik op mijn telefoon invoer) en opdrachten geven (om knoppen aan/uit te zetten) en ik kan ook de app Home Assistant opstarten en op die manier, net als via de Home Mini vragen stellen.

Tot zover deel 1. Super dat je het tot hier uitgehouden hebt. In deel 2 gaan we eerst met een eenvoudig voorbeeld aan de slag. In deel 3 ga ik in op de manier waarop ik de dialoog die je in de tweet gedemonstreerd ziet gerealiseerd heb.

0 0 stemmen
Bericht waardering
3 Reacties
Inline Feedback
Bekijk alle reacties
trackback

Praten met je Home Assistant installatie via Google Home – deel 1 https://t.co/ARV1AXvglf

trackback

Praten met je Home Assistant installatie via Google Home – deel 2

Na uitleg van de terminologie gisteren (… https://t.co/NyhciGvQDY

trackback

Voor wie het niet meegekregen had, het ging om deze dialoog.
Deel 1: https://t.co/SetLJ153Ma
Deel 2:… https://t.co/juEQj2CbPd