Autor Thema: [gelöst] Template - Befehl "excecuted" aber nichts passiert  (Gelesen 410 mal)

Offline cbl

  • Full Member
  • ***
  • Beiträge: 136
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
« Letzte Änderung: 30 August 2022, 07:49:54 von cbl »

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 9989
Antw:Template - Befehl "excecuted" aber nichts passiert
« Antwort #1 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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline cbl

  • Full Member
  • ***
  • Beiträge: 136
Antw:Template - Befehl "excecuted" aber nichts passiert
« Antwort #2 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).
« Letzte Änderung: 29 August 2022, 19:18:03 von cbl »

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 9989
Antw:Template - Befehl "excecuted" aber nichts passiert
« Antwort #3 am: 29 August 2022, 21:15:53 »
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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline cbl

  • Full Member
  • ***
  • Beiträge: 136
Antw:Template - Befehl "excecuted" aber nichts passiert
« Antwort #4 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.

 

decade-submarginal