Das war mir oben leider durchgerutscht. Es ist extrem wichtig, GA nicht doppelt anzugeben, wenn es dafür keinen triftigen Grund gibt. Insbesondere gilt das für "ankommende" GA, da das knx Addon die Tabelle der Connections nur so lange durchläuft, bis es auf den ersten passenden Eintrag trifft.
Ich gehe davon aus, dass das Modul korrekt verbaut und konfiguriert ist, und dass es direkt am knx Bus problemlos funktioniert (also unabhängig von openHAB).
Dann sollte die funktionierende Konfiguration eher so aussehen:
Things:
Code: Alles auswählen
Thing device Garagentor @ "KNX"[
address="1.1.201",
pingInterval=600
] {
Type rollershutter : open_close "Tor auf-zu" [upDown="3/3/20",stopMove="3/3/21"]
Type switch : lueftung "Tor Lüftung" [ga="3/3/22+<3/3/28"]
Type switch : licht "Tor Licht" [ga="3/3/23+<3/3/33"]
Type contact : status_offen "Garagentor offen" [ga="<3/3/24"]
Type contact : status_zu "Garagentor zu" [ga="<3/3/25"]
Type contact : status_bewegung "Garagentor Bewegung" [ga="<3/3/29"]
Type contact : status_bewegung_auf "Garagentor Bewegung auf" [ga="<3/3/30"]
Type contact : status_bewegung_zu "Garagentor Bewegung zu" [ga="<3/3/31"]
}
Für den rollershutter Channel gibt es keine gültige position als GA!
Für die Lüftungsstellung und das Licht gilt aber, dass die Rückmeldung wunderbar in den passenden Channel integriert werden kann. Die weiteren Status sind alle 1Bit-KO, man könnte hier auch switch Channel verwenden. Falls die GA nicht lesbar sind, müsste natürlich das < jeweils entfernt werden.
Der Status Error sollte laut Handbuch nicht mit einer GA verbunden werden.
Dazu passend die Items:
Code: Alles auswählen
Rollershutter Garagentor "Garagentor [%d %%]" <garagedoor> (gGA, gRO, gGaragentor) {channel="knx:device:bridge:Garagentor:open_close", autoupdate="false"}
Switch Garagentor_lueftung "Tor Lüftung [%s]" (gGaragentor) {channel="knx:device:bridge:Garagentor:lueftung", autoupdate="false"}
Switch Garagentor_licht "Tor Licht [%s]" (gGaragentor) {channel="knx:device:bridge:Garagentor:licht", autoupdate="false"}
Contact Garagentor_status_offen "Garagentor offen [%s]" (gGaragentor) {channel="knx:device:bridge:Garagentor:status_offen"}
Contact Garagentor_status_zu "Garagentor zu [%s]" (gGaragentor) {channel="knx:device:bridge:Garagentor:status_zu"}
Contact Garagentor_status_bewegung "Garagentor Bewegung [%s]" (gGaragentor) {channel="knx:device:bridge:Garagentor:status_bewegung"}
Contact Garagentor_status_bewegung_auf "Garagentor Bewegung auf [%s]" (gGaragentor) {channel="knx:device:bridge:Garagentor:status_bewegung_auf"}
Contact Garagentor_status_bewegung_zu "Garagentor Bewegung zu [%s]" (gGaragentor) {channel="knx:device:bridge:Garagentor:status_bewegung_zu"}
String Garagentor_status "Garagentor [%s]"
Ich habe hier ein virtuelles Item Garagentor_status für die Anzeige der Status vorgesehen. Dazu braucht es dann noch eine Rule, die sich auch gleich um den Status des Rollershutter Items kümmern kann:
Code: Alles auswählen
rule "Update Garage Status"
when
Item Garagentor_status_offen changed or
Item Garagentor_status_zu changed or
Item Garagentor_lueftung changed or
Item Garagentor_status_bewegung changed or
Item Garagentor_status_bewegung_auf changed or
Item Garagentor_status_bewegung_zu changed
then
var Integer nPos = null
var String strStat = "zwischendrin"
if(Garagentor_status_offen.state == CLOSED) {
nPos = 0
strStat = "offen"
}
if(Garagentor_status_zu.state == CLOSED) {
nPos = 100
strStat = "geschlossen"
}
if(Garagentor_status_lueftung.state == CLOSED) {
nPos = 80
strStat = "lüftet"
}
if(Garagentor_status_bewegung_auf.state == CLOSED) {
strStat = "öffnet"
}
if(Garagentor_status_bewegung_zu.state == CLOSED) {
strStat = "schließt"
}
Garagentor.postUpdate(if(nPos instanceof Number) nPos else NULL)
Garagentor_status.postUpdate(strStat)
end