Google Assistant Relay via Home Assistant - Duurzame Energie & Domotica - GoT
Draadloze speakers Overige software Google
dinsdag 16 juni 2020 11:29
Vorig jaar is mijn nieuwbouwhuis opgeleverd. Vanuit de bouw is daar een smart home systeem, genaamd One Smart Control ingebouwd (zie ook: [Domotica] One Smart Control)
Helaas is het een enorm gesloten systeem, wat dus alleen via de knoppen op de muur en via de eigen app bediend kan worden. Wel zeggen ze (inmiddels al 1,5 jaar of zo) dat er ondersteuning voor Google Assistant komt. Buiten dat is er geen web-interface of api.
Buiten Google Assistant (via een aantal Google Home apparaten) gebruik ik ook Home Assistant (zie: Home Assistant: Open source Python3 home automation - deel 2). Daarin kan ik van alles automatiseren, bijvoorbeeld dat de lichten uit moeten gaan als er niemand meer thuis is. Echter kan ik daar dus niet mijn One Smart Control systeem mee bedienen. Ik kan uiteraard slimme lampen (bijvoorbeel Hue, of in mijn geval Tuya) gebruiken, maar het nadeel daarvan is weer dat die niet werken als je de wandknop gebruikt, de stroom is er dan immers af.
Nu bedacht ik me dat het wellicht mogelijk is om Google Assistant aan te sturen via Home Assistant, en na een korte zoektocht kwam ik op Google Assistant Relay uit (zie: https://github.com/Apipa169/Assistant-Relay-for-Hassio)
Nu kan het best nog lang duren voordat Google Assistant werkt met One Smart Control, maar ik wilde vast voorbereid zijn, en alvast uitzoeken hoe het dan zou kunnen werken
Wellicht ook handig om te melden, ik heb bar weinig programmeerervaring, en ben ook pas een goeie maand ofzo met Home Assistant bezig. Ik knoop van alles aan elkaar wat ik via Google vind, en hoop dan maar dat het werkt
Waarom een apart topic
Omdat het zowel Home Assistant en Google Assistant raakt, wist ik niet echt waar ik het kwijt moest. Daarnaast dacht ik dat het wellicht wat een te groot onderwerp is voor in een verzameltopic, ook omdat anderen misschien ook met dit probleem worstelen (wellicht niet met One Smart Control, maar met een ander systeem wat ook alleen via Google Assistant aan te sturen is).
Wat ik tot op heden gedaan heb
Allereerst heb ik Google Assistant Relay geïnstalleerd. Dat ging vrij soepel via de instructies op de Github pagina. Als je de stappen volgt moet dat op zich wel goed gaan. Je moet wel in de Google Console een API aanmaken, maar alles wordt vrij duidelijk omschreven.
Om vervolgens de Google Assistant Relay ook in Home Assistant te kunnen gebruiken, moet je het volgende toevoegen aan je configuration.yaml:
# assistant relay
url: http://192.168.2.179:3000/assistant
payload: '{"command":"{{ command }}", "user":"TheFes", "broadcast":true}'
payload: '{"command":"{{ command }}", "user":"TheFes", "converse":true}'
payload: '{"command":"{{ command }}", "user":"TheFes"}'
Vervang in bovenstaande code het IP adres naar jouw lokale IP, en de username naar de username die je tijdens de configuratie van Google Assistant Relay aangemaakt hebt. Alleen de laatste is nodig om commando's als "zet het licht aan" te sturen. De bovenste twee zijn voor broadcasts naar je Google Home apparaten.
Daarna heb ik een dummy lamp aangemaakt in Home Assistant. Aangezien ik One Smart Control nog niet kan aansturen, ga ik onderstaande voorbeelden een Tuya lamp schakelen. Vrij nutteloos natuurlijk want die kan ik ook gewoon direct in Home Assistant schakelen, maar voor nu is dit een concept-test.
# de dummy lamp zelf
test_staande_lamp:
friendly_name: "Test Staande lamp"
entity_id: input_boolean.test_staande_lamp
entity_id: input_number.test_staande_lamp
# een input_boolean die aan/uit schakelt
# een input_number om de helderheid in te stellen
Na een reboot heb je dan vervolgens een lamp! Je kunt de helderheid instellen (van 1 tot 100%) en de lamp aan en uitzetten. Alleen er gebeurt uiteraard nog niets. Voor het aan/uit-zetten heb ik twee scripts en een automation gemaakt. Het schakelen van de helderheid kon met alleen een automation.
test_staandelamp_on:
alias: Test Staande Lamp On
command: zet staande lamp aan
test_staandelamp_off:
alias: Test Staande Lamp Off
command: zet staande lamp uit
- id: '1592232113619'
alias: Test Staande Lamp GA
- entity_id: input_boolean.test_staande_lamp
- service_template: script.test_staandelamp_{{trigger.to_state.state}}
- id: '15922321136191'
alias: Test Staande Lamp GA brightness
- entity_id: input_number.test_staande_lamp
command: "zet staande lamp op {{ trigger.to_state.state | int }} procent"
Zoals je ziet gebruik ik Google Assistant in het Nederlands. Dat is ook waarom ik voor aan/uit wel scripts nodig had, en voor de helderheid niet. De state van de boolean is namelijk on of off, en in mijn Google Assistant commando heb ik aan en uit nodig. Ik kan dus niet direct de state van de boolean gebruiken.
Wat ik nu doe is de state van de boolean gebruiken als een wildcard in de automation om te bepalen of het on-script of het off-script getriggerd moet worden.
Bij een getal speelt dit taalprobleem niet, en de stat van het input_number kan dus wel meteen in de automation gebruikt worden. Als je Google Assistant in het Engels gebruikt, zou je het aan/uit-schakelen dus ook in een automation kunnen afvangen, zonder de twee scripts.
Na het herladen van de scripts en automations (of na een reboot van Home Assistant) zou het moeten werken.
Als je nu de test-lamp aanzet, wordt er via de Google Assistant Relay het commando "zet staande lamp aan" gestuurd naar Google Assistant, en gaat de staande lamp aan.
Op zich heb ik nu al wel iets wat zou kunnen werken voor automatiseringen. Bijvoorbeeld dus om alle lampen uit te zetten als ik weg ga. Voor die automatisering zou zelfs één dummy lamp genoeg zijn, die dan het commando "zet alle lampen uit" triggert
Wat ik met dit topic wil
Allereerst dus wellicht andere mensen helpen die een vergelijkbaar probleem hebben
Tips krijgen om bovenstaande te verbeteren
Onderstaand probleem oplossen
Bovenstaande werkt maar één kant op. Je kunt wel via Home Assistant een lamp aan/uitzetten of de helderheid wijzigen, en dat zie je dan ook in Google Assistant terug, maar als je met je Google Home een lamp uitzet, blijft je dummy lamp in Home assistant gewoon aan.
Ik heb nog niets bedacht om die wijzigingen ook weer naar de dummy lamp terug te sturen.
Dat zorgt ook voor een probleem. Stel de dummy lamp staat uit, en je zet vervolgens via de Google Home de lamp aan. De staat van de dummy lamp verander dan niet. Als je vervolgens via een automation of script in Home Assistant de dummy lamp uitzet, verander de staat ook niet, en wordt Google Assistant Relay dus niet getriggerd. Ofwel als iedereen het huis verlaten heeft, gaat de lamp alsnog niet uit.
Daarvoor zoek ik dus ie ieder geval nog een oplossing
vrijdag 11 september 2020 13:09
Dank je, ga ik mee aan de gang! Ik krijg mijn Action lampen niet aan de gang omdat ik ze via de indio app gebruik.
jvbragt schreef op vrijdag 11 september 2020 @ 13:09:
Is het niet makkelijker om de lampen opnieuw te koppelen met de Tuya app? Daar kun je ook gewoon je LSC lampen in koppelen en dan dus direct in HA de Tuya integratie gebruiken.
De Google Assistant integratie voor mijn smart home systeem is er nog steeds niet. Dus heb het zelf nog niet in gebruik.
vrijdag 11 september 2020 14:34
Ik zal daar eens naar kijken. De scripts werken wel, maar het aan en uit zetten via een switch nog niet.
zondag 30 mei 2021 21:32
Laatst online: 02-06 14:07
Hoe kom je eigenlijk aan deze id's
zondag 30 mei 2021 21:40
thomasb14 schreef op zondag 30 mei 2021 @ 21:32:
Dat zijn id's die Home Assistant toekent als je de automation in de GUI maakt.
TheFes schreef op zondag 30 mei 2021 @ 21:40:
Ah, zo. Ik vind het allemaal nog erg moeilijk moet ik zeggen. :-|
Is voor mij de eerste keer Home Assistant.
zondag 30 mei 2021 22:10
Posthistorie (46.028 berichten)
Ik zit even te kijken, maar het komt erop neer dat je voor dit geen poorten hoeft te openen in je router?
maandag 31 mei 2021 10:14
@TheFes hoe heb je eigenlijk de slider werkend gekregen? Ik krijg iedere keer deze melding:
Error executing script. Invalid data for call_service at pos 1: Invalid value for input_number.kleinslaap_wandlampen: 171.0 (range 0.0 - 100.0)[0m
maandag 31 mei 2021 10:31
thomasb14 schreef op maandag 31 mei 2021 @ 10:14:
Mijn post was een erg specifieke use case, waarbij ik probeerde iets met een gesloten systeem via Google Assistant in Home Assistant te knutselen.
Ik heb het uiteindelijk nooit in gebruik genomen, en ben de modules gaan vervangen voor Shellies die gewoon goed in HA werken. Ook omdat One Smart Control ook nog steeds geen koppeling met Google Assistant gemaakt heeft.
Ik verwacht dat je (zeker als beginnend HA gebruiker) een stuk meer hebt aan het algemeen HA topic
Dit topic is ook al weer een jaar oud, en inmiddels zou ik het waarschijnlijk allemaal al weer anders doen. Omdat mijn kennis vergroot is, maar ook omdat HA weer een hoop veranderd is.
Overigens geeft je error aan dat je 171 wil toekennen aan een input_number die maar van 1 tot 100 gaat.
TheFes schreef op maandag 31 mei 2021 @ 10:31:
Ik heb zelf thuis helaas een gesloten domotica systeem die ik graag wil integreren met HA.
Ik zal zeker eens gaan kijken naar het topic!
Die error code kreeg ik na het gebruik van je code haha. Maar ik zal eens kijken hoe ik kan omzeilen.