ioBroker / ioBroker.knx

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

Adapter unterscheidet ACK #173

Closed quorle closed 2 years ago

quorle commented 3 years ago

Wenn man mittels Blockly einen Befehl per "steuere Block" sendet, wird im Objektmanager der Schaltzustand "rot" ( ACK nicht bestätigt ). Wenn man nun per "aktualisiere Block" sendet, wird der Schaltzustand im Objektmanager "grün" aber nichts wird auf den Bus gesendet. Der Adapter sollte hier nicht unterscheiden, sondern immer senden und wenn gesendet wurde, dann im Objektmanager den Schaltzustand "grün" ( ACK bestätigt ) ändern.

Apollon77 commented 3 years ago

Sorry, aber NEIN!

ack=true sind Kommandos an das Gerät. ack=false sind Werte die vom Gerät gemeldet werden

Also damit der Wert wieder "grün" wird, muss das Gerät (oder der Adapter) den Wert bestätigen.

Bei "write only" Aktionen kann dies ggf nie erfolgen und damit bleibt der letzte gesteuerte Wert stehen weil es ja keine Rückmeldung gab.

Apollon77 commented 3 years ago

Von daher ist die farge: Um welchen Datenpunkt handelt es sich und warum findet keine Bestätigung statt

quorle commented 3 years ago

Eigentlich ist das bei allen meinen Datenpunkten im KNX Adapter so. wenn ich einen Datenpunkt mit Blockly aktualisieren lasse, wird er nicht rot, aber es wird auch nichts auf den Bus gesendet. wenn ich mit Blockly einen Datenpunkt steuern lasse, wird auf den Bus gesendet, aber der Datenpunkt wird rot. Also sehe ich das so, dass der Adapter beim „steuern“ zwar auf den Bus sendet, aber das ACK nicht setzt. Und beim „aktualisieren“ zwar das ACK setzt, aber nichts auf den Bus sendet.

Apollon77 commented 3 years ago

dass der Adapter beim „steuern“ zwar auf den Bus sendet, aber das ACK nicht setzt

Jetzt liess bitte nochmals GENAU was ich oben geschrieben habe!! ack=false bedeutet "Steuern" und das geht auf den Bus. Das wars. Damit es "grün" wird muss quasi vom Bus wieder eine Meldung zurückkommen mit dem neuen stand des Datenpunkts oder Wertes - also eine aktive Rückmeldung des Geräts. Wenn das nicht passiert bleibt es rot und das ist vollkommen ok so. Ob das so ok ist müssen die KNX devs schauen, aber zB ein Log oder mehr details würden denen bestimmt helfen

Garfonso commented 3 years ago

Eigentlich ist das bei allen meinen Datenpunkten im KNX Adapter so. wenn ich einen Datenpunkt mit Blockly aktualisieren lasse, wird er nicht rot, aber es wird auch nichts auf den Bus gesendet. wenn ich mit Blockly einen Datenpunkt steuern lasse, wird auf den Bus gesendet, aber der Datenpunkt wird rot. Also sehe ich das so, dass der Adapter beim „steuern“ zwar auf den Bus sendet, aber das ACK nicht setzt. Und beim „aktualisieren“ zwar das ACK setzt, aber nichts auf den Bus sendet.

Wie Apollon sagt, ist das Verhalten so erstmal aus ioBroker Sicht korrekt.

Was ist denn dein Anwendungsfall? Wenn du mit dem Skript / ioBroker / vis etwas steuerst, also ein Befehl an ein KNX Gerät schickst, z.B. Lampe XY an, sollte der Befehl auf dem KNX Bus auf der dazu gehörigen Status Gruppenadresse (z.B. Lampe XY RM) quittiert werden. Wenn der Adapter die Schalt Gruppenadressen und Status Gruppenadressen korrekt zuordnen konnte, dann wird die Quittierung auch beim Objekt der Schalt Gruppenadresse in ioBroker angezeigt (der Wert also "grün" werden). Die Zuordnung läuft dabei über den Namen. Falls das dein Anwendungsfall ist, solltest du da die Zuordnungen also mal prüfen (dazu gibt es im Forum Thread und hier in den issues schon einige Tipps).

Ein anderer Fall ist, wenn du Daten aus ioBroker, z.B. eine Temperatur, an den KNX Bus schicken willst und der da z.B. auf einem Display angezeigt werden soll. Das wird nicht quittiert werden. Damit der Adapter schickt, musst du hier, trotzdem steuere nutzen. Das ist leider so und (aktuell) eine Unzulänglichkeit der Zusammenarbeit KNX <-> ioBroker, die sich nicht ohne weiteres lösen lässt. Falls dich die fehlende Quittierung in diesem Fall (also die Daten kommen aus deinem Skript und werden von niemandem quittiert) wirklich stören sollte, kannst du ja beides machen, also steuer und dann aktualisieren.

Ich sehe hier aktuell, außer der zum Teil unzulänglichen Zuordnung der verschiedenen Datenpunkte zueinander, keinen Fehler. Für diese gibt es aber schon andere Issues (z.B. https://github.com/ioBroker/ioBroker.knx/issues/38 ). Insofern würde ich hier schließen. Bei der Zuordnung helfen wir dir gerne im Forum, bzw. lies da mal etwas in dem Thread (ja, ist leider unübersichtlich), da gibt es schon einiges an Info zu. Ist immer wieder ein Problem. Alternativ könnte man heute auch Aliase Anlegen und da für read/write verschiedene Datenpunkte und die so zusammen führen.