Strukturproblem? Notify wird doppelt ausgeloest und $EVENT nur einmal resolved..

Begonnen von Darkman, 08 Januar 2016, 14:31:36

Vorheriges Thema - Nächstes Thema

Darkman

Moin,

Ich hab folgendes Setup:
- Funksteckdose fuer Eventbeleuchtung
- Dummyschalter zum Schalten der Beleuchtung
- 2 Notify zum Abgleich des Status

Damit meine ganzen Schalter und co halbwegs uebersichtlich sortiert bleiben, habe ich sie nach einem bestimmten Schema benannt. Das ist natuerlich fuer das menschliche Hirn eher schwer zu merken, daher hab ich mir "sprechende" Dummys angelegt. Diese Dummys funktionieren mit einem Notify auch super. Klick aufn Dummy, Funksteckdose wird geschaltet, alle States auf "on" und fein ists.
Dann ist mir aber aufgefallen, wenn man die Funksteckdose schaltet, statt dem Dummy, dann bekommt dieser natuerlich nix davon mit. Ist also "out of sync". Das ist eigentlich nur ein Anzeigeproblem, aber mich hats gestoert. Also ein 2. Notify dazu gebaut, das beim Klick auf die Funksteckdose den setstate vom Dummy anpasst. Damit hat das hin + her funktioniert.

Jetzt hatte ich zum testen noch eine Pushnotification ins Notify gehauen, eigentlich ums fuer was anderes zu testen. Das funktionierte dann aber sehr merkwuerdig. Das notify sah am Ende so aus:

define not.DummySchalter.Funksteckdose notify DummySchalter set Funksteckdose $EVENT;; set PushMSG message DummySchalter auf $EVENT gesetzt


das selbe natuerlich nochmal andersrum fuers Notify von Funksteckdose zu DummySchalter. Wenn ich jetzt irgendwas davon geklickt habe, wurden allerdings 2 PushMSGs ausgeloest. Das alleine ist schon unguenstig, aber was noch viel verwirrender war: eine Nachricht kam mit dem ausgewerteten $EVENT und in der 2. stand dann $EVENT drin. Irgendwie also wirds doppelt ausgeloest, aber auch nicht richtig.

Ist das Konzept von mir so murksig oder hab ich irgendwas vergessen / uebersehen um diese Doppler wieder los zu werden?

Meine wilde Vermutung ist ja, das der setstate irgendwie das Notify nochmal triggert, obwohl er das eigentlich nicht sollte...?

Danke & Gruss,
Sven

frank

ZitatMeine wilde Vermutung ist ja, das der setstate irgendwie das Notify nochmal triggert, obwohl er das eigentlich nicht sollte...?
du musst nicht spekulieren, sondern auf den eventmonitor schauen.  ;)
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Darkman

*patsch* depp ich... danke ;)

das Notify wird in der Tat 2 mal ausgeloest. Jetzt muss ich noch rausfinden, warum.

Nachdem ich das Notify umgeschrieben hab in Perl, klappts auch mit dem $EVENT text korekt. Also sieht jetzt so aus:

define notify.DummySchalter.Funkschalter notify DummySchalter
{
fhem "set Funkschalter $EVENT";;
fhem "set PushMSG message Funkschalter auf $EVENT gesetzt";;
}


der andere Notify ist halt genau andersrum (Funkschalter.DummySchalter) und statt set kommt ein setstate, was lt. Doku kein Event ausloest...
Irgendwo scheint also noch was zu matchen oder so, das den Notify ausloest. Vermutlich nachher mal das Loglevel hochsetzen und gucken was genau passiert.

Danke nochmal fuers erinnern an den Eventmonitor :)

Gruss,
Sven