Google Home Anfänger

Begonnen von Chridd, 17 Januar 2018, 22:15:37

Vorheriges Thema - Nächstes Thema

Chridd

Was bisher geschah...

Zitat von: MadMax-FHEM am 17 Januar 2018, 00:33:59
Wenn du es simpel willst (also ich finde es simpel, weil viel Info und Schrittweise), dann evtl. folgendes:

fhem per User/Passwort (kann/sollte ruhig kompliziert sein) absichern: Stichwort "allowed" in der commandref
Dort dann auch nur bestimmte cmds "freigeben" (eigentlich reicht ein setreading oder set)
https aktivieren: commandref FHEMWEB

Dann in IFTTT eine Google Home Activity anlegen (such dir eine raus die für das Vorhaben passt) und per WebHook dann einen Dummy befüllen (set/setreading).
(Nicht vergessen das Passwort, welches du dann in der url des WebHook einträgst, zu encoden, Stichwort: urlencode / könnte bei Passwörtern mit Sonderzeichen [und das sollte ja sein!] sonst nicht klappen)

Wenn das geht entweder für alles was du steuern willst statt dem Dummy eben das entsprechende Kommando, dazu brauchst du halt für jeden Aufruf eine Google Home Activity mit WebHook (etwas umständlich und aufwändig aber "einfach" da mehr oder weniger copy&paste).

Andere Variante: dir einen "Umsetzer" rauszusuchen, also Talk2Fhem, Babble, TEERKO, ...
Und dann einfach "alles was du zu Google Home sagst" dort "hineinstecken" und dann eben dort konfigurieren was passieren soll...
Evtl. etwas "komplizierter" aber dafür deutlich flexibler (finde ich).

Wenn das geht, dann kannst du ja auch weiter absichern (wobei ich denke eine gut abgesicherte allowed mit starkem Passwort und guter cmd-Einschränkung und https ist schon recht sicher / besser wahrscheinlich als ein schlecht/falsch konfiguriertes nginx/reverse proxy oder was auch immer)...

Es ist halt eine "stufenweise" Umsetzung wo es vermutlich einige Infos im Netz gibt:
zu IFTTT und Google Home gibt es bestimmt massig
zu WebHook (und fhem) gibt es bestimmt auch einiges
zu Absicherung von fhem per allowed und https gibt es auch einiges

und was du dann für eine Umsetzung innerhalb von fhem nutzt (wenn dir irgendwann das mit dem Anlegen von IFTTT Actions zu viel wird) kannst du dir ja dann überlegen ;)

EDIT: und per CHROMECAST Modul kannst du dann den Google Home auch antworten lassen... Und wenn das mit einer IFTTT-Instanz/Account geht, dann kannst du dir ja auch das mit mehreren überlegen und dann "mitgeben" von welchem Google Home / Mini das Kommando kam... Immer eine Stufe nach der anderen ;)

Viel Erfolg, Joachim

Zitat von: MadMax-FHEM am 17 Januar 2018, 14:53:45
Viel Erfolg!

Und wichtig: immer Schritt für Schritt und testen...

Also erst mal https und User/PW einrichten, lässt sich ja auch schon lokal testen (also per https auf die neue WebInstanz und dann müsste User/PW-Abfrage kommen)

Dann Portfreigabe/Weiterleitung und DynDNS (oder irgendwie "statische IP"): dann müsste Zugriff auch "von außen" über den DynDNS-Namen gehen (ebenfalls https und User/PW)

Dann Dummy anlegen und versuchen "von außen" einen Wert zu setzen (wahrscheinlich musst du für die Nutzung mittels IFTTT ein fixes csrfToken nutzen, siehe commandref / csrfToken auf none würde ich nicht machen!) so in der Art: https://username:password@DynName:Port/fhem?cmd=setreading%20Dummyname%20Readingname%20Wert&fwcsrf=DeinGewaehltesToken

Dummyname und Readingname sind eigentlich egal ist ja nur ein Zwischenschritt ;)
Anmerkung (nochmal) PW evtl. mittels urlencode "encoden" damit bei der Übertragung per HTTP/HTTPS alles passt ;)

Wenn das klappt, dann evtl. weiter absichern (allowed commands): einschränken auf 'setreading' bzw. 'set' jenachdem ob du setreading oder set (nachher) verwenden willst/musst
Wenn dann der Aufruf immer noch geht ist das dann soweit fertig... (Aufruf merken! ;)  )

Hier gibt's "Anregungen" bzgl. Web-Aufrufen: https://forum.fhem.de/index.php/topic,66920.0.html

Dann das IFTTT-Zeugs anlegen und bei WebHook eben genau den oben gemerkten Aufruf eintragen: einfach dann mit deinem Google Home reden und es sollte das Reading im Dummy gesetzt werden (wie zuvor per Webaufruf). Statt "Wert" im Aufruf dann halt {{TextField}} damit das Gesprochene Wort in den Dummy geschrieben wird (oder was immer du für eine "Variable" bei IFTTT nutzt)...

Oder gleich das richtige Gerät schalten, wenn dich nicht interessiert was gesprochen wurde und du keine "Auswertung" in fhem machen willst...

Wenn das dann geht, dann per copy&paste soviele Kommandos anlegen wie du brauchst/willst und statt dem Dummy eben das entsprechende Gerät schalten... ;)

Wenn dir das zu viel copy&paste bei IFTTT ist, dann eben statt einen Dummy setzen bzw. direkt ein Gerät steuern halt sowas wie TEERKO, Babble, Talk2Fhem, ... dazwischenhängen...
Also {{TextField}} an das entsprechende Device übertragen und alles weitere dann dort...

Gruß, Joachim


Zitat von: MadMax-FHEM am 17 Januar 2018, 21:34:45
Du kannst auch mehrere FHEMWEB-Instanzen anlegen!

GENAU LESEN!!

Neue Web-Instanz!


Auf was zielt deine cmds Frage ab?

EDIT: ah. Dann bitte auch der Reihe nach wie geschrieben! Hast du bereits DynDNS etc.? Hast du das Setzen von Dummy-Werten "von außen" (also aus dem Internet, z.B. Handy im Providernetz) geschafft? Erst wenn das geht, dann "kannst du cmds einschränken" (kein MUSS / nur mehr "Sicherheit")

EDIT2: Stichwort allowed Device / allowedCommands

EDIT3: Also zu DynDNS nichts zu finden geht eigentlich gar nicht. Da ist eher die Frage welchen von den vielen nehme ich ;)  Also was für einen Router hast du? Fritzbox? Die bieten dir auch sowas an myFritz glaube ich heißt das (habe keine FB bzw. nutze was anderes). Auch andere Routeranbieter haben oft was. Ansonsten halt suchen. Irgendwann gab es mal bei Chip oder C't oder einen Vergleichstest DynDNS Anbieter.

Gruß, Joachim


Zitat von: MadMax-FHEM am 17 Januar 2018, 21:58:40
Wie das bei deinem Apple-Dingens geht weiß ich auch nicht aber wenn eine Anfrage von "außen" (Internet) über einen bestimmten Port (per deinem DynDNS-Namen) beim Router ankommt, dann muss die Anfrage eben bei der angelegten Fhem Webinstanz landen.

Also muss der Port weitergeleitet werden.

Anfrage von außen: https://deindyndnsname:PortnummerExtern -> IP-des-Fhem-PI:PortnummerIntern (also Port deiner FHEMWEB-Instanz)

Wie das geht musst du dem HB von dem Apple-Dingens entnehmen.
Wenn der das nicht kann: dann geht bzgl. Alexa und Google Home nur ha-bridge (sofern das noch mit Google Home geht, hab mal was gelesen, dass das nicht mehr gehen soll)

Langsam stellt sich die Frage, ob wir den Thread hier mit sowas weiter zumüllen sollten...
...oder du besser einen neuen beginnst und dort genau schilderst was bislang geht und was noch fehlt...

Gruß, Joachim

Chridd

zur frage:
ich kann folgendes einstellen
IPv4 Portumleitung
Beschreibung:
Öffentliche UDP-Port:
Öffentliche TCP-Port:
Private IP-Adresse:
Private: UDP-Ports:
Private TCP-Ports:

Keine Ahnung, ob ich alles eintragen muss und von wo ich die Inhalte bekomme.  :-\

MadMax-FHEM

Jetzt wäre noch interessant zu wissen was genau du gemacht hast, also so in der Art:

(neue/zusätzlichem [hättest du tun sollen/können ;)  ]) FHEMWEB-Instanz mit Port 8080 (oder was auch immer) (angelegt) und mit https "versehen"

allowed Device angelegt und mit FHEMWEB-Instanz verknüpft und entsprechende Authentication (User/PW) hinterlegt...

Getestet: geht (so hab ich das verstanden)

Portweitereitung: hier steckst du ja aktuell fest, oder?

Und dann so weiter, dann wird das schon laufen (sofern dein Router Portweiterleitung etc. kann).

Gruß, 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)


MadMax-FHEM

Zitat von: Chridd am 17 Januar 2018, 22:19:47
zur frage:
ich kann folgendes einstellen
IPv4 Portumleitung
Beschreibung:
Öffentliche UDP-Port:
Öffentliche TCP-Port:
Private IP-Adresse:
Private: UDP-Ports:
Private TCP-Ports:

Keine Ahnung, ob ich alles eintragen muss und von wo ich die Inhalte bekomme.  :-\

Das sollte passen:

Öfentlicher IP-Port: such dir einen schönen raus (einfacher, wenn es der selbe wie der der Web-Instanz von fhem ist, also beispielsweise 8083 oder was immer du bei einer evtl. inzwischen neu/separat angelegten FHEMWEB-Instanz angegeben hast)

Privater TCP-Port: eben der Port der vorgesehenen FHEMWEB-Instanz

Private IP-Adresse: IP-Adresse des Rechners wo die vorgesehene FHEMWEB-Instanz läuft

Gruß, 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)

MadMax-FHEM

#5
Zitat von: Chridd am 17 Januar 2018, 22:25:01
das habe ich bisher befolgt

https://raspberry.tips/raspberrypi-einsteiger/raspberry-pi-einsteiger-guide-dyndns-teil-5

Bei no-ip wie ich im Kopf habe!?

Und du gehst davon aus, es hat geklappt? ;)

Kannst du nach den Einstellungen die ich grad gegeben hab ja testen...

EDIT: Bzw. solltest du im Router ja deine aktuelle IP sehen können (ansonsten http://wanip.info/ ) und dann einen ping auf den von dir gewählten DynDns-Namen, da sollte dann ebenfalls die selbe IP kommen, wenn nicht passt was nicht (oder wurde noch nicht geupdatet)...

Gruß, 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)

Chridd

Zitat von: MadMax-FHEM am 17 Januar 2018, 22:22:10
Jetzt wäre noch interessant zu wissen was genau du gemacht hast, also so in der Art:

(neue/zusätzlichem [hättest du tun sollen/können ;)  ]) FHEMWEB-Instanz mit Port 8080 (oder was auch immer) (angelegt) und mit https "versehen"

-> neue Instanz habe ich nicht
-> https hab ich


allowed Device angelegt und mit FHEMWEB-Instanz verknüpft und entsprechende Authentication (User/PW) hinterlegt...

-> ja, ich muss jetzt immer User & PW eingeben, um rein zu kommen

Getestet: geht (so hab ich das verstanden)

-> Genau, testet

Portweitereitung: hier steckst du ja aktuell fest, oder?

-> Korrekt

Und dann so weiter, dann wird das schon laufen (sofern dein Router Portweiterleitung etc. kann).

Gruß, Joachim

Chridd

Zitat von: MadMax-FHEM am 17 Januar 2018, 22:25:21
Das sollte passen:

Öfentlicher IP-Port: such dir einen schönen raus (einfacher, wenn es der selbe wie der der Web-Instanz von fhem ist, also beispielsweise 8083 oder was immer du bei einer evtl. inzwischen neu/separat angelegten FHEMWEB-Instanz angegeben hast)

Privater TCP-Port: eben der Port der vorgesehenen FHEMWEB-Instanz

Private IP-Adresse: IP-Adresse des Rechners wo die vorgesehene FHEMWEB-Instanz läuft

Gruß, Joachim

Beschreibung: FHEM
Öffentliche UDP-Port: 8083
Öffentliche TCP-Port: ?
Private IP-Adresse: Die IP, die ich von noip habe??
Private UDP-Ports:
Private TCP-Ports:

Oder muss ich die IP vom Pi, auf dem FHEM läuft einbauen.
Sorry, dass ich so ein Anfänger bin und vielen, vielen Dank für Deine Hilfe!

MadMax-FHEM

#8
Sag mal lesen kannst du schon oder!? ;)

Hab ich doch geschrieben:

Öffentlicher TCP-Port: 8083 (oder was immer du willst, muss halt nur nachher zum Aufruf aus IFTTT passen)

Privater TCP-Port: 8083 (wenn das der Port der vorgesehenen FHEMWEB-Instanz ist)
Private IP: die IP deines fhem-Rechners

Noch genauer geht es nicht...

EDIT: Die no-ip Adresse bzw. eben den dort "ausgesuchten" Namen dann bei IFTTT verwenden.

EDIT2: dass no-ip funktioniert hast du getestet!? Siehe Post weiter oben...

Gruß, 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)

Chridd

Entschuldige bitte!!! Ich werde Deine Nachrichten noch öfter durchlesen.

bin mir nicht sicher, ob noip geklappt hat.
bei folgender config habe ich IP Address, raspberrytips, Passwort & raspberrytips.ddns.net ersetzt 

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf
protocol=noip use=web, web=checkip.dyndns.com, web-skip='IP Address'
server=dynupdate.no-ip.co
login=raspberrytips
password='Passwort'
raspberrytips.ddns.net


Chridd

#10
wenn ich das von der Website vorgeschlagene zum Testen mache:

"Um zu testen ob alles funktioniert müssen wir noch folgendes Kommando absetzen
ddclient -daemon=0 -debug -verbose -noquiet 2 /etc/ddclient.conf
Die Ausgabe zeigt uns die erkennung der eigenen Internet IP-Adresse durch eine externe Seite und die Aktualisierung des DynDNS Eintrages bei no-ip. Nach erfolgreichem Test müssen wir den Dienst noch neu starten im die Änderungen an der Konfiguration zu übernehmen."

kommt das:
WARNING:  file /etc/ddclient.conf: Cannot open file '/etc/ddclient.conf'. (Keine Berechtigung)
stat() on closed filehandle FD at /usr/sbin/ddclient line 1006.
Use of uninitialized value $mode in bitwise and (&) at /usr/sbin/ddclient line 1007.
readline() on closed filehandle FD at /usr/sbin/ddclient line 1019.
WARNING:  file /etc/ddclient.conf: Cannot open file '/etc/ddclient.conf'. (Keine Berechtigung)
stat() on closed filehandle FD at /usr/sbin/ddclient line 1006.
Use of uninitialized value $mode in bitwise and (&) at /usr/sbin/ddclient line 1007.
readline() on closed filehandle FD at /usr/sbin/ddclient line 1019.
=== opt ====
opt{cache}                           : <undefined>
opt{cmd}                             : <undefined>
opt{cmd-skip}                        : <undefined>
opt{daemon}                          : 0
opt{debug}                           : 1
opt{exec}                            : <undefined>
opt{facility}                        : <undefined>
opt{file}                            : <undefined>
opt{force}                           : <undefined>
opt{foreground}                      : <undefined>
opt{fw}                              : <undefined>
opt{fw-login}                        : <undefined>
opt{fw-password}                     : <undefined>
opt{fw-skip}                         : <undefined>
opt{geturl}                          : <undefined>
opt{help}                            : <undefined>
opt{host}                            : <undefined>
opt{if}                              : <undefined>
opt{if-skip}                         : <undefined>
opt{ip}                              : <undefined>
opt{login}                           : <undefined>
opt{mail}                            : <undefined>
opt{mail-failure}                    : <undefined>
opt{max-interval}                    : 2592000
opt{min-error-interval}              : 300
opt{min-interval}                    : 30
opt{options}                         : <undefined>
opt{password}                        : <undefined>
opt{pid}                             : <undefined>
opt{postscript}                      : <undefined>
opt{priority}                        : <undefined>
opt{protocol}                        : <undefined>
opt{proxy}                           : <undefined>
opt{query}                           : <undefined>
opt{quiet}                           : 0
opt{retry}                           : <undefined>
opt{server}                          : <undefined>
opt{ssl}                             : <undefined>
opt{syslog}                          : <undefined>
opt{test}                            : <undefined>
opt{timeout}                         : <undefined>
opt{use}                             : <undefined>
opt{verbose}                         : 1
opt{web}                             : <undefined>
opt{web-skip}                        : <undefined>
=== globals ====
globals{daemon}                      : 60
globals{debug}                       : 1
globals{quiet}                       : 0
globals{verbose}                     : 1
=== config ====
=== cache ====

MadMax-FHEM

Aber das lässt sich doch ganz einfach testen, ob es funktioniert:

WAN-IP im Router auslesen oder eben mittels http://wanip.info/ "ermitteln".

Dann ping auf "deinen" no-ip DynDns-Namen.

Sollte beide male die gleiche IP sein.

Wenn nicht, dann wohl dort noch mal "nachbohren", da kann ich wenig helfen...

Gruß, 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)

MadMax-FHEM

#12
Bitte solche Ausgaben in Code-Tags: das '#' im "Menü"!!

EDIT3: das lässt sich auch nachträglich noch anpassen, also das mit den Code-Tags... ;)

Mach doch einfach mal den Test von mir oder nutze beim Aufruf vom no-ip Test sudo (als User pi, der du vermutlich bist hast du in /etc keine Rechte)...

EDIT: also sudo ddclient -daemon=0 -debug -verbose -noquiet 2 /etc/ddclient.conf

EDIT2: für einen reinen Test der Portweiterleitung kannst du auch einfach die über http://wanip.info/  ermittelte IP nutzen. Also vom Handy aus (PROVIDER-NETZ NICHT WLAN): https://ermittelteip-adresse:8083/fhem aufrufen...

Gruß, 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)

Chridd

ok ich hab jetzt in der config die IP Adresse wieder durch das Wort 'IP Address' getauscht und sudo genutzt.
Habe die selbe IP wie meine als Ergebnis bekommen.
Das ist doch gut, oder?

MadMax-FHEM

Ich sag mal leichtfertig: ja ;)

Hast du den Aufruf "von außen" schon getestet?

Wenn der klappt, dann noch csrfToken setzen und dann sind wir auch schon bei IFTTT :)
Und daher hatte ich eine NEUE, EIGENS für DIESEN Zweck angelegte FHEMWEB-Instanz empfohlen!

Gruß, 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)