MessageSink - Modul-eigene Änderungen erkennen und ignorieren

Ich habe mich durchgerungen, mein erstes Modul zu schreiben.
Mit dem MessageSink habe ich jedoch noch meine Probleme:
Ich habe Änderungen auf vom Modul erstellte Variablen, z.B.

            $this->RegisterVariableBoolean('Power', $this->Translate('Power'), '~Switch');

per RegisterMessage registriert:

          $this->RegisterMessage($this->GetIDForIdent('Power'), VM_UPDATE);

Damit wird die MessageSink aufgerufen, wenn die Variable aktualisiert wird.

Nachdem ich die Variable auch „selbst“ aus dem Modul heraus aktualisiere, möchte ich diese Änderungen ignorieren. Wie kann ich das bewerkstelligen (ansonsten erzeuge ich Rekursionen).

Oder nutze ich das Konstrukt falsch? Ansonsten fällt mir nur die Logik wie bei Homematic-Instanzen ein, wo Änderungen nur über Methodenaufruf möglich sind (HM_WriteValueBoolean etc.).

Grüße,
Martin

Wozu willst du dich auf deine Variable registrieren?
Nur dein Modul drauf deine Variable beschreiben.
Wenn du auf Bedienaktionen reagieren willst, musst du die Methode RequestAction implementieren.
RequestAction — IP-Symcon :: Automatisierungssoftware
Michael

Ok, die RequestAction wird aufgerufen, wenn über das Webfront eine Änderung erfolgt - so weit passt das.

Wie sieht es aber mit Änderungen im Objektbaum aus (also Doppelklick auf die Variable) sowie mit programmatischen Änderungen, also

SetValue(<Variable-ID>, true)

Wie geht man damit um - ist das generell „verboten“ und man ignoriert Änderungen dieser Art (wobei diese ja vorübergehend übernommen werden)? Für diese Änderungen fehlt mir der „Best Practise“ Ansatz…

Grüße,
Martin

Ja, das einfach ignorieren.
Der User hat dann das System hinter Symcon nicht verstanden.
Ich warte ja noch immer darauf, dass @paresy endlich auch Statusvariablen von PHP-Modulen als ReadOnly markiert.
Dann bekommt der User, wie bei nativen Modulen, eine schöne Fehlermeldung.
Michael