Da ich einige Logiken habe und auch viel den Formelberechner von hyman (Danke nochmals!) einsetze, habe ich mal begonnen die Gültigkeit/Initialisierung von Eingangsgrößen und Auslösung der Berechnung zu untersuchen. Insbesondere wollte ich auch klären, wann ein ReadRequest eine Neuberechnung auslöst.
Das Ergebnis möchte ich hier zur Info - aber auch zum Review - mit Euch teilen.
X1 Logiken:
Eingänge die nicht initialisiert sind, werden bis zur ersten Botschaft als "false" bewertet (das war für mich durchaus überraschend).
Bei Logiken mit mehreren Eingängen führt eine Botschaft an einem anderen Eingang auch zum Senden am Ausgang, wenn an anderen Eingängen noch nichts empfangen wurde.
Eine Initialisierung der Eingangs-GA mit "vom KNX Bus lesen", "Wert beibehalten", "Vorgabewert" führt erwartungsgemäß zu einer entsprechenden Initialisierung ggf. auch ungleich "false".
Formelberechner:
Wie in der Doku (sehr lesenswert!) beschrieben, müssen erst alle Eingangswerte vorliegen, bevor der Ausgang der Logik berechnet wird. Zitat aus der Doku:
"Alle Ausgänge geben erst dann Werte aus, wenn alle Eingangswerte vorliegen. Wenn mehrere Formeln und Ausgänge verwendet werden, gilt dies auch für Formeln, in denen die fehlenden Werte gar nicht vorkommen."
Generell Behandlung von ReadRequest:
Bei Eingängen für die "vom KNX Bus lesen" aktiviert ist (und nur bei diesen), wird ein ReadRequest auf der GA wie der Empfang einer Botschaft ausgewertet. Dies ist bei genauer Überlegung natürlich erwartungskonform, da es dem Setzen des A-Flags am Eingang entspricht. Wenn man jedoch nicht darüber nachdenkt, kann es überraschend sein.
Anbei dazu ein kleiner Testaufbau und Gruppenmonitorauszug (GA 31/5/20 ist nicht relevant), direkt nach einem Neustart:
image.pngimage.png
Das Ergebnis möchte ich hier zur Info - aber auch zum Review - mit Euch teilen.
X1 Logiken:
Eingänge die nicht initialisiert sind, werden bis zur ersten Botschaft als "false" bewertet (das war für mich durchaus überraschend).
Bei Logiken mit mehreren Eingängen führt eine Botschaft an einem anderen Eingang auch zum Senden am Ausgang, wenn an anderen Eingängen noch nichts empfangen wurde.
Eine Initialisierung der Eingangs-GA mit "vom KNX Bus lesen", "Wert beibehalten", "Vorgabewert" führt erwartungsgemäß zu einer entsprechenden Initialisierung ggf. auch ungleich "false".
Formelberechner:
Wie in der Doku (sehr lesenswert!) beschrieben, müssen erst alle Eingangswerte vorliegen, bevor der Ausgang der Logik berechnet wird. Zitat aus der Doku:
"Alle Ausgänge geben erst dann Werte aus, wenn alle Eingangswerte vorliegen. Wenn mehrere Formeln und Ausgänge verwendet werden, gilt dies auch für Formeln, in denen die fehlenden Werte gar nicht vorkommen."
Generell Behandlung von ReadRequest:
Bei Eingängen für die "vom KNX Bus lesen" aktiviert ist (und nur bei diesen), wird ein ReadRequest auf der GA wie der Empfang einer Botschaft ausgewertet. Dies ist bei genauer Überlegung natürlich erwartungskonform, da es dem Setzen des A-Flags am Eingang entspricht. Wenn man jedoch nicht darüber nachdenkt, kann es überraschend sein.
Anbei dazu ein kleiner Testaufbau und Gruppenmonitorauszug (GA 31/5/20 ist nicht relevant), direkt nach einem Neustart:
image.pngimage.png
Kommentar