Hallo,
(Kurzfassung: ) gibt es einen Trick linknx zu zwingen beim Objektwertauslese den Wert vom Bus zu lesen/zu aktualisieren (statt gebufferten Wert auszugeben)?
Update: Für die Lösung schauen Sie Antwort #6 unten.
(Langfassung: ) Ich möchte mit linknx (in meinem Fall v.0.0.1.33) einen Wert vom KNX Bus, z.B. einen Helligkeitswert vom Sensor, auslesen.
Das klappt auch soweit, nur triggert die linknx Objektauslese keine Aktivität beim KNX-Bus, sondern es wird nur der letzte am Bus gemeldete Wert zurückgegeben.
In linknx Konfiguration habe ich stehen:
Wenn ich mit Telnet
abfrage sehe ich im (ETS) Gruppenmonitor dass einmalig der Wert vom Bus abgefragt wurde (linknx -> knxd -> KNXNet/IP Router -> KNX Bus).
Beim weiteren Leseversuchen sehe ich auf dem Bus keine weitere Leseaktivität, d.h. die Antwort bleibt gleich, wie hier am Beispiel:
Wenn ich den Gruppenadresse, z.B. mit ETS Gruppenmonitor, händisch auslese und danach mit linknx den Wert neu auslese, gibt linknx den neuen aktualisierten Wert aus:
Log in Debug-Modi gibt folgendes aus (erste Teil ist vom erste Abfrage, zweite Teil vom zweite Abfrage mit ausbleibenden Buskommunikation):
Wie zwingt man linknx bei jedem Objektlesen den Wert vom Bus auszulesen? Ich habe verstanden die "s" Flagge sei dafür da, nur wie es aussieht, habe ich es nicht richtig verstanden.
Update: die "s"-Flagge wird in linknx (mindestens bis v0.0.1.33) nur bei ausgehenden Datenwrites ausgewertet, beim einkommenden Datenreads/-requests nicht (Info bestätigt von linknx Entwickler).
Auch folgende Regel bringt nicht das gewünschte Ergebnis:
Für jede Hilfe bin ich sehr dankbar!
Gruss,
xrk
P.S. Im Forum hier könnte ich einen ähnlichen Problemfall von 2010 finden, als Lösung gab meiner Meinung nach weniger elegante externe Bus-Auslese-Trigger mit eibd/knxd groupread, der allerdings auch nur einmalig den Busauslese auslöst:
https://knx-user-forum.de/forum/%C3%...rung-erstellen
(Kurzfassung: ) gibt es einen Trick linknx zu zwingen beim Objektwertauslese den Wert vom Bus zu lesen/zu aktualisieren (statt gebufferten Wert auszugeben)?
Update: Für die Lösung schauen Sie Antwort #6 unten.
(Langfassung: ) Ich möchte mit linknx (in meinem Fall v.0.0.1.33) einen Wert vom KNX Bus, z.B. einen Helligkeitswert vom Sensor, auslesen.
Das klappt auch soweit, nur triggert die linknx Objektauslese keine Aktivität beim KNX-Bus, sondern es wird nur der letzte am Bus gemeldete Wert zurückgegeben.
In linknx Konfiguration habe ich stehen:
Code:
<object type="9.004" id="WZ_Helligkeit" gad="0/7/5" flags="cwtus">WZ_Helligkeit</object>
Code:
<read><object id="WZ_Helligkeit" /></read>
Beim weiteren Leseversuchen sehe ich auf dem Bus keine weitere Leseaktivität, d.h. die Antwort bleibt gleich, wie hier am Beispiel:
Code:
<read status='success'>172</read> <read status='success'>172</read> <read status='success'>172</read>
Code:
<read status='success'>165</read>
Code:
DEBUG ClientConnection : PROCESSING MESSAGE: DEBUG ClientConnection : <?xml version="1.0" encoding="utf-8"?><read><objects><object id="WZ_Helligkeit"/></objects></read> DEBUG ClientConnection : END OF MESSAGE INFO KnxConnection : write(gad=0/7/5, buf, len=2) DEBUG KnxConnection : Write request sent DEBUG KnxConnection : Response from 1.1.3 to 0/7/5: 1d fa DEBUG Object : Object (id=WZ_Helligkeit): get INFO Object : New value 122.4 for object WZ_Helligkeit (type: 9.004) DEBUG Object : Calling onChange on listener for WZ_Helligkeit INFO Rule : Evaluate rule read-in-values INFO Condition : ObjectCondition (id='WZ_Helligkeit') evaluated as '1' INFO Rule : Rule read-in-values evaluated as 1, prev value was 1 DEBUG Object : Object (id=WZ_Helligkeit): get DEBUG ClientConnection : PROCESSING MESSAGE: DEBUG ClientConnection : <?xml version="1.0" encoding="utf-8"?><read><objects><object id="WZ_Helligkeit"/></objects></read> DEBUG ClientConnection : END OF MESSAGE DEBUG Object : Object (id=WZ_Helligkeit): get
Update: die "s"-Flagge wird in linknx (mindestens bis v0.0.1.33) nur bei ausgehenden Datenwrites ausgewertet, beim einkommenden Datenreads/-requests nicht (Info bestätigt von linknx Entwickler).
Auch folgende Regel bringt nicht das gewünschte Ergebnis:
Code:
<rule id="read-in-values"> <condition type="object" id="WZ_Helligkeit" trigger="true" /> <actionlist> <action type="send-read-request" id="WZ_Helligkeit" /> </actionlist> </rule>
Gruss,
xrk
P.S. Im Forum hier könnte ich einen ähnlichen Problemfall von 2010 finden, als Lösung gab meiner Meinung nach weniger elegante externe Bus-Auslese-Trigger mit eibd/knxd groupread, der allerdings auch nur einmalig den Busauslese auslöst:
https://knx-user-forum.de/forum/%C3%...rung-erstellen
Kommentar