Hallo zusammen,
hab leider nix per SUFU gefunden das meine Problem löst.
Ich möchte in einem DOIF im Ausführungsteil ein set auf ein variables Device absetzten da ich aus einem Reading lese.
(set {ReadingsVal("Alexa_Voice_detect", "gesprochen_zu","0")} speak "Test")
geht nicht...
(set [Alexa_Voice_detect:gesprochen_zu] speak "Test")
geht auch nicht.
Ist das überhaupt machbar, oder muss ich da Umwege gehen ?
Zeig mal dein ganzes DOIF.
Bitte sehr:
([[Weckzeit]|8] and ([?Status] eq "Alltag" or [?Status] eq "DodoFrei" or [?Status] eq "DodoOnTour") )
(set Kaffeemaschine on-for-timer 1200)
DOELSEIF
([Alexa_Trigger_Kaffee] eq "on" and [?Kaffeemaschine:ENERGY_Today] == 0)
(set Kaffeemaschine on-for-timer 1200, set [Alexa_Voice_detect:gesprochen_zu] speak "mach ich, ist in ca 15 Minuten fertig")
DOELSEIF
([Alexa_Trigger_Kaffee] eq "on" and [?Kaffeemaschine:ENERGY_Today] =! 0)
(set [Alexa_Voice_detect:gesprochen_zu] speak "zu spät, der erste Kaffee wurde heute schon gekocht")
In [Alexa_Voice_detect:gesprochen_zu] steht immer der Device Name des letzten Echos zu dem gesprochen wurde.
Siehe hier: https://forum.fhem.de/index.php?topic=63279.0 (https://forum.fhem.de/index.php?topic=63279.0)
Für dich heißt das:
{([Alexa_Voice_detect:gesprochen_zu])}
oder
{(ReadingsVal("Alexa_Voice_detect", "gesprochen_zu",""))}
Btw, wenn du dir ein paar Minuten zum googeln nimmst (z.B. mal "set mit reading site:forum.fhem.de" bei Google eingeben) dann findest du das oben verlinkte Thema sofort und musst hier nicht einen Tag lang auf Antworten warten :D
LG
Hi,
was im DOIF speziell gehen könnte weiß ich nicht, der Vorschlag von passibe dürfte allgemein nicht funktionieren. In seinem Link geht es um set magic
set magic gilt für alles nach dem Device, nicht jedoch für das Device. dort gilt devspec :)
https://fhem.de/commandref_DE.html#set
So wird es überall mit einem Perlbefehl funktionieren (Code ist so für die FHEM Kommandozeile oder Raw Definition, in der DEF genügt ein Semikolon):
{my $dev=ReadingsVal("Alexa_Voice_detect", "gesprochen_zu","");;fhem("set $dev speak 'zu spät, der erste Kaffee wurde heute schon gekocht'")}
Gruß Otto
Ah, alles klar. Vielen Dank für die Korrektur, wieder was gelernt!
Zitat von: passibe am 30 August 2021, 10:48:21
Btw, wenn du dir ein paar Minuten zum googeln nimmst (z.B. mal "set mit reading site:forum.fhem.de" bei Google eingeben) dann findest du das oben verlinkte Thema sofort und musst hier nicht einen Tag lang auf Antworten warten :D
LG
Du kannst mir glauben das ich nicht nur ein paar Minuten bei Googel versucht habe eine Antwort zu finden, bevor ich hier das Forum belästige. Aber manchmal fehlt hat das richtige Suchwort. Glückwunsch das es Dir sofort eingefallen ist, auch wenn es nicht das richtige Ergebniss hervor gebracht hat. ;)
Sorry, aber das mußte jetzt mal sein...
Zitat von: Skusi am 30 August 2021, 21:16:41
Du kannst mir glauben das ich nicht nur ein paar Minuten bei Googel versucht habe eine Antwort zu finden, bevor ich hier das Forum belästige. Aber manchmal fehlt hat das richtige Suchwort. Glückwunsch das es Dir sofort eingefallen ist, auch wenn es nicht das richtige Ergebniss hervor gebracht hat. ;)
Sorry, aber das mußte jetzt mal sein...
Wenn es nicht funktioniert hat, dann hat es andere Gründe.
defmod di_speak DOIF (1)(set [test:state] speak "Test")
funktioniert bei mir durch Auslösen von cmd_1 ohne Probleme. Test müsste dabei nicht in Anführungszeichen sein, es funktioniert aber trotzdem.
Oh man 8) wieder mal peinlich.
Der Fehler lag nicht an der Schreibweise im Ausführungsteil, sondern am Ungleich Operanden im Bedingungsteil:
([Alexa_Trigger_Kaffee] eq "on" and [?Kaffeemaschine:ENERGY_Today] =! 0)
Es schreibt sich halt != und nicht umgekehrt...
Ich werde alt...
Danke für den Schlag auf den Hinterkopf.