Hallo zusammen und Fröhliche Weihnachten!
ich habe ein Problem mit einer notify-Schleife. Und zwar habe ich ein FRITZBOX-device:
define FritzBox FRITZBOX fritz.box
attr FritzBox allowShellCommand 1
attr FritzBox allowTR064Command 1
attr FritzBox event-on-update-reading tam1,diversity1_state,diversity2_state,box_wlan_5GHz,box_wlan_2.4GHz
attr FritzBox forceTelnetConnection 1
attr FritzBox group Fritzbox
attr FritzBox icon it_router
attr FritzBox room x_Geräte
attr FritzBox telnetUser root
und mehrere dummys, die mir den aktuellen Stand einzelener readings des FRITZBOX-devices anzeigt. Sie sind im Prinzip alle identisch. Hier als Bsp. eine Rufumleitung:
define FB_Ruml_Alex dummy
attr FB_Ruml_Alex devStateIcon on:phone_missed_out off:phone_call_in
attr FB_Ruml_Alex group Fritzbox
attr FB_Ruml_Alex icon phone_missed_out
attr FB_Ruml_Alex room x_Geräte,Favourites
attr FB_Ruml_Alex setList on off
Damit der aktuelle Stand angezeigt wird, hab ich ein notify, das das Reading auf den dummy "kopiert":
define FB_Ruml_Alex_n notify FritzBox:diversity1_state.* set FB_Ruml_Alex $EVTPART1
attr FB_Ruml_Alex_n room EG_Flur
Damit ich mit dem Dummy auch schalten kann, hab ich folgendes notify, welches dann die Rufumleitung in der Fritzbox an- bzw. ausschaltet
define FB_Ruml_Alex_n_onoff notify FB_Ruml_Alex:(on|off) set FritzBox diversity 1 $EVENT
attr FB_Ruml_Alex_n_onoff room EG_Flur
Wenn ich nun nicht über fhem (z.B übers Telefon) die Rufumleitung einschalte, dann regagiert offensichtlich zunächst mein FB_Ruml_Alex_n und dann nochmal das FB_Ruml_Alex_n_onoff und setzt den Status der Fritzbox-Rufumleitung. Im Log kommt:
2015.12.25 19:29:38 3: FRITZBOX: set FritzBox diversity 1 on
Ein bißchen konnte ich die notify-Flut schon eindämmen durch den
attr FritzBox event-on-update-reading tam1,diversity1_state,diversity2_state,box_wlan_5GHz,box_wlan_2.4GHz
weiter eindämmen könnte ich evtl. noch durch ein DOIF. Aber gibt es denn nicht eine grundsätzliche Möglichkeit zu unterscheiden, ob ein dummy automatisch (als über ein notify oder eine perl-Funktion) gesetzt wird oder ib ich manuell auf "on" oder "off" klicke.
Vielen Dank und
LG
Alex.
Du könntest den Dummy auf auto_on, auto_off, man_on, man_off setzen, je nachdem wer ihn setzt, dann hast Du die Unterscheidung.
schau dir mal readingsProxy und readingsGroup an. damit kann du je ein oder mehrere readings über ein extra device verfügbar machen ohne das du probleme mit solchen schleifen hast.
gruss
andre
@andre: super danke! readingsproxy ist genau was ich suchte! Und nebenbei hab ich auch noch setstate kennengelernt!
LG
Alex.