ioBroker / ioBroker.knx

connect KNX via eibd
http://www.iobroker.org
Other
50 stars 32 forks source link

KNX Adapter - Fehler beim Import #191

Closed Automatisierer0 closed 3 years ago

Automatisierer0 commented 3 years ago

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.45

Die 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önnen

b) 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) ++++++ SCREENSHOT DUMMY GERÄTE +++++++ DUMMY-Geräte

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. +++++ SCREENSHOT ETS FLAGS mit Kommentar.jpg ++++++ ETS_01 Flags mit Kommentar

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: ++++++ SCEENSHOT FLAGS im IO-Broker (nur 15Min) +++++ FLAGS im IO-Broker (nur 15Min)

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. ++++++ SCREENSHOT ETS SPALTE S mit Kommentar +++++++ ETS - Spalte S mit Kommentar

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! +++++++ SCREENSHOT MIN15 und MIN151 +++++++ FLAGS im IO-Broker (nur 15Min) FLAGS im IO-Broker (nur 15Min1)

Zusammenfassung Die Spalte “S“=SENDEN darf beim Import des ETS-Files in den IO-Broker nicht berücksichtigt werden.

chefkoch009 commented 3 years ago

? Verstehe ich nicht. Bei mir funktioniert es.

Automatisierer0 commented 3 years ago

Ich weiss nicht was ich noch beschreiben soll. Ich habe versucht es präzise darzulegen. Wenn man es so macht wie ich beschrieben habe dann tritt der Fehler auf.

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!

Bitte um Info wie ich weiterhelfen kann

chefkoch009 commented 3 years ago

Schau Dir mal bitte ETS seitig an, was das "S" da bedeutet. Der Adapter kann sich nicht über ETS-Programmierung hinwegsetzen. Wenn das die KO's in der ETS nicht richtig gesetzt und in die Geräte geschrieben sind, kann da nicht das erwartete passieren.