Google Home mit FHEM nutzen

Begonnen von Stargrove1, 25 Dezember 2017, 11:16:13

Vorheriges Thema - Nächstes Thema

Stargrove1

Zu Weihnachten habe ich einen Google Home angeschaft und habe bereits damit ein bisschen rumgespielt.

Da ich im Laufe des Jahres ebenfalls begonnen habe einen Raspberry Pi als FHEM Zentrale zu verwenden, liegt nun natürlich nichts näher als die beiden zu verbinden, um Befehle per Sprache abzusetzen und damit FHEM zu steuern. Beim Suchen wie das realisiert werden kann, bin ich nicht ganz schlüssig daraus geworden wie es am einfachsten zu machen ist, wenn es bereits Erfahrung hiermit gibt wäre ich für eine Entscheidungshilfe dankbar damit ich mich nicht in einen falschen Ansatz stürze.

Folgende Ansätze habe ich gefunden:
- IFTTT (hier scheint die notwendige Freigabe etwas aufwendig zu sein)
- HA-Bridge (Wenn ich es recht verstehe, werden Hue devices simuliert, wenn ich es recht verstehe kann ich aber nur ein/aus schalten)
- Gibt es weitere?
- Kommt ein Google Home modul für FHEM in Zukunft?

Was mir so vorschwebt wäre:
- Devices schalten
- Heizung Wert setzen
- Device readings abfragen
- Musik/Video Wiedergabe steuern wenn möglich


Esjay


Stargrove1

Danke Esjay, wenn ich es richtig verstehe übernimmt dein Modul die universale Textauswertung basierend auf regexp, die Anbindung an Google Home ist dann über IFTTT zu realisieren (oder Alexa, ...)

MadMax-FHEM

#3
Oder hier:

https://forum.fhem.de/index.php/topic,74371.msg660929.html#msg660929

oder hier:

https://forum.fhem.de/index.php/topic,66920.msg582889.html#msg582889

Ja ha-bridge "simuliert" eine HUE-Bridge und du kannst HTTP-Befehle (an fhem) absetzen oder Schripte aufrufen etc.

Für Alexa äh, sorry Google Home sieht aber alles mehr oder weniger wie Lampen aus ;)

Wobei es auch Anleitungen bzgl. MAX! Thermostaten gibt...
...sollte sich aber auf andere übertragen lassen...

Läuft lokal habe ich bei meiner Freundin laufen...
...mit Alexa aber hatte es probeweise auch bei mir mit Google Home laufen.

Aktuell nutze ich bei mir alexa-fhem mit Alexa...
...und Google Home über IFTTT.

Freigabe von Port und Absicherung ist je nach verwendeter Methode etwas aufwändig...
...geht aber.

Den Link von Esjay verfolge ich auch von Beginn an, werd ich mir mal näher anschauen, wenn Zeit ist... ;)

Habe mir auch das Google API mal angeschaut und theoretisch sollte ähnliches wie mit alexa-fhem gehen aber: viel zu wenig Zeit sich auch das noch anzusehen...
...bzw. gab es mal einen Thread oder wurde in einem "erwähnt", dass jemand wohl auf Basis von alexa-fhem sowas auch für Google umgesetzt hat...

EDIT: damit soll es wohl möglich sein den Google Home auch "sprechen" zu lassen: https://forum.fhem.de/index.php/topic,45505.msg372914.html#msg372914   Bzw. ihm eine "Übersetzungsaufgabe" zu senden wohl auch...

Ich brauche eindeutig mehr Zeit! ;)

Viel Spaß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Stargrove1

Hi MadMax, danke für die Antwort, habe die beiden Threads schon gelesen, weiß  aber leider noch immer nicht, welchen Ansatz ich eher verfolgen soll, die HA bridge scheint ja einige Einschränkungen zu haben, aber lokal zu laufen und weniger konfiguration in der cloud zu haben. Die Lösung über IFTTT braucht eben die offene Schnittstelle zum Internet, könnte aber den universellen regexp (sehr cool in meinen Augen da hiermit fast alles über nur einen IFTTT webhook realisiert werden kann) oder auch wie hier beschrieben (https://haus-automatisierung.com/hardware/fhem/2017/01/04/fhem-tutorial-reihe-part-22-ifttt-integration-webservices-in-fhem-nutzen.html). Leider habe ich etwas bedenken die zweite Lösung korrekt ungesetzt zu bekommen bezüglich was muss genau eingerichtet werden damit die Befehle von IFTTT an mein FHEM gesendet werden können.

Esjay

Zitat von: Stargrove1 am 25 Dezember 2017, 14:23:28
Hi MadMax, danke für die Antwort, habe die beiden Threads schon gelesen, weiß  aber leider noch immer nicht, welchen Ansatz ich eher verfolgen soll, die HA bridge scheint ja einige Einschränkungen zu haben, aber lokal zu laufen und weniger konfiguration in der cloud zu haben. Die Lösung über IFTTT braucht eben die offene Schnittstelle zum Internet, könnte aber den universellen regexp (sehr cool in meinen Augen da hiermit fast alles über nur einen IFTTT webhook realisiert werden kann) oder auch wie hier beschrieben (https://haus-automatisierung.com/hardware/fhem/2017/01/04/fhem-tutorial-reihe-part-22-ifttt-integration-webservices-in-fhem-nutzen.html). Leider habe ich etwas bedenken die zweite Lösung korrekt ungesetzt zu bekommen bezüglich was muss genau eingerichtet werden damit die Befehle von IFTTT an mein FHEM gesendet werden können.

Leg dir eine neue eigene Web Instanz in fhem an. Dann leg dir irgendwo einen dummy an,den du über ifttt befüllst,und pack den in einen extra Raum..Alle andren Rüme blendest du dann über das hiddenroom attribut in der neuen instanz aus.Anschließend noch allowed command setzen und gut ist.Anschließend schickst du dir den text aud dem dummy per notify oder doif in das Modul rüber..ich kann hier später mal meine Definitionen aufzeigen.

Grüße

Stargrove1

Neue webinstanz anlegen und absichern hab ich erledigt, über IFTTT habe ich testweise ein on/off und einen zum simplen weiterleiten des Befehls angelegt, damit kann ich nun aktionen ausführen wie unter dem oben genannten Link auch beschrieben, schonmal sehr cool.

Jetzt probier ich mal die Weiterleitung zum Modul aus, die Lösung mit den Regex ist natürlich noch mal um einiges offener auch was die Sprache betrifft.

Eine Frage hab ich noch, gibt es auch einen Weg das Google home werte zurücklesen und über den Lautsprecher ausgeben kann? Zum Beispiel "Ok Google, wie ist die Temperatur im Wohnzimmer?", "Im Wohnzimmer hat es 23 Grad"?

marvin78

Nein. Sowas wie "hat es X Grad" geht natürlich nicht. ;)

Zum "Sprechen lassen" hat MadMax-FHEM schon was geschrieben.

Esjay

Zitat von: marvin78 am 27 Dezember 2017, 11:25:28
Nein. Sowas wie "hat es X Grad" geht natürlich nicht. ;)

Zum "Sprechen lassen" hat MadMax-FHEM schon was geschrieben.
Sarkasmus?  ;)
Stargrove1 ich würde dir raten bei ifttt $home als erkennung anzugeben,dann kannst du sagen "ok google HOME wie ist die Temperatur im Wohnzimmer?" Als Standart antwort "Ok,ich schaue was ich machen kann"
Dann verarbeitest du den Command in fhem, und gibst als return über das googlecast modul zurück was du willst.

Grüße

Stargrove1

Zitat von: marvin78 am 27 Dezember 2017, 11:25:28
Nein. Sowas wie "hat es X Grad" geht natürlich nicht. ;)

Zum "Sprechen lassen" hat MadMax-FHEM schon was geschrieben.

Hi Marvin, den Edit hab ich übersehen, danke für den Hinweis, ich verstehe es so dass Audio/Video Dateien abgespielt werden können, muß mal durchlesen ob auch TexTtoSpeech möglich ist, so würde ich es in meinem Fall gerne einsetzen

Stargrove1

Zitat von: Esjay am 27 Dezember 2017, 11:33:53
Sarkasmus?  ;)
Stargrove1 ich würde dir raten bei ifttt $home als erkennung anzugeben,dann kannst du sagen "ok google HOME wie ist die Temperatur im Wohnzimmer?" Als Standart antwort "Ok,ich schaue was ich machen kann"
Dann verarbeitest du den Command in fhem, und gibst als return über das googlecast modul zurück was du willst.

Grüße

Sarkasmus ... neeeeiiinnn :-)

Ich hatte bereits zwei mögliche Schlüsselwörter definiert, aber "Home" finde ich sehr natürlich, danke für den Tipp

marvin78

Kleiner Tipp: Die Homes lassen sich wunderbar als Bluetooth Lautsprecher einsetzen und das beeinflusst keine der anderen Funktionen.

Stargrove1

Zitat von: Esjay am 27 Dezember 2017, 11:33:53
Sarkasmus?  ;)
Stargrove1 ich würde dir raten bei ifttt $home als erkennung anzugeben,dann kannst du sagen "ok google HOME wie ist die Temperatur im Wohnzimmer?" Als Standart antwort "Ok,ich schaue was ich machen kann"
Dann verarbeitest du den Command in fhem, und gibst als return über das googlecast modul zurück was du willst.

Grüße

Die Weiterleitung über IFTTT in einen WebDummy klappt soweit, dein Modul Talk2Fhem habe ich auch installiert, aber ich scheitere daran es zu konfigurieren. Kannst du mir hier Starthilfe geben?

Beim Device steht "Loading", liegt das an der fehlenden Konfiguration oder stimmt hier etwas nicht?

Bei dem Forumbeitrag wo das Modul beschrieben wird sind einige Beispiele, ich habe jedoch leider nicht verstanden wie ich diese angeben muss, wie muss das notify aussehen damit zum Beispiel aus dem WebDummy eine Lampe einschalten kann und brauche für jede aktion ein weiteres notify?

Beim installieren des Googlecast bin ich leider ebenfalls gescheitert, wenn ich versuche ein define zu machen wie in der Anleitung beschrieben, bekomme ich die Meldung "Cannot load module GOOGLECAST ", ich suche noch woran es hier scheitert, im Forum habe ich allerdings gesehen das es noch mehr Personen so ging.

Esjay

Am Anfang sei gesagt,das das nicht mein Modul ist..Davon bin ich noch sehr weit weg. Du musst den erkannten Text,als set Command in das Modul bringen..Hier mal mein Doif
define DoifTalk DOIF (["IFTTT"])(set talk [IFTTT:alarm])
IFTTT ist hier der dummy der durch den Webhook gefüllt wird.
Dann ins Log gucken, und schon wird es klarer..
Gleiches gilt für das Laden des GoogleCast Moduls..Schau mal ins LogFile was da fehlt..Ich vermute es hat mit Pyton zu tun.

Grüße

Stargrove1

#14
Ich bin jetzt soweit, dass nach meinem Verständnis der Inhalt vom dummy über den DoIf ans talk weitergegeben wird, allerdings passiert nichts, ich habe folgendes konfiguriert:

Im device talk unter DEF

Heizung ein = set myDummy on
Heizung aus = set myDummy off


Ich habe erwartet dass wenn ein Satz die Wörter Heizung + ein oder aus enthält, der myDummy damit geschaltet wird, dies geschieht jedoch nicht.

Im Log steht folgendes

2017.12.28 17:14:39 1: $VAR1 = 'Heizung aus';
$VAR2 = 'set myDummy off';
$VAR3 = 'Heizung ein';
$VAR4 = 'set myDummy on';


Mit ist noch aufgefallen das nach dem Laden im Log dieses steht

2017.12.28 17:14:39 1: PERL WARNING: Unrecognized escape \s passed through at ./FHEM/39_Talk2Fhem.pm line 379, <$fh> line 392.
2017.12.28 17:14:39 1: PERL WARNING: Variable "$myname" will not stay shared at ./FHEM/39_Talk2Fhem.pm line 424, <$fh> line 392.
2017.12.28 17:14:39 1: PERL WARNING: Variable "%keylist" will not stay shared at ./FHEM/39_Talk2Fhem.pm line 441, <$fh> line 392.
2017.12.28 17:14:39 1: PERL WARNING: Variable "%modlist" will not stay shared at ./FHEM/39_Talk2Fhem.pm line 479, <$fh> line 392.


Edit:
Ich habe gerade bemerkt, daß wenn der Befehl direkt an das Device talk übergeben wird, der Befehl ausgeführt wird.

Somit bleibt die Frage, warum funktioniert der Aufrug über DoIf nicht korrekt