Google Home ab 8 August in Deutschland

Begonnen von CoolTux, 18 Juli 2017, 12:24:16

Vorheriges Thema - Nächstes Thema

Flipper92

#225
Zitat von: Ma_Bo am 05 Januar 2018, 01:07:29
Also bei mir steht das nicht so:

attr mqtt_device subscribeReading_ifttt2fhem FhemHome/feeds/IFTTT2FhEM
sondern wenn dann so:
attr mqtt_device subscribeReading_ifttt2fhem FhemHome/feeds/ifttt2fhem

Hab es angepasst:
defmod mqtt_device MQTT_DEVICE
attr mqtt_device IODev mqtt
attr mqtt_device autoSubscribeReadings FhemHome/feeds/+
attr mqtt_device qos exactly-once
attr mqtt_device retain 0
attr mqtt_device stateFormat ifttt2fhem
attr mqtt_device subscribeReading_ifttt2fhem FhemHome/feeds/ifttt2fhem

setstate mqtt_device ifttt2fhem
setstate mqtt_device 2018-01-05 01:56:56 transmission-state subscribe sent


Funktioniert leider noch nicht.

Hab es auch in Node-red angepasst (siehe Anhang).


Anpassung 1:
Es scheint irgendein anderes Problem zu sein. Hab gerade versucht FHEM neu zu starten und hängt sich der start auf und im Log kommt
Undefined subroutine &MQTT::DEVICE::client_attr called at ./FHEM/10_MQTT_DEVICE.pm line 211, <$fh> line 2285.
2018.01.05 02:19:33 1: BlockingInformParent (BlockingStart): Can't connect to localhost:40387: IO::Socket::INET: connect: Verbindungsaufbau abgelehnt


Anpassung 2:
Ich hab mosquitto neu installiert. Nun funktioniert auch die Verbindung mit FHEM. (Ich bekomme die Readings angezeigt.)

Nach einem FHEM Neustart funktioniert auch alles.
Nach dem Pi Neustart funktioniert es auch noch.

Jetzt muss ich nur noch nachlesen, wie ich am besten auf diese Readings reagiere.

Flipper92

Zitat von: dstegmaier am 01 Dezember 2017, 23:02:06

sub SprachbefehleTrennen {
my $Geraet = $_[0];
my $Command = $_[1];
#Log 1, "Gesammtes Command: $Command";

my @commands=split(/und/,$Command);

foreach (@commands){
#Log 1, "Getrennte Commands: $_";
{Sprachbefehle ("$Geraet","$_")};
}

}



sub Sprachbefehle {

my $Geraet = $_[0];
my $Command = $_[1];
my $device= "";
my $action= "";
my $room= "";
# aus den uebergeben Wert nur das Sprachkommando extrahieren
$Command =~ s/voiceRecognitionLastResult: //;

my $number = $Command;
$number =~ s/[^0-9]//g;
#Log 1, "Zahl erkannt: $number";


#Nach Stichwoertern suchen
if ($Command =~ m/Licht|Lampe/i) { $device="licht" };
if ($Command =~ m/indirekte|LED|Chillout|farbige|bunte|Vitrine|Theke/i) { $device="led" };
if ($Command =~ m/Radio|Musik|Lautsprecher|Boxen|Audio/i) { $device="musik" };
if ($Command =~ m/Spots|Badspiegel|Spiegel/i) { $device="spots" };
if ($Command =~ m/Roboter|Vacubot|Staubsauger|Saugroboter|Reinigung|saugen|putzen/i) { $device="robot" };
if ($Command =~ m/Kamera/i) { $device="cam" };
if ($Command =~ m/Lesen|Leselampe/i) { $device="lese" };
if ($Command =~ m/Weihnachtsbeleuchtung|Weihnachtsbaum|christmas tree|christmas lights/i) { $device="christmas" };
if ($Command =~ m/Fernseher|TV|Samsung|Glotze/i) { $device="tv" };
if ($Command =~ m/Alle|Alles/i) { $device="alles" };

if ($Command =~ m/Lila|lila/i) { $device="lila" };
if ($Command =~ m/Rot|rot/i) { $device="rot" };
if ($Command =~ m/Hellrot|hellrot/i) { $device="hellrot" };
if ($Command =~ m/Blau|blau/i) { $device="blau" };
if ($Command =~ m/Hellblau|hellblau/i) { $device="hellblau" };
if ($Command =~ m/gr*n|Gr*n|Green|green/i) { $device="green" };
if ($Command =~ m/Orange|orange/i) { $device="orange" };
if ($Command =~ m/Gelb|gelb/i) { $device="gelb" };
if ($Command =~ m/white/i) { $device="white" };

if ($Command =~ m/on|an|1|ein|hell|einschalten|scharf|starten|saugen|putzen|reinigen/i) { $action="an" };
if ($Command =~ m/starten|saugen|putzen|reinigen/i) { $action="an" };
if ($Command =~ m/off|aus|0|dunkel|ausschalten|unscharf|pause/i) { $action="aus" };
if ($Command =~ m/aufladen|laden|Station|stoppen|stop|docken|Dock/i) { $action="dock" };
if ($Command =~ m/leiser/i) { $action="voldown" };
if ($Command =~ m/lauter/i) { $action="volup" };
if ($Command =~ m/pause|anhalten|pausieren/i) { $action="pause" };
if ($Command =~ m/play|abspielen|fortsetzen/i) { $action="play" };
if ($Command =~ m/Info|Information/i) { $action="info" };
if ($Command =~ m/exit/i) { $action="exit" };
if ($Command =~ m/HDMI/i) { $action="hdmi" };
if ($Command =~ m/nächster|hoch/i) { $action="chup" };
if ($Command =~ m/letzter|zurück|runter/i) { $action="chdown" };
if ($Command =~ m/stumm|lautlos|mute/i) { $action="mute" };
if ($Command =~ m/Kanal|Sender/i) { $action="channel" };
if ($Command =~ m/Farbe/i) { $action="color" };
if ($Command =~ m/heller/i) { $action="dimup" };
if ($Command =~ m/dunkler/i) { $action="dimdown" };
if ($Command =~ m/Helligkeit|helligkeit/i) { $action="dimNumber" };


if ($Command =~ m/K*che/i) { $room="Küche" };
if ($Command =~ m/Lautsprecher/i) { $room="LS" };

if ($Command =~ m/(Wohnung|Wohnzimmer|Esszimmer|Flur|Gang|Bad|Büro|Schlafzimmer)/i) { $room=$1 };

# Aus den Stickwoertern das Kommando bauen
my $newCommand="$device $room $action";

# Hier wird aus dem Kommando das FHEM Kommando zugewiesen
my %Sprachkommando = (
"alles Wohnzimmer an" => "set Licht_Alle_WZ on",
"alles Wohnzimmer aus" => "set Alle_WZ_OFF off",
"licht Wohnzimmer an" => "set Lampe_Venti_WZ on",
"licht Wohnzimmer aus" => "set Lampe_Venti_WZ off",
" Wohnzimmer an" => "set Lampe_Venti_WZ on",
" Wohnzimmer aus" => "set Lampe_Venti_WZ off",
"led Wohnzimmer an" => "set Wohnwand_WZ on",
"led Wohnzimmer aus" => "set Wohnwand_WZ off",
"spots Wohnzimmer an" => "set Spots_WZ on",
"spots Wohnzimmer aus" => "set Spots_WZ off",
"lila Wohnzimmer an" => "set Lila_Lampe_WZ on",
"lila Wohnzimmer aus" => "set Lila_Lampe_WZ off",
"lese Wohnzimmer an" => "set LeseLampe_IT1 on",
"lese Wohnzimmer aus" => "set LeseLampe_IT1 off",
"musik Wohnzimmer an" => "set Audio_Anlage_WZ on",
"musik Wohnzimmer aus" => "set Audio_Anlage_WZ off",
"led Esszimmer an" => "set Theke_Beleuchtung_Kueche on",
"led Esszimmer aus" => "set Theke_Beleuchtung_Kueche off",
"musik Esszimmer an" => "set LS_Kueche on",
"musik Esszimmer aus" => "set LS_Kueche off",
"led Küche an" => "set Theke_Beleuchtung_Kueche on",
"led Küche aus" => "set Theke_Beleuchtung_Kueche off",
"musik Küche an" => "set LS_Kueche on",
"musik Küche aus" => "set LS_Kueche off",
"alles Esszimmer an" => "set Alle_Kueche on",
"alles Esszimmer aus" => "set Alle_KC_OFF off",
"alles Küche an" => "set Alle_Kueche on",
"alles Küche aus" => "set Alle_KC_OFF off",
"licht Spiegel an" => "set Spiegel_Beleuchtung_Bad on",
"licht Spiegel aus" => "set Spiegel_Beleuchtung_Bad off",
"licht Badspiegel an" => "set Spiegel_Beleuchtung_Bad on",
"licht Badspiegel aus" => "set Spiegel_Beleuchtung_Bad off",
"licht Bad an" => "set Spiegel_Beleuchtung_Bad on",
"licht Bad aus" => "set Spiegel_Beleuchtung_Bad off",
"spots Bad an" => "set Spiegel_Beleuchtung_Bad on",
"spots Bad aus" => "set Spiegel_Beleuchtung_Bad off",
"led Bad an" => "set Yeelight_Bad on",
"led Bad aus" => "set Yeelight_Bad off",
"led Bad dimup" => "set Yeelight_Bad dimup",
"led Bad dimdown" => "set Yeelight_Bad dimdown",
" Bad dimup" => "set Yeelight_Bad dimup",
" Bad dimdown" => "set Yeelight_Bad dimdown",
"led Bad dimNumber" => "set Yeelight_Bad bright $number",
" Bad dimNumber" => "set Yeelight_Bad bright $number",
"lila Bad color" => "set Yeelight_Bad rgb FF26C5",
"rot Bad color" => "set Yeelight_Bad rgb FF0000",
"hellrot Bad color" => "set Yeelight_Bad rgb FF3617",
"blau Bad color" => "set Yeelight_Bad rgb 0000FF",
"hellblau Bad color" => "set Yeelight_Bad rgb 19B2FF",
"green Bad color" => "set Yeelight_Bad rgb 00FF00",
"orange Bad color" => "set Yeelight_Bad rgb FF6600",
"gelb Bad color" => "set Yeelight_Bad rgb FFE019",
"white Bad color" => "set Yeelight_Bad rgb FFFFFF",
"musik Bad an" => "set LS_Bad on",
"musik Bad aus" => "set LS_Bad off",
"alles Bad an" => "set Alle_Bad  on",
"alles Bad aus" => "set Alle_BAD_OFF off",
"led Gang an" => "set Dachboden_2 on",
"led Gang aus" => "set Dachboden_2 off",
"led Flur an" => "set Dachboden_2 on",
"led Flur aus" => "set Dachboden_2 off",
"cam Flur an" => "set Dachboden_1 on",
"cam Flur aus" => "set Dachboden_1 off",
"alles Wohnung aus" => "set Hauptschalter_OFF off",
"alles Wohnung an" => "set Hauptschalter on",
"robot Wohnung an" => "set VacuBot start",
"robot Wohnung aus" => "set VacuBot pause",
"robot Wohnung dock" => "set VacuBot charge",
"robot Gang an" => "set VacuBot start",
"robot Gang aus" => "set VacuBot pause",
"robot Gang dock" => "set VacuBot charge",
"robot  an" => "set VacuBot start",
"robot  aus" => "set VacuBot pause",
"robot  dock" => "set VacuBot charge",
"robot Küche an" => "set VacuBot_Kitchen clean",
" Küche an" => "set VacuBot_Kitchen clean",
"robot Küche " => "set VacuBot_Kitchen clean",
"tv Wohnzimmer aus" => "set Samsung_TV POWEROFF",
"tv  aus" => "set Samsung_TV POWEROFF",
"tv Wohnzimmer volup" => "set Samsung_TV VOLUP",
"tv  volup" => "set Samsung_TV VOLUP",
"tv Wohnzimmer voldown" => "set Samsung_TV VOLDOWN",
"tv  voldown" => "set Samsung_TV VOLDOWN",
"tv Wohnzimmer chup" => "set Samsung_TV CHUP",
"tv  chup" => "set Samsung_TV CHUP",
"tv Wohnzimmer chdown" => "set Samsung_TV CHDOWN",
"tv  chdown" => "set Samsung_TV CHDOWN",
"tv Wohnzimmer mute" => "set Samsung_TV MUTE",
"tv  mute" => "set Samsung_TV MUTE",
"tv Wohnzimmer pause" => "set Samsung_TV PAUSE",
"tv  pause" => "set Samsung_TV PAUSE",
"tv Wohnzimmer play" => "set Samsung_TV PLAY",
"tv  play" => "set Samsung_TV PLAY",
"tv Wohnzimmer info" => "set Samsung_TV INFO",
"tv  info" => "set Samsung_TV INFO",
"tv Wohnzimmer exit" => "set Samsung_TV EXIT",
"tv  exit" => "set Samsung_TV EXIT",
"tv Wohnzimmer hdmi" => "set Samsung_TV HDMI",
"tv  hdmi" => "set Samsung_TV HDMI",
"christmas  an" => "set Christmas_Power on",
"christmas Wohnung an" => "set Christmas_Power on",
"christmas Wohnzimmer an" => "set Christmas_Power on",
"christmas Küche an" => "set Christmas_Power on",
"christmas Esszimmer an" => "set Christmas_Power on",
"christmas  aus" => "set Christmas_Power off",
"christmas Wohnung aus" => "set Christmas_Power off",
"christmas Wohnzimmer aus" => "set Christmas_Power off",
"christmas Küche aus" => "set Christmas_Power off",
"christmas Esszimmer aus" => "set Christmas_Power off",
"  channel" => "set Samsung_Channel $number",
" Wohnzimmer channel" => "set Samsung_Channel $number",
"tv Wohnzimmer channel" => "set Samsung_Channel $number",
"tv  channel" => "set Samsung_Channel $number",
"alles LS an" => "set Alle_LS_OFF_ON on",
"alles LS aus" => "set Alle_LS_OFF_ON off",
"alles  aus" => "set Hauptschalter_OFF off",
"alles  an" => "set Hauptschalter on",
);

Log 1, "Sprachbefehl incomming: $Command";
Log 1, "Sprachbefehl command: $newCommand";

# Hier wird dann das Kommando ausgefuehrt.
fhem("$Sprachkommando{$newCommand}");


}


Könnte mir jemand kurz erklären wie ich die Subs einpflege?
Ich hab die ersten Tests mit einem einfachen DOIF gemacht.

Gruß

Phill

#227
Schau dir doch Mal Talk2Fhem an, das ist im Endeffekt von den subs als Inspiration erstellt worden.
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

Chridd

Vielen Dank für die Anleitung aber an Punkt 6 scheitert es bei mir. Google bringt mich nicht ans Ziel :(

[/quote]



6. Mosquitto muss jetzt so eingerichtet werden, dass die Feeds mit Adafruit "synchronisiert" werden, auch dazu bitte Google benutzen, bei Gelegenheit, schau ich ma ob ich die Links noch finde, die ich genutzt habe. Darauf achten dass man den Port 8883 von Adafruit nutzt, damit ist die Verbindung "verschlüsselt". (Das ganze kann man direkt über die config von Mosquitto machen oder eben wie ich über NODERED, auch hier wieder bitte Google nutzen.)




7. MQQT in FHEM: ein Device anlegen, welches sich dann mit dem Mosquitto Broker auf unserem Raspi verbindet siehe BILD 5 (IP Adresse muss angepasst werden)(bitte FHEM MQTT commandref lesen)




8. MQQT_DEVICE in FHEM siehe BILD 6 bitte FHEM MQTT_DEVICE commandref lesen




9. Wenn jetzt alles richtig konfiguriert ist, sollte man alles was nach dem "OK Google sage Haussteuerung" kommt als Text in einem Reading im MQTT_DEVICE erhalten. Bei mir lasse ich in einer sub auswerten, welches Google Home Gerät den Text liefert, daher auch die vielen Readings in meinem MQTT_DEVICE (BILD 6)


Dies ist nur eine kurze Beschreibung und kein vollwertiges HowTo !!!

Da ich den Kontakt von Adafruit zu meinem lokalen MQTT Broker (Mosquitto) mit NODERED mache und nicht direkt über die Config von Mosquitto, kann ich auch einen Text an meine Google Home schicken, der dann gesprochen wird. BILD 7 + BILD 8
Das ganze funktioniert über eine sogennante Node, Infos dazu hier:

https://www.npmjs.com/package/node-red-contrib-google-home-notify

Das ganze hat einen Delay von ca. 2-3 Sekunden.

***************EDIT 2************** 08.12.17
Wenn man, wie ich, mehrere Google Home´s hat und wissen möchte, welcher Google Home angesprochen wurde, muss man sich für jeden Google Home einen eigenen Google Account anlegen und einen eigenen IFTTT Account, bei Adafruit braucht man nur einen Account und einen Feed.

Man sieht, dass ich bei der IFTTT Konfiguration in BILD 2 unten bei Adafruit angegeben habe, GHALL, damit schaue ich von welchem Google Home es kommt, das Bild ist noch von meinem TESTACCOUNT bei IFTTT, deshalb steht dort GHALL

GHALL = ALLE Testaccount
GH_WZ = Wohnzimmer
GH_BU = Büro
GH_SZ = Schlafzimmer
....

Diese Kürzel fange ich in einer sub in fhem ab und werte dann aus, von welchem Gerät es kommt und kann dann damit auch bestimmen, an welches Gerät ich den Text für die Sprachausgabe schicke (funktioniert über MQTT->NODERED->Google Home)


***************EDIT 3************** 08.12.17

Hier steht auch ein wenig erklärt, wie man Adafruit und Mosquitto verbinden kann (nicht von mir geschrieben und auch nicht von mir getestet)

https://forum.fhem.de/index.php/topic,75620.0.html

Grüße Marcel
[/quote]

Ma_Bo

Also das hab ich per Google zum Beispiel gefunden (den Inhalt habe ich nicht getestet, da ich das ganze über NodeRed mache)

https://gist.github.com/chaeplin/a18994e3c688d1936825cc1cd0bfea06

Stichworte bei Google:

mqtt mosquitto io.adafruit




Tapatalk iPhone, daher kurz gehalten.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Chridd

Zitat von: Ma_Bo am 16 Januar 2018, 21:16:49
Also das hab ich per Google zum Beispiel gefunden (den Inhalt habe ich nicht getestet, da ich das ganze über NodeRed mache)

https://gist.github.com/chaeplin/a18994e3c688d1936825cc1cd0bfea06

Stichworte bei Google:

mqtt mosquitto io.adafruit


Tapatalk iPhone, daher kurz gehalten.

Vielen Dank für die schnelle Antwort.
Sollte ich dann auch besser NodeRed nutzen? Ich bin wirklich ziemlicher Anfänger und muss alles Schritt für Schritt nachlesen, damit ich es hinkriege...

Chridd

Der Link, den Du gepostet hast, überfordert mich leider schon... Ich habe keine Ahnung was zu tun ist. Muss ich das im Terminal machen?

MadMax-FHEM

#232
Zitat von: Chridd am 06 Dezember 2017, 07:50:59
Hallo zusammen,
ich würde auch gerne FHEM über mein Google Home Mini steuern können. Allerdings bin ich ein ziemlicher Amateur.
Dank dieses Forums habe ich es hinbekommen FHEM zum laufen zu bringen und mit Siri zu bedienen, d.h. ich bin lernfähig, aber weit weg von den krassen Skills, die hier einige haben.
Deswegen wäre ich super dankbar, wenn jemand von den Pros eine Anleitung zu dem Thema verfassen könnte.
Vielen, vielen Dank

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
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)

scooty

Da stehe ich auch im Moment, schreibe die Sprachbefehle von Google Home über IFTT in einen dummy, wie kann man das
Zitat von: MadMax-FHEM am 17 Januar 2018, 00:33:59
... "mitgeben" von welchem Google Home / Mini das Kommando kam...
bei dieser Art der Anbindung realisieren?

Hintergrund:
Habe drei Etagen zu versorgen, derzeit gebe ich in jedem Sprachbefehl das Stockwerk mit an.
Würde lieber (über IFTT?) die Info über das jeweils angesprochene Google Home Device an FHEM mit übergeben.

Vielen Dank für jegliche Info,
Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol

Chridd

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

Vielen Dank! Werde mich später mal an dieser Variante versuchen.

MadMax-FHEM

#235
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
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 schon mal Passwortschutz und https. Somit funktioniert Siri nicht mehr.  :-\
Jetzt muss ich also Google Home bis zum Ende durchziehen.
Leider hänge ich schon hier:
"Dort dann auch nur bestimmte cmds "freigeben" (eigentlich reicht ein setreading oder set)
https aktivieren: commandref FHEMWEB"

Was meinst Du mit cmds?

"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)"

Hier habe ich gegoogelt, aber bin noch nicht auf eine einfache Erklärung gestoßen.

Vielen Dank

MadMax-FHEM

#237
Du kannst auch mehrere FHEMWEB-Instanzen anlegen!

GENAU LESEN!!

ZitatAlso 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)

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
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

also den DynDNS Part habe ich, glaube ich, hinbekommen.
Habe etwas auf dem Pi gemacht und bei noip etwas angelegt.
Genau die Port/Router Frage ist mein Problem. Ich habe eine Apple TimeCapsule und weiß nicht, was zu tun ist  :-\

MadMax-FHEM

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
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)