kuczerek hat geschrieben: 20. Nov 2021 22:15
Habe die Adresse gerade testweise mal in der ETS abgefragt, und siehe da: Mein Gira Tastsensor antwortet. Kann aber sein, dass ich selber das Lesen Flag im Szenen-Nebenstelleingang vor einiger Zeit gesetzt habe, da ich die aktuelle Szene beim Start von zum Beispiel openHAB gleich richtig initialisieren möchte. Bis jetzt ging das auch immer tadellos.
Ja, das mag sein
Nehmen wir mal an, Du steuerst zwei Schaltkanäle über eine Szene, die mit GA 0/0/1 gekoppelt ist. Szene 1 ist dabei OFF/OFF, Szene 2 OFF/ON, Szene 3 ON/OFF und Szene 4 ON/ON.
Nun sendest Du Szene 4, die beiden Geräte wechseln auf ON/ON.
Leider gibt es aber noch eine zusätzliche Taste im Raum, mit der Du den 2. Aktor manuell bedienen kannst. Damit schaltest Du nun den 2. Aktor OFF. Der aktuelle Zustand lautet nun: Szene 4, Aktorzustände ON/OFF. Das knx System kann die Szenennummer nicht ändern, weil das schlicht nicht vorgesehen ist.
Um es mal anders auszudrücken: Szenen werden aufgerufen, eine Szene ist aber niemals
aktiv.
Dass Du damit bei Dir keine Probleme hast, kann verschiedene Gründe haben, z.B. dass Du die betreffenden Kreise ausschließlich über die Szenensteuerung bedienst.
Die knx Hardware unterscheidet ausdrücklich zwischen Datenpaketen, die als Befehl gesendet wurden und solchen, die als Antwort auf einen Read Request erfolgten. Man kann über die Flags der KO bestimmen, ob ein Gerät nur auf das Command oder zusätzlich auch auf den Response reagiert. Gewöhnlich ist Letzteres abgeschaltet, so dass der Read Request auf dem Bus nicht zu zusätzlichen Schaltereignissen führt.
openHAB hat keine Einstellmöglichkeit für das A-Flag (bzw. U-Flag im englischen). openHAB wird also eine gesendete Zahl an dieser Stelle immer als Status (oder im Fall von number-control immer als Command) interpretieren.
Grundsätzlich gilt für postUpdate und sendCommand das von @int5749 aufgeführte Verhalten: postUpdate setzt einen Status eines Items, sendCommand sendet einen Befehl an das Item (welches diesen Befehl dann an alle gebundenen Channel weiterreicht). knx ist lediglich insofern eine Ausnahme, dass es ein postUpdate ebenfalls an den knx Bus weiterreicht, wenn der betreffende Channel ein *-control Channel ist.
In der Gegenrichtung gilt das gleiche: Grundsätzlich kann man Rules auf
received command oder
received update triggern lassen.
received command wird nur bei einem empfangenen Befehl getriggert. Über die Bindings kommen gewöhnlich aber nur Status hinein, keine Befehle. Deshalb wird
received command gewöhnlich nur dann triggern, wenn man in der UI einen Schalter umlegt oder Ähnliches.
received update reagiert nur, wenn ein Status Update erfolgt ist, gewöhnlich also nur, wenn ein Channel einen Status empfangen hat.
Allerdings gibt es inzwischen einige Bindings, die es ermöglichen, einzelne Channel als Command Channel zu definieren (in knx geschieht das über *-control...).
Weiterhin ist das gewöhnliche Verhalten von openHAB so, dass ein sendCommand (egal ob als Befehl oder über die UI abgesetzt) ein postUpdate nach sich zieht, weil openHAB den wahrscheinlichen Status vorhersagt (predicted to become ---) und vorsorglich schon mal als Status speichert. Die Idee dahinter ist eine schneller reagierende Anzeige, um den Preis, dass die Anzeige vielleicht nicht allzu viel mit der Realität zu tun hat, bis der gebundene Channel seinerseits einen Status gesendet hat. Man kann dieses Verhalten mit dem Parameter autoupdate=false abschalten (und sollte das nach Möglichkeit auch tun, sofern ein Channel einen Status liefert).
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.9 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte