Feature Request: Optionale Status-Gruppenadressen

Hallo,

ich habe das Thema schon mal hier angesprochen. Da ich aber immer wieder darüber stolpere und mir irgendwelche umständlichen Workarounds basteln muss, stelle ich hier einfach mal ein Feature Request. Vielleicht lässt sich da ja was im Zuge der geplanten Änderungen bei KNX was machen.

Ich würde mir wünschen, dass es für KNX-Instanzen eine Option gibt, dass der Status der jeweiligen Instanz nur dann aktualisiert wird, wenn auf fest definierten Gruppenadressen ein Telegramm empfangen wird.

Momentan ist es so, dass die Statusvariable immer mit dem Wert beschrieben wird, der zuletzt auf der Haupt-Gruppenadresse oder einer der weiteren Gruppenadressen („Mehr“) empfangen wurde.
Verhindert man KNX-seitig eine Reaktion auf ein Telegramm, weil der Aktor z.B. gesperrt ist, führt dies zu falschen Status innerhalb von IPS.

Beispiel

Ein Schaltaktor schaltet bei einem Telegramm auf der GA 1/1/1 und sendet seinen Status auf der GA 1/1/2.
Sende ich ein Telegramm zum Schalten auf 1/1/1, aktualisiert IPS den Status aufgrund dieses Telegramms, unabhängig davon, ob der Aktor wirklich geschaltet hat oder nicht.
Habe ich den Aktor intern gesperrt und sende ein Telegramm auf 1/1/1, ändert sich der Status in IPS, obwohl der Aktor gar nicht geschaltet hat. Würde IPS stattdessen den Status nur aktualisieren, wenn auf der GA 1/1/2 ein Telegramm empfangen wird, wäre der Status in IPS immer korrekt.

Konkret stelle ich mir vor, dass man die Haupt-GA der Instanz für das Empfangen optional auslassen kann und nur die Adressen unter „Mehr“ für den Empfang berücksichtigt. Noch besser wäre, wenn man explizit Status-GAs definieren könnte, anhand derer sich der Status ändern kann. Denn auch auf den Adressen unter „Mehr“ können potenziell Telegramme Empfangen werden, die gar nicht dem realen Status eines Gerätes entsprechen (z.B. bei Zenral-Aus-Adressen, die unter „Mehr“ aufgeführt sind).

Alternativ könnte man nach jedem empfangenen Telegramm ein EIB_Request senden, was jedoch zu einer erhöhten Buslast führen würde und daher nicht zu empfehlen ist.

Die gängigen KNX-Aktoren bieten in der Regel nur die Möglichkeit, den Status zyklisch oder bei Änderung zu senden. Daher erfolgt bei einem gesperrten AKtor in der Regel kein Status-Telegramm, da eben keine Änderung stattgefunden hat. Zyklische Meldungen sind wenig hilfreich, da sie ebenfalls die Buslast erhöhen und der Status dann zumindest bis zum nächsten zyklischen Senden falsch wäre.

Gruß
Slummi

Ich habe / hatte exakt das gleiche Problem. Allerdings habe ich mir Workarounds gebastelt, z.B. mache ich das Toggeln einer Lampe abhängig von dem Wert der Status-GA.
Die oben beschriebene Lösung wäre mir natürlich deutlich lieber, auch wenn ich den Performance-Gewinn nicht wirklich sehe.

Viele Grüße
Sven

Hi Slummi,

danke für die ausführliche Beschreibung. Ich habe mir das eben noch einmal angesehen… und festgestellt, dass du dein Wunschverhalten bekommst, wenn du einfach den Haken bei „Empfangen“ entfernst. Dann werden nämlich die „Mehr?“ GAs empfangen, jedoch die Haupt GA nicht. (Ich sollte in der Konsole den Hinweistext etwas verbessern, denn das wird daraus nicht klar.)

paresy

Hi paresy,

da arbeitet man seit Jahren mit IPS und KNX, aber das wäre das letzte, worauf ich gekommen wäre.
Danke für den Tipp!

Die Beschreibungen / Doku könnten in der Tat etwas genauer sein. :wink: Auch für den Button „Mehr?“ gebe es sicher eine passendere Bezeichnung. :smiley:

Ein Punkt funktioniert durch das Entfernen des Empfangen-Hakens allerdings nicht.
Wenn das „ignorierte“ KNX-Telegramm von IPS ausgeht, ändert sich der Status weiterhin.

Also wenn ich z.B. ein EIB_Switch() ausführe, obwohl der Aktor gesperrt ist, setzt IPS die Status-Variable, auch wenn nicht geschaltet wurde. Das fange ich zwar meist dadurch ab, dass zumindest im Webfront bei gesperrten Aktoren keine Aktionen ausführbar sind, aber das ist nicht in jedem Fall möglich und verhindert auch nicht das Ausführen in Skripten etc.

Vielleicht könnt ihr euch das bei Gelegenheit noch mal anschauen? Bei EnOcean habt ihr das ja auch gelöst, dass man wählen kann, ob die Status-GA immer aktualisiert wird oder nur, wenn geschaltet wurde.

Auf jeden Fall bringt mich das schon mal ein ganzes Stück weiter!
Jetzt muss ich nur noch darauf achten, dass beim Anlegen einer neuen KNX-Instanz nicht aus versehen von IPS eine Gruppen-GA (Zentral-Aus etc.) unter mehr eingetragen wird. Aber das ist ja das kleinste Problem, wenn man es weiß.

Gruß
Slummi

Prima, das ist gut zu wissen!

Leider funktioniert dieser Weg für Jalousien nicht, weil es die „Empfangen“-Checkboxen dort nicht gibt. Gerade bei Jalousien fände ich es tatsächlich sinnvoll, weil die häufiger mal gesperrt werden.

Ich muss diesen alten Thread noch mal hoch holen, weil ich gerade wieder mit falschen KNX-Status kämpfe.

Das Thema wurde ja schon in mehreren Threads behandelt, u. a. hier: Stausobjekt bei Ein- und Ausschaltverzögerung - #32 von Slummi

Also bei mir ist es nach wie vor so (oder jetzt wieder?), dass bei einem KNX_RequestStatus oder EIB_RequestStatus die Haupt-GA abergefragt wird und nicht die optionale(n) GAs. Das ändert sich auch nicht, wenn ich „Empfangen“, wie von @paresy beschrieben deaktiviere. Der Request geht laut Gruppenmonitor immer noch eindeutig an die Haupt-GA und nicht an die optionale GA.

Ich habe jetzt erst mal für die KOs der Haupt-GA das Leseflag entfernt. Somit sendet mir der Aktor zumindst keinen falschen Status. Allerdings kann ich damit den Status gar nicht mehr abfragen. Aber immer noch besser als ein falscher Status.

@paresy Könnt ihr noch mal schauen, warum das (wieder) so ist? Gefühlt packe ich das Thema EIB_Request / KNX_Request jedes Jahr erneut an.

Getestet habe ich heute übrigens mit KNX DPT 232 und Legacy EIS6.

Und bevor jetzt wieder jemand damit um die Ecke kommt: Nein, ich möchte für die Status-GA keine eigene Instanz einrichten, sondern eine Instanz über die ich schalten und den Status nach meinen Wünschen abfragen kann. :wink:

Gruß
Slummi

Aber einfach nur die Zusatz GA abfragen ist ja auch nicht ausreichend. Ich habe in vielen Geräten 4-5 zustätzliche GAs eingestellt. Welche wird dann abgefragt? Ich sprach mich ja schonmal dafür aus, alle GAs im ersten Schritt gleichberechtigt zu handhaben und diese auf mehrere virtuelle KOs innerhalb des Gerätes zu verteilen.

Klar, das kann vorkommen und wurde ja auch schon häufig diskutiert. Im Idealfall kann man es halt vorgeben, welche GA man abfragen will. Da ich sehr konsequent mit den Status-GAs arbeite, haben meine Instanzen in der Regel auch nur eine optionale GA. Das ist ja eigentlich auch der Sinn hinter dem Status, dass man einen eindeutigen Wert bekommt.

Aber mal unabhängig davon hatte paresy ja geschrieben, dass man durch das Deaktivieren der Empfangsoption die optionalen GAs abfragen kann (wie auch immer die genaue Logik im Falle mehrerer GAs ist). Aber das funktioniert eben nicht. Egal wie ich die Optionen in der Instanz setze, das GroupValue_Read kommt immer auf der Haupt-GA. :frowning: