NEWS
KNX Adapter - Fehler beim Import
-
KNX Adapter - Fehler beim Import
Beim Einlesen (Import) von Datenpunkten vom ETS-File in den IO-Broker verhält sich der Import nicht richtig bzw. es wurde ein prinzipieller Anwendungsfall nicht bedacht.
Um den Fehler nachvollziehen zu können muss ich hier etwas technisch ausholen bzw. einige Grundlagen von KNX darlegen.
Der Anwendungsfall
Ich habe in meiner KNX-Anlage zusätzlich zu vielen KNX-Devices eine externe VISU (keine IO-Broker VISU) und den IO-Broker.
Der IO-Broker errechnet mit einem mathematischen Modell aus einigen Ausgangsmesswerten (welche vom KNX-BUS kommen) viele einzelne Messwerte (60 Stück). Diese sollen auf der VISU angezeigt werden.
Ich verwende:
ETS: V5.7.5 (Build 1373)
KNX Adapter: V1.0.45Die Realisierung
a) Da wie oben beschrieben, die Messwerte nur vom IO-Broker zur externen Visu gesendet werden, gibt es kein KNX-Device welchen diese 60 Messwerte zugeordnet werden könnenb) Die Vergabe der Übertragungsflags (KLSÜ) ist in der ETS nur möglich, wenn die Gruppenadresse (GA) eines Datenpunkts auf ein Kommunikationsobjekt (KO) zugeordnet wird! Ohne zugehöriges KNX-Device gibt es daher kein KO für einen Messwert und daher auch keine Übertragungsflags für eine GA.
Detaillierte Beschreibung der Übertragungsflags siehe KNX Organisation:
https://support.knx.org/hc/de/articles/115003188089-Flags
Aus diesem Grund verwende ich ein so genanntes DUMMY-KNX-Gerät (Es gibt ja genug von den diversen Herstellern)c) Die 60 Messwerte sind den richtigen KO (2 BYTE) des DUMMY-Geräts zugeordnet.
d) Ab jetzt kann können auch die Übetragungsflags (KLSÜ) gesetzt werden.
e) Die Übertragungsflags richtig zu setzen ist essentiell, weil nur über diese erkennt der IO-Broker beim Einlesen, ob dieser Datenpunkt gelesen bzw. beschreiben werden soll.
chefkoch009 schreibt dazu:
+++++++++++++++++++++++++++++++++
Zurück zu den Flags:
das Schalt- KO hat die Flags KS
das Status- KO hat die Flags KL oder KLÜ oder KÜ
Die ioBroker Objekte haben die Flags READ und WRITE.
Wenn:
READ = FALSE und WRITE = TRUE ==> entspricht KS es wird der entsprechende Wert auf den Bus geschrieben
READ = FALSE und WRITE = FALSE ==> es passiert nichts
READ = TRUE und WRITE = FALSE ==> entspricht KÜ, es kann NICHT abgefragt werden
READ = TRUE und WRITE = TRUE ==> entspricht KLÜ, es kann abgefragt werden
die Kombi KLSÜ führt zu READ = TRUE und WRITE = TRUE !!!
+++++++++++++++++++++++++++++++++Diese Übertragungsflags werden beim Import herangezogen um im IO-Broker die Attribute
READ und WRITE des jeweiligen Datenpunkts entsprechend zu setzen
Hier ein Beispiel:f) KNX hat ein weiteres Prinzip:
Ein KO kann mit mehreren Gruppenadressen (GA) verbunden sein, d.h. mehrere GAs sind einem KO zugeordnet. Dies ist kein Parametrierfehler, sondern zugelassen und ok.
In einem solchen Fall hört das KO alle Informationen aller GA, wenn das KO aber schreibt, geht die Information nur über die erste GA raus.
Man ersieht dies anhand der Spalte “S“ = SENDEN in der ETS:
Vorsicht: Nicht verwechseln mit dem Attribut S in den Übertragungsflags!!!
Es kann aus diesem Grund in einem KO nur eine GA in der Spalte “S“=SENDEN ein gesetztes S haben, alle anderen diesem KO zugeordneten GAs haben die Spalte “S“=SENDEN NICHT gesetzt.g) darüber schreibt auch chefkoch009:
+++++++++++++++++++++++++++++++++
Regelwerk:
• wie von KNXBroker schon richtig geschrieben: 1 KO KANN EXAKT GENAU ABSOLUT und definitiv nur in 1GRUPPENADRESSE schreiben
• in einer GA können aber viele hören
+++++++++++++++++++++++++++++++++Der Fehler beim Einlesen:
Beim Einlesen werden nicht nur die Übertraungsflags KLSÜ sondern fehlerhafterweise auch die Spalte “S“=SENDEN berücksichtigt.
Alle Messwerte haben richtigerweise in der ETS die Übertragungsflags KS gesetzt. Damit sollten jetzt ALLE Messwerte im IO-Broker haben: READ = FALSE und WRITE = TRUE und daher vom IO-Broker gesendet werden.
DAS IST ABER NICHT SO.
Nur der Messwert mit gesetzter Spalte “S“=SENDEN hat READ = FALSE und WRITE = TRUE
Alle anderen Messwerte haben: READ = TRUE und WRITE = TRUE, d.h. diese werden NICHT vom IO-Broker gesendet!
Zusammenfassung
Die Spalte “S“=SENDEN darf beim Import des ETS-Files in den IO-Broker nicht berücksichtigt werden.