Kein OnUpdate bei Veränderung aus Modul

Ich habe folgendes Problem: Ich überwache eine Bool-Variable in einem Modul und mit einem Script (OnUpdate). Wenn das Script die Variable ändert bekommen beide es mit, wenn das Modul die Variable ändert bekommt das Script es nicht mit obwohl die Änderung im Log zu sehen ist. Das Modul registiert das Event via RegisterMessage(… VM_UPDATE). Hat dafür jemand eine Erklärung? Das Modul ändert die Variable mit SetValue(x, false); und das Script mit SetValueBoolean(x, false);

Danke Heiko

Hast du ein minimales Beispiel für das Problem? Ich bin mir ziemlich sicher, dass du etwas falsch gemacht hast :slight_smile:

paresy

Hmm, das mit dem Beispiel wird schwierig. Ich versuche mal zu erklären was ich tue …

Ich kämpfe gerade mit einem Schalter HmIP-BSM in einer Wechselschaltung. Habe den im Flur eingebaut um mit zu bekommen wenn das Licht brennt, das soll meinem IPSymconToolmatic-Modul merken und nach gewisser Zeit abschalten. Das ist die Grundidee :wink:

Der Schalter liefert die Änderung des Stromflusses, so dass man erkennen kann wenn das Licht an ist. Leider keine Schaltzustände und außerdem muss man immer HM_Write…(x, false) senden zum switchen, also nix mit true und false.

Also habe ich mir ein Script geschrieben das eine „Schatten“-Zustand abbildet. Das Script hat ein Boolean das den Zustand „Licht ein“ und „Licht aus“ abbildet. Dazu wird auf OnLimitDrop und OnLimitExceed von der POWER-Variable des BSM-Schalters gehört. Zusätzlich noch OnUpdate fürs schalten via WebFront und eben das zeitgesteuerte Ausschalten via Lichtautomat(Modul). Wenn ich das im Script mit SetValueBoolean() mache kommt ein OnUpdate-Event. Im Modul mit SetValue() kommt nix.

Danke & Ciao Heiko

Das Thema hat mich nicht losgelassen und ich glaube auch den Fehler bei mir gefunden zu haben. Aber trotzdem bleiben Fragen offen.

Ich habe mir jetzt mal ein kleines Testscript geschrieben das nur die Reihenfolge der auslösenden Events auf einer boolschen Variable ausgibt wenn sie über das Webfront „angeschalten“ und über ein Modul "ausgeschalten wird.

Dabei kam dann schnell der erleuchtende Fakt das es ja auch noch das OnChange Event gibt und nicht nur OnUpdate. Da hat mich die Nachrichten-Sache vom Modul beeinflußt. Dort kann man ja nur VK_UPDATE registrieren.

Dazu gleich meine 1. Frage - was ist mit OnChange bei RegisterMessage?

Jedenfall war das Ergebnis folgendes:

  1. Webfront schaltet Variable

  2. OnChange triggert

  3. OnUpdate triggert

  4. Modul schaltete zurück

  5. Onchange triggert

  6. OnUpdate triggert

Nummer 5 und 6 wechseln aber immer sporadisch, wobei 2 und 3 immer in der gleichen Reihenfolge auslöst. Warum wechseln 5 und 6 sporadisch (mehrfach ausprobiert)?

Danke & Ciao
Heiko

Wird bei VM_UPDATE im array $Daten Übertragen.
Dort hast du den alten und den neuen Wert sowie ein bool - Feld welches aussagt aktualisiert oder geändert.

Michael

Okay, das erklärt natürlich einiges, Danke!

Bei der 2. Frage habe ich nach dem Schreiben des Artikels gleich nochmal getestet und jetzt hat sich das Verhalten bei 5 & 6 stabilisiert (immer )nChange vor OnUpdate), dafür kam jetzt einmal bei 2 & 3 die Reihenfolge OnUpdate und dann OnChange. Zeitlich allerdings absolut gleich.

Ciao Heiko

Soo, habe jetzt das „Biest“ in den Griff bekommen nebst Bewegungsmelder und die Familie ist happy.

Manchmal muss man sich nur selbst erklären und den hilfreichen Input annehmen um eine Lösung zu finden.

Dank in die Runde!

Heiko