in meinem Modul (Blind Control) reagiere ich im MessageSink auf Variablenänderungen und stoße dann auch Rollladenfahrten an, die durchaus etwas länger dauern können. Nun beobachte ich, dass die auslösende Variable im Webfront erst nach meiner Verarbeitung umgesetzt wird. Also scheint mein MessageSink die Eventbehandlung zu blockieren. Das ist etwas unschön und ich weiß nicht, wie ich das lösen kann.
Muss mich korrigieren.
Habe IPS_RequestAction benutzt, damit der Ident unabhängig von dem Vorhandensein einer Variable ist.
Und, auch wenn es in deinem Fall wohl eher unbedeutend ist; aber eventuell für andere welche dieses Thema finden:
Das ist auch bei den Kernelmessages wichtig, weil ihr sonst ebenfalls IPS beim starten / beenden blockiert.
Michael
Das habe ich auch zunächst versucht. Allerdings habe ich keine passende Statusvariable. Und die öffentliche Funktion BLC_BlindControl() war bereits vorhanden.[emoji1]
Ich zitiere mich Mal selber:
Habe IPS_RequestAction benutzt, damit der Ident unabhängig von dem Vorhandensein einer Variable ist.
Darum IPS_RequestAction und nicht RequestAction.
Michael
Ah, jetzt bei intensiverem Nachdenken verstehe ich deinen Hinweis erst. Man kann die Funktion mit einem beliebigen String aufrufen. Es hat mit einem Variablenident nicht unbedingt etwas zu tun.
Genau
Nutze ich auch im MessageSink wenn es um Statusänderung des Parent oder trennen/verbinden mit einem Parent geht.
Gibt sonst immer unschöne Einträge im Log, wenn man die MessageQueue blockiert.
Michael
Timer habe dafür tatsächlich nur einmal benutzt, im MySQL Modul wo dann die gesammelten Datensätze übertragen werden.
Für quasi Echtzeit finde die IPS_RequestAction eleganter.
Michael