NEWS
KNX Adapter - Objektattribute beim Einlesen sind falsch
-
Die Attribute der Objekte beim Einlesen sind falsch.
Wie ich erlesen habe gilt die folgende Regel:
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 !!!Ich importiere von der ETS Messwerte, welche vom IO-Broker zu einer externen VISU gesendet werden sollen.
Die Flags in der ETS des falsch eingelesenen Datenpunkt sind: K und S (siehe Screenshot)
Trotzdem hat dieser eingelesene Datenpunkt: READ = TRUE und WRITE = TRUE (siehe Screenshot)ETS: V5.7.5 (Build 1373)
KNX Adapter: V1.0.45Was ist falsch?
-
@automatisierer-0 sagte in KNX Adapter - Objektattribute beim Einlesen sind falsch:
Die Attribute der Objekte beim Einlesen sind falsch.
Kann ich genau so bestätigen. Bei mir sind es Temperaturwerte mit dem DPT 9.001.
Das Lesen-Flag in der ETS ist nicht gesetzt. Trotzdem wird beim Import im DP vom ioB "READ=true" angelegt.Damit funktioniert aber das schreiben von ioB auf KNX nicht.
Ich hab die RAW Werte jetzt auf "READ=false" nachgebessert.
Damit funktioniert es so wie es soll. -
@automatisierer-0 Es gibt neben den Flag-Kriterien auch die Abfrage nach dem Status (Siehe auch "Saubere Programmierung").
Wenn zu einem Schaltobjekt kein Statusobjekt gefunden wird, so wird der DP mit read = true und write = true angelegt. Wird ein Statusobjekt gefunden/ verknüpft so wird der DP mit read = false und write = true angelegt.
Sieht also für mich korrekt aus.Möchtest du die GA vom ioBroker aus schreiben, sollte entweder eine Status-GA in der ETS vorhanden sein oder aber du musst die RAW Daten im DP manuell auf read = false und write = true setzen (und ggf. das update = true entfernen).
-
@lessthanmore
Vielen Dank für die Rückmeldung.Wie ich oben geschrieben habe geht es hier um Messwerte.
Und bei Messwerten gibt es kein Statusobjekt. -
@lessthanmore sagte in KNX Adapter - Objektattribute beim Einlesen sind falsch:
@automatisierer-0 Es gibt neben den Flag-Kriterien auch die Abfrage nach dem Status (Siehe auch "Saubere Programmierung").
Wenn zu einem Schaltobjekt kein Statusobjekt gefunden wird, so wird der DP mit read = true und write = true angelegt. Wird ein Statusobjekt gefunden/ verknüpft so wird der DP mit read = false und write = true angelegt.
Sieht also für mich korrekt aus.Möchtest du die GA vom ioBroker aus schreiben, sollte entweder eine Status-GA in der ETS vorhanden sein oder aber du musst die RAW Daten im DP manuell auf read = false und write = true setzen (und ggf. das update = true entfernen).
Bitte genauer lesen.
Bei mir handelt es sich um einen Temperaturwert.
Das ist kein Schaltobjekt. -
@frankthegreat Dann würde ich es auch nicht als Schaltobjekt definieren (K+S), sondern als das, was es ist mit KL(Ü)
Ist doch ein Ausgang und kein Eingang, korrekt? -
@automatisierer-0 Weiß ich doch. Ich habe erklärt, warum der Adapter die DP so definiert hat, wie er sie nunmal bei dir definiert hat.
Wenn der Wert nur gelesen wird (siehe oben, Ausgang), warum dann das Flag S? -
@lessthanmore sagte in KNX Adapter - Objektattribute beim Einlesen sind falsch:
@frankthegreat Dann würde ich es auch nicht als Schaltobjekt definieren (K+S), sondern als das, was es ist mit KLÜ
Ist doch ein Ausgang und kein Eingang, korrekt?Nein, nicht korrekt.
Es ist ein Eingang (Solltemperaturen von Thermostaten) und ich schreibe vom ioB Werte auf KNX.
Die Flags in der ETS passen (KSÜ) und werden vom Adapter falsch angelegt. -
@frankthegreat Weil es kein Statusobjekt dazu gibt, habe ich doch oben erklärt. Ich bin nicht der Entwickler des Adapters, sondern habe lediglich versucht zu erklären, warum der DP "falsch" angelegt wurde.
S bedeutet bei der ETS, ob dein KO auf ein GroupValueWrite/ Telegramm reagieren soll oder nicht. Das passiert beim Schreiben/ Schalten.
Ob das bei dir jetzt ein physischer Schalter ist, ein Temperaturwert oder die Klospülung interessiert die ETS nicht. Auch beim Schalten schreibst du nur einen Wert.Möchtest du also von einem anderen KO oder eben vom ioBroker auf das KO schreiben, so wird es wie ein Schaltobjekt behandelt, sprich es reagiert auf den GroupValueWrite und verarbeitet das Telegramm.
Nochmal: Der Adapter liest die Flags und bekommt KSÜ, geht also davon aus, dass das KO beschrieben/ geschaltet werden soll. Er findet aber keine korrespondierende Status GA und setzt den DP deswegen auf read only. Es wird immer beides betrachtet, Flags und GA Pärchen.
Vllt. hilft es ja dem ein oder anderen: https://knx-blogger.de/knx-flags-einfach-erklaert/
Soviel zum Thema "genauer lesen":
-
Nochmal: Der Adapter liest die Flags und bekommt KSÜ, geht also davon aus, dass das KO beschrieben/ geschaltet werden soll. Er findet aber keine korrespondierende Status GA und setzt den DP deswegen auf read only. Es wird immer beides betrachtet, Flags und GA Pärchen.
Ja, und das ist eben in dem Fall nicht korrekt.
Wenn read=true ist kann ich so nicht auf KNX senden.
Wer das nicht weis, ist halt schnell genervtWobei ich hier keineswegs den Adapter schlechtreden will...ganz im Gegenteil
@chefkoch009 hat meinen absoluten RespektMir geht es um Lösung von Problemen bzw. aufzeigen von Sachverhalten.
-
@frankthegreat Vollkommen richtig. Hab jetzt mal tief durchgeatmet, sorry.
-
@lessthanmore sagte in KNX Adapter - Objektattribute beim Einlesen sind falsch:
@frankthegreat Vollkommen richtig. Hab jetzt mal tief durchgeatmet, sorry.
AWG
Aber weil du das mit den GA Pärchen jetzt ca. 1Mio mal erwähnt hast, hab ich mal folgendes überlegt:Wenn ich jetzt zu meinen Temperaturadressen noch jeweils eine Statusadresse in der ETS anlege mit Leseflag und die in einen ETS-Dummy packe und dann mal neu importiere, sollten read und write richtig angelegt werden, oder?
Also z.B. "Kind 1 Sollwert"
und "Kind 1 Sollwert Status"Muss das heute abend gleich mal testen
-
@frankthegreat Ja, korrekt.
Ich hatte das Anfangs nur so gemacht. Bei jedem Gerät, das kein Statusobjekt hatte (Garagentor, dezentrale Lüfter, etc.), habe ich eine Status oder RM (Rückmeldung) GA angelegt und nach einem erneuten Import konnte ich dann die jeweiligen Geräte im ioBroker schalten bzw. beschreiben.
Allerdings ist mir das dann irgendwann auf den Keks gegangen in der ETS viele leere GA zu haben, so dass ich nun den von dir beschriebenen Weg nach einem Import mache.
Ich ändere nach dem Importieren alle relevanten DP ab. Ist nicht super schön, aber kostet ich 30-60 Minuten und so oft importiere ich nicht neu. -
@lessthanmore sagte in KNX Adapter - Objektattribute beim Einlesen sind falsch:
@frankthegreat Ja, korrekt.
Ich hatte das Anfangs nur so gemacht. Bei jedem Gerät, das kein Statusobjekt hatte (Garagentor, dezentrale Lüfter, etc.), habe ich eine Status oder RM (Rückmeldung) GA angelegt und nach einem erneuten Import konnte ich dann die jeweiligen Geräte im ioBroker schalten bzw. beschreiben.
Allerdings ist mir das dann irgendwann auf den Keks gegangen in der ETS viele leere GA zu haben, so dass ich nun den von dir beschriebenen Weg nach einem Import mache.
Ich ändere nach dem Importieren alle relevanten DP ab. Ist nicht super schön, aber kostet ich 30-60 Minuten und so oft importiere ich nicht neu.So, Test erfolgreich
Hab jetzt für alle Solltemperaturen, die ich vom ioB auf KNX schreibe ein weitere GA mit dem gleichen Namen angelegt
und "Status" angehängt.
Damit werden auch die DP's im ioB ordentlich angelegt "write=true", "read=false". Und ich kann sie ohne Anpassungen nutzen.
Mir ist das so lieber, da ich öfters mein ETS-Projekt erweitere und auch die Projektdatei neu übertrage.Von daher alles grün
-
@frankthegreat
Du schreibst folgendes:
Es ist ein Eingang (Solltemperaturen von Thermostaten) und ich schreibe vom ioB Werte auf KNX.
Die Flags in der ETS passen (KSÜ) und werden vom Adapter falsch angelegt.Ich meine die Flags sind bei dir falsch gesetzt.
Wenn du einen Messwert hast, der vom IO-Broker zu einem anderen KNX-Gerät gesendet werden soll, dann sind die Flags folgendermaßen zu setzen:
K + S
Deine zusätzliche Angabe von Ü ist falsch.Warum:
- K... Kommunikation ist überhaupt möglich
- S... S-Flag (Schreiben): Das Kommunikationsobjekt ist vom Bus aus beschreibbar.
Wenn sich ein Wert im IO-Broker ändert, dann schreibt der IO-Broker diesen Wert mit GroupValue Write auf den KNX-Bus. Dies bedeutet der IO-Broker schreibt auf dein KNX Gerät (Screenshot Fall C) - Ü... Ü-Flag (Übertragen): Das Kommunikationsobjekt sendet ein Telegramm mit dem neuen Inhalt, wenn sich der Wert ändert. Ich befürchte du sieht hier die Richtung verkehrt, das Ü bedeutet wenn sich ein Wert eines Sensor ändert dann schreibt dieser den geänderten Wert sponatan auf den KNX-Bus --> in Richtung IO-Broker. Daher ist deine Angabe von Ü Falsch.
Dies ist auch im Screenhsot erklärt:
-
@automatisierer-0 sagte in KNX Adapter - Objektattribute beim Einlesen sind falsch:
@frankthegreat
Du schreibst folgendes:
Es ist ein Eingang (Solltemperaturen von Thermostaten) und ich schreibe vom ioB Werte auf KNX.
Die Flags in der ETS passen (KSÜ) und werden vom Adapter falsch angelegt.Ich meine die Flags sind bei dir falsch gesetzt.
Deine zusätzliche Angabe von Ü ist falsch.
Aha, ich glaube es ist schon etwas spät
Die Flags in der ETS sind vom Hersteller so angelegt und da ändere ich nur im Notfall was.
Auch das Ü-Flag war schon so eingestellt und bezieht sich auf die ETS-Kommunikation.Wie auch immer, bei mir läuft die Sache jetzt rund. Von daher werd ich das auch so belassen bzw. weiter anwenden.