[Gelöst] DOIF mit Trigger-Abfrage und Status-Abfrage (per notify)

Begonnen von isy, 11 Juli 2023, 15:33:57

Vorheriges Thema - Nächstes Thema

isy

Moin zusammen,
sitze schon eine Weile und probiere diverse Varianten aus, die alle nicht das tun, was ich benötige.

Aufgabe:
Überwachung Frischwasser-Einspeisung der Zisterne
- Wasseruhrimpuls über HM-MOD-EM-8, HM_6674CF_Btn_01
- Schalten Magnetventil über HM-ES-PMSW1-PL, HM_2DD7B8_Sw
- Wenn Wasseruhr triggert UND das Magnetventil geschlossen ist, es also hängt, dann soll der Alarm erfolgen
- Test: Magnetverntil von Hand einschalten: HM_6674CF_Btn_01 triggert und HM_2DD7B8_Sw bleibt auf off, kein Trigger
--> Das funktioniert nicht.

Hier das DOIF dazu:
defmod HM_6674CF_Btn_01_DOIF_2 DOIF ([HM_6674CF_Btn_01:"^closed$"] and [HM_2DD7B8_Sw] eq "off") ({DebianMail('alarm@xxx.de','ACHTUNG Zisterne Frischwassereinspeisung läuft','Magnetventil scheint zu klemmen. Wasser abdrehen','')})
Der HM_6674CF_Btn_01 triggert zw. open und closed, der HM_2DD7B8_Sw triggert nicht, bleibt also im state "off".
Varianten am HM_2DD7B8_Sw mit HM_2DD7B8_Sw:"^off$" ändern nichts.

Habt ihr einen Tipp?

VG Helmut
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Otto123

Hallo Helmut,

deine Beschreibung verstehe ich nur zum Teil - aber:
Zitat von: isy am 11 Juli 2023, 15:33:57Varianten am HM_2DD7B8_Sw mit HM_2DD7B8_Sw:"^off$" ändern nichts.
Du kannst nicht zwei Events mit and verknüpfen!
Dein jetziges DOIF triggert auf den Event und HM_6674CF_Btn_01:"^closed$" und der Status vom Schalter soll zu dem Zeitpunkt abgefragt werden? Das sollte funktionieren insofern im sw wirklich off steht. Du fragst den STATE ab, da könnten temporär andere Dinge drin stehen. Versuch es mal so:
([HM_6674CF_Btn_01:"^closed$"] and [?HM_2DD7B8_Sw:level] eq 0)Und setze attr do always.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

isy

Hallo Otto,
Danke für den Tipp,  werde ich morgen früh testen.
VG Helmut
Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

Hallo Otto,
dein Tipp funktioniert leider nicht, der Ausführungsteil wird nicht gestartet.

Ich werde die Logik mal mit einem geschachtelten DOIF oder notify auf dem HM_6674CF_Btn_01 (Wasserzähler) aufsetzen.
Im Ausführungsteil frage ich dann mit "if" den state des HM_2DD7B8_Sw ab, der steht sauber auf "off" (bzw. "on").

Bis denne mit besten Grüßen,
Helmut
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Per

Passt das mit dem "^" an der Stelle? Ich würde mal den zweiten Teil ("?") ganz weggelassen und schauen, ob der Trigger auslöst.

isy

Zitat von: Per am 12 Juli 2023, 12:21:07Passt das mit dem "^" an der Stelle? Ich würde mal den zweiten Teil ("?") ganz weggelassen und schauen, ob der Trigger auslöst.

Hallo Per, das passt. Syntax wurde vom Event Monitor erzeugt und triggert allein.
Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

Ich habe das Ganze jetzt so gelöst:

defmod HM_6674CF_Btn_01_notify_1 notify HM_6674CF_Btn_01:closed IF ([HM_2DD7B8_Sw] eq "off") ({DebianMail('alarm@xxx.de','ACHTUNG Zisterne Frischwassereinspeisung läuft','Magnetventil scheint zu klemmen. Wasser abdrehen','')})
attr HM_6674CF_Btn_01_notify_1 disabledAfterTrigger 60
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Otto123

prima :)
Aber nach meinem Verständnis ist es die gleiche Logik wie bei deinem DOIF.  :-X
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

isy

Hallo Otto,
ich denke, das Problem liegt am "and".
Es kann sein, dass das DOIF Modul beim "and" Operator erwartet, das beide Bedingungen triggern.
Bei meiner ersten Variante triggert nur der Wasserzähler, der Schalter bleibt statisch auf "off".

Bei der letzten Version (womöglich egal ob per DOIF oder notify) frage ich beim Event des Wasserzählers per "IF" zusätzlich den Schalter ab.

Gruß Helmut
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Otto123

Zitat von: isy am 14 Juli 2023, 13:30:07Es kann sein, dass das DOIF Modul beim "and" Operator erwartet, das beide Bedingungen triggern.
Nein.
Beide Bedingungen müssen erfüllt sein: Der Event (HM_6674CF_Btn_01:"^closed$") muss eintreffen UND die Abfrage ([HM_2DD7B8_Sw] eq "off") muss war sein. Nichts anderes machst Du mit dem notify - mit einer Besonderheit: DOIF macht es normalerweise nur einmal pro Statusänderung des Moduls:
ZitatWünscht man eine Ausführung des gleichen Befehls mehrfach nacheinander bei jedem Trigger, unabhängig davon welchen Status das DOIF-Modul hat ... dann muss man das per "do always"-Attribut angeben:

Aber ich finde die notify Lösung eh eindeutiger :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz