FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hanske am 06 Juli 2015, 10:26:11

Titel: notify löst nicht aus
Beitrag von: hanske am 06 Juli 2015, 10:26:11
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

Titel: Antw:notify löst nicht aus
Beitrag von: CoolTux am 06 Juli 2015, 10:56:23

dm_alarm:on { if (Value("dm_armedAlarm") eq "on") && Value("dm_stickyAlarm") ne "on") {fhem("set dm_stickyAlarm on")}}


Geht es eventuell so?
Titel: Antw:notify löst nicht aus
Beitrag von: hanske am 06 Juli 2015, 12:44:42
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.
Titel: Antw:notify löst nicht aus
Beitrag von: justme1968 am 06 Juli 2015, 17:09:51
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
Titel: Antw:notify löst nicht aus
Beitrag von: hanske am 07 Juli 2015, 09:51:34
Danke, so geht es.
Ist aber schon etwas unzuverlässig, wenn auf ein set nur einige notifys reagieren.
Titel: Antw:notify löst nicht aus
Beitrag von: justme1968 am 07 Juli 2015, 10:04:50
es reagieren schon alle direkten notifys. das problem ist das verschachteln und das ist in der commandref auch beschrieben.

gruss
  andre
Titel: Antw:notify löst nicht aus
Beitrag von: hanske am 07 Juli 2015, 10:19:20
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
Titel: Antw:notify löst nicht aus
Beitrag von: justme1968 am 07 Juli 2015, 10:26:29
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
Titel: Antw:notify löst nicht aus
Beitrag von: hanske am 07 Juli 2015, 10:44:48
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