FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Skusi am 29 August 2021, 10:37:43

Titel: set DEVICE aus reading lesen
Beitrag von: Skusi am 29 August 2021, 10:37:43
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 ?
Titel: Antw:set DEVICE aus reading lesen
Beitrag von: Christoph Morrison am 29 August 2021, 11:24:19
Zeig mal dein ganzes DOIF.
Titel: Antw:set DEVICE aus reading lesen
Beitrag von: Skusi am 29 August 2021, 12:04:03
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.
Titel: Antw:set DEVICE aus reading lesen
Beitrag von: passibe am 30 August 2021, 10:48:21
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
Titel: Antw:set DEVICE aus reading lesen
Beitrag von: Otto123 am 30 August 2021, 10:58:28
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
Titel: Antw:set DEVICE aus reading lesen
Beitrag von: passibe am 30 August 2021, 13:32:10
Ah, alles klar. Vielen Dank für die Korrektur, wieder was gelernt!
Titel: Antw:set DEVICE aus reading lesen
Beitrag von: Skusi am 30 August 2021, 21:16:41
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...
Titel: Antw:set DEVICE aus reading lesen
Beitrag von: Damian am 30 August 2021, 22:31:55
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.
Titel: Antw:set DEVICE aus reading lesen
Beitrag von: Skusi am 01 September 2021, 19:22:01
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.