Reading Trigger werden nicht ausgelöst

Begonnen von Loredo, 30 Januar 2014, 23:10:35

Vorheriges Thema - Nächstes Thema

Loredo

Hallo,


ich aktualisiere in meiner NotifyFn Funktion einige interne Readings.
Nun möchte ich, dass man auf diese Readings Trigger mit dem Notify-Modul setzen kann. Das funktioniert aber irgendwie nicht, die Notifies werden irgendwie nie angesprochen :-(


Was mache ich denn falsch? Ich update die Readings ganz normal mit readingsBeginUpdate/readingsBulkUpdate/readingsEndUpdate.




Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Dr. Boris Neubert

Zeig uns doch bitte mal den Kode her.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

Generell gillt, dass man in einem notify, was fuer ein bestimmtes Geraet ausgeloest wurde, keine weitere Notifies fuer das gleiche Geraet ausloesen kann. Haengt damit zusammen, dass die Events im Geraete-Hash gespeichert sind.
Diese Beschraenkung gilt auch, wenn man das Event ueber mehrere indirekte notifies ausloesen will.

Loredo

Es geht um mein RESIDENTS Modul von hier: http://forum.fhem.de/index.php/topic,19040.0.html


In der Funktion RESIDENTS_Notify verarbeite ich dort zunächst die Status-Änderungen der überwachten Child-Geräte (Type=ROOMMATE|GUEST).
Die Funktion wird dann durch die Änderung der eigenen Readings ein weiteres Mal aufgerufen, um den internen Status neu zu berechnen. Das funktioniert soweit prima, auch über Longpoll werden die Events verarbeitet und Änderungen sofort in FHEMWEB angezeigt. Nur die Notify-Devices, die auf das Gerät gesetzt sind, werden teilweise nicht angestoßen. Konkret jene, die ein Reading überwachen, die in der zweiten Schleife aktualisiert werden.


Ich dachte mir, es ist vielleicht irgend eine Art Schutz vor Loops. So ganz habe ich die Beschränkung, die Rudi beschrieben hat, noch nicht verstanden; zumindest habe ich spontan jetzt noch immer keine Idee, wo ich ansetzen müsste, um um diese Beschränkung herum zu programmieren  :-[
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

rudolfkoenig

Geht nicht:
- Geraet1:Event1 -> NotifyFn { readings*Update, DoTrigger Geraet1:Event2 }

Geht:
- NotifyFn hochpriorisieren (NTFY_ORDER)
- Geraet1:Event1 -> NotifyFn {$hash->CHANGED direkt erweitern }

Letzteres ist ein Hack mit Einschraenkungen bzgl. userReadings/stateFormat), so funktioniert 98_average.pm