Hallo,
eines meiner beiden Notifys mit identischer RegEx wird nicht ausgeführt:
Dieses ist der Trigger:
dm_alarm:check_on {
if (Value("dm_armedAlarm") eq "on"){fhem("set dm_alarm on")}
else {fhem("set dm_alarm off")}
}
Wenn ich
set dm_alarm check_on
aufrufe wird dm_alarm auf "on" gesetzt und
dieses Notify wird ausgelöst:
dm_alarm:on { if ((Value("dm_armedAlarm") eq "on") &&(Value("dm_stickyAlarm") ne "on")) {fhem("set dm_stickyAlarm on")}}
dieses Notify wird allerdings nicht ausgelöst:
dm_alarm:on { Log3(undef,1,"EventTest: NAME=$NAME EVENT=$EVENT") }
unabhängig davon was in den geschweiften Klammern steht.
Selbst wen ich das erste Notify auf "disabled" setzte wird das zweite Notify nicht aufgerufen.
Kann mir da jemand weiterhelfen?
Danke
dm_alarm:on { if (Value("dm_armedAlarm") eq "on") && Value("dm_stickyAlarm") ne "on") {fhem("set dm_stickyAlarm on")}}
Geht es eventuell so?
nein, geht leider auch nicht.
wenn ich aber "set dm_alarm on" gegen "trigger dm_alarm on" ersetze werden beide Notifys ausgelöst.
also:
dm_alarm:check_on {
if (Value("dm_armedAlarm") eq "on"){fhem("trigger dm_alarm on")}
else {fhem("set dm_alarm off")}
}
geht, aber mein dm_alarm (übrigens ein dummy) ändert seinen Status natürlich nicht.
Ein "trigger dm_alarm on" gefolgt von "set dm_alarm on" wiederum verhindert das Auslösen des zweiten Notifys.
Also:
dm_alarm:check_on {
if (Value("dm_armedAlarm") eq "on"){fhem("trigger dm_alarm on;set dm_alarm on")}
else {fhem("set dm_alarm off")}
}
geht dann wieder nicht.
mach vor dem set direkt im gleichen fhem aufruf noch ein
sleep 0.1;
dann ist das setzen des status asynchron zum notify und sollte auch das event erzeugen.
gruss
andre
Danke, so geht es.
Ist aber schon etwas unzuverlässig, wenn auf ein set nur einige notifys reagieren.
es reagieren schon alle direkten notifys. das problem ist das verschachteln und das ist in der commandref auch beschrieben.
gruss
andre
Ich habe es in der Commandref nicht gefunden.
Sowas ist also nicht zu empfehlen?
dm_dummy1:check_on {fhem("set dm_dummy1 on")}
Ist es denn erlaubt einen anderen dummy zu setzen?
dm_dummy1:check_on {fhem("set dm_dummy2 on")}
oder muss man dann immer trigger verwenden
dm_dummy1:check_on {fhem("trigger dm_dummy2 on")}
danke und grüße
trigger setzt keine readings sondern erzeugt nur ein event.
set ist nur eine abkürzung für setreading <device> state
es steht bei setreading:
ZitatNote: setreading won't generate an event for device X, if it is called from a notify for device X. Use "sleep 0.1; streaming X Y Z" in this case.
gruss
andre
Ok, alles klar.
Mich hat nur gewundert, dass ja eines der beiden Notifys ausgelöst wurde, das andere aber nicht, obwohl die RegEx identisch war.
Ich werde aber in Zukunft auf solche Strukturen mehr achten.
danke