FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: cbl am 29 August 2022, 16:58:34

Titel: [gelöst] Template - Befehl "excecuted" aber nichts passiert
Beitrag von: cbl am 29 August 2022, 16:58:34
Hallo,

die DOIF-Templates sind eine feine Sache und ich habe gerade mein zweites umfangreiches DOIF "templatifiziert". Im ersten Template verschicke ich mit Signalbot-Nachrichten zu bestimmten Ereignissen meiner Zigbee-Geräte. Das funktioniert super.

Mit dem zweiten Template möchte ich mein großes DOIF zur Benachrichtigung für geöffnete Fenster beim Verlassen des Hauses ablösen. Das funktioniert nur leider noch nicht so recht und ich finde das Problem nicht.

DEF TPL_fenster ({if ([bewohner] eq "abwesend" and [?structure.fenster.keller:state] eq "$3" and [?structure.fenster.eg:state] eq "$4" and [?structure.fenster.og:state] eq "$5" and [?structure.fenster.dg:state] eq "$6") {fhem("msg audio \@sonos.arbeitszimmer 20 |$1|$2");; }})
TPL_fenster (gong.mp3,Alle Fenster sind geschlossen,geschlossen,geschlossen,geschlossen,geschlossen)
TPL_fenster (gong.mp3,Es ist noch mindestens ein Fenster im Keller geoeffnet,offen,geschlossen,geschlossen,geschlossen)


Beim Zusammenbau hier habe ich aber einen Fehler versteckt. DOIF sagt mir beim Ausführen der beiden Blöcke "executed". Eine Ansage kommt dennoch nicht. Wenn ich nur den MSG-Befehl alleine ausführe, kommt jedoch eine Ansage.

Was übersehe ich hier?

Gruß
Christian
Titel: Antw:Template - Befehl "excecuted" aber nichts passiert
Beitrag von: Damian am 29 August 2022, 17:04:04
Execute bedeutet nur, dass deine if-Abfrage aufgeführt wurde, ob sie wahr war steht auf einem anderen Blatt.

Mit list kannst du überprüfen, ob die beiden generierten Blöcke so sind, wie du es wolltest.
Titel: Antw:Template - Befehl "excecuted" aber nichts passiert
Beitrag von: cbl am 29 August 2022, 17:26:00
Hallo,

das List sieht so aus wie erwartet:

     0          if (::InternalDoIf($hash,'bewohner','STATE') eq "abwesend" and ::ReadingValDoIf($hash,'structure.fenster.keller','state') eq "geschlossen" and ::ReadingValDoIf($hash,'structure.fenster.eg','state') eq "geschlossen" and ::ReadingValDoIf($hash,'structure.fenster.og','state') eq "geschlossen" and ::ReadingValDoIf($hash,'structure.fenster.dg','state') eq "geschlossen") {fhem("msg audio \@sonos.arbeitszimmer 20 |gong.mp3|Alle Fenster sind geschlossen");; }
     1          if (::InternalDoIf($hash,'bewohner','STATE') eq "abwesend" and ::ReadingValDoIf($hash,'structure.fenster.keller','state') eq "offen" and ::ReadingValDoIf($hash,'structure.fenster.eg','state') eq "geschlossen" and ::ReadingValDoIf($hash,'structure.fenster.og','state') eq "geschlossen" and ::ReadingValDoIf($hash,'structure.fenster.dg','state') eq "geschlossen") {fhem("msg audio \@sonos.arbeitszimmer 20 |gong.mp3|Es ist noch mindestens ein Fenster im Keller geoeffnet");; }


Wenn ich
{fhem("msg audio \@sonos.arbeitszimmer 20 |gong.mp3|Es ist noch mindestens ein Fenster im Keller geoeffnet");; }

in die Befehlszeile kopiere und ausführe, ertönt die gewünschte Ansage. Wenn ich block_01 im DOIF ausführe, passiert nichts (außer "executed" in den Readings).
Titel: Antw:Template - Befehl "excecuted" aber nichts passiert
Beitrag von: Damian am 29 August 2022, 21:15:53
Zitat von: cbl am 29 August 2022, 17:26:00
Wenn ich
{fhem("msg audio \@sonos.arbeitszimmer 20 |gong.mp3|Es ist noch mindestens ein Fenster im Keller geoeffnet");; }

in die Befehlszeile kopiere und ausführe, ertönt die gewünschte Ansage. Wenn ich block_01 im DOIF ausführe, passiert nichts (außer "executed" in den Readings).

Dann definiere dein Tamplate ohne if nur mit {fhem... und führe es per set block aus. Wenn das funktioniert, dann weißt du, dass deine Bedingung des if-Befehls nicht greift.
Titel: Antw:Template - Befehl "excecuted" aber nichts passiert
Beitrag von: cbl am 30 August 2022, 07:49:39
Danke für die Hinweise. Es funktioniert nun. Ursache unklar. Vielleicht war es ein temporäres SONOS-Problem. Mit DOIF hat es wohl nichts zu tun.