Tipp: speziell bei then Channels sollte man darauf achten, möglichst wenig Redundanz zu etablieren
knx.things:
Code: Alles auswählen
Thing device zehnder "Lüftungsanlage" @ "Technikraum" [
address="1.0.31",
fetch=false,
pingInterval=600,
readInterval=0
] {
Type number : ventPreset "Ventilation Preset Status" [ ga="5.001:5/5/10" ]
Type number : ventPresetSet "Ventilation Preset Set" [ ga="5.010:5/6/10" ]
Type switch : ventPresetAway "Ventilation Preset Away Status" [ ga="1.001:5/5/20" ]
Type switch : ventPreset1 "Ventilation Preset 1 Status" [ ga="1.001:5/5/30" ]
Type switch : ventPreset2 "Ventilation Preset 2 Status" [ ga="1.001:5/5/40" ]
Type switch : ventPreset3 "Ventilation Preset 3 Status" [ ga="1.001:5/5/50" ]
Type switch : ventPresetAwaySet "Ventilation Set Preset Away" [ ga="1.001:5/6/20" ]
Type switch : ventPreset1Set "Ventilation Set Preset 1" [ ga="1.001:5/6/30" ]
Type switch : ventPreset2Set "Ventilation Set Preset 2" [ ga="1.001:5/6/40" ]
Type switch : ventPreset3Set "Ventilation Set Preset 3" [ ga="1.001:5/6/50" ]
Type switch : autoMode "Automatic Mode Status" [ ga="1.001:5/5/60" ]
Type switch : autoModeSet "Enable Automatic Mode" [ ga="1.001:5/6/60" ]
Type number : tempProfileMode "Temperature Profile Status" [ ga="5.010:5/5/70" ]
Type number : tempProfileModeSet "Set Temperature Profile" [ ga="5.010:5/6/70" ]
Type number : tempProfile "Temperature Profile Status" [ ga="5.010:5/5/80" ]
Type number : tempProfileSet "Set Temperature Profile" [ ga="5.010:5/6/80" ]
Type switch : boost "Boost Partytimer Status" [ ga="1.001:5/5/100" ]
Type switch : boostSet "Enable Boost Partytimer" [ ga="1.001:5/6/100" ]
Type number : boosttime "Partytimer Value" [ ga="7.005:5/5/110" ]
Type number : boosttimeSet "Set Partytimer Value" [ ga="7.005:5/6/110" ]
Type switch : awayFunction "Away Function Status" [ ga="1.001:5/5/120" ]
Type switch : awayFunctionSet "Set Away Function" [ ga="1.001:5/6/120" ]
Type switch : standby "Standby Status" [ ga="1.001:5/5/140" ]
Type switch : error "Error Status" [ ga="1.002:5/5/160" ]
Type number : filterReplace "Filter Replace Status" [ ga="7.007:5/5/170" ]
Type switch : filterDirt "Filter Dirt Status" [ ga="1.002:5/5/180" ]
Type number : state "Zehnder Status" [ ga="5.001:5/5/190" ]
Type number : airflow "Airflow Status" [ ga="13.002:5/5/200" ]
Type number : extractTemp "Absaugtemperatur" [ ga="9.001:5/5/211" ]
Type number : exhaustTemp "Ablufttemperatur" [ ga="9.001:5/5/212" ]
Type number : outdoorTemp "Ansaugtemperatur" [ ga="9.001:5/5/213" ]
Type number : supplyTemp "Zulufttemperatur" [ ga="9.001:5/5/214" ]
Type number : extractHum "Absaugfeuchtigkeit" [ ga="9.007:5/5/221" ]
Type number : exhaustHum "Abluftfeuchtigkeit" [ ga="9.007:5/5/222" ]
Type number : outdoorHum "Ansaugfeuchtigkeit" [ ga="9.007:5/5/223" ]
Type number : supplyHum "Zuluftfeuchtigkeit" [ ga="9.007:5/5/224" ]
}
Der erste Punkt ist ein unnötiges Prefix KNX in der Thing UID, denn die Zuordnung zu knx ist schon über das Addon zwingend und steht in jedem Channel Link mit drin.
Der zweite Punkt ist das unnötige Prefix Zehn_ in jedem Channel, denn das Device heißt ja schon zehnder (nicht Zehnder...)
Der dritte Punkt sind die Unterstriche. ENTWEDER CamelCaseSchreibweise ODER Trennung_durch_Unterstriche. Unterstriche in Itemnamen haben eine wichtige Funktion, wenn es um die Verarbeitung der Itemnamen innerhalb von Rules geht. In Channelnamen sorgen sie nur für längere Namen.
Und dann noch Status... Ja, grundsätzlich, ok, aber auch hier ist das eigentlich recht unnötig, was schreibbar ist, wird mit Set markiert, der Rest ist nur lesbar.

Man könnte sogar guten Gewissens Status und Set zu einem Channel zusammenführen

solange beide mit identischen Werten arbeiten, also ein Befehl auf dem Channel zu einer identischen Antwort führt.
Weiterhin: Es ist vollkommen sinnlos, ein readInterval > 0 zu setzen, wenn kein einziger Channel als readable gesetzt ist (das heißt, es müste eine GA im Channel mit < gekennzeichnet sein - dann würde openHAB beim Initialisieren des Things einen Read Request für diese GA schicken und auf Antwort warten. Mit dem readInterval würde dieser Read request zyklisch wiederholt. Es gibt überhaupt nur sehr wenige (meist ältere) knx Devices, für die dieser Parameter wichtig ist, und zwar wenn ein Gerät nicht in der Lage ist, selbst zyklisch oder bei Änderung zu senden (aber gleichzeitig in der Lage ist, korrekt auf Read Requests zu antworten). Ansonsten sollte readInterval immer auf 0 gesetzt werden.
Das Thing könnte also leicht auch so aussehen:
Code: Alles auswählen
Thing device zehnder "Lüftungsanlage" @ "Technikraum" [
address="1.0.31",
fetch=false,
pingInterval=600,
readInterval=0
] {
Type number : ventPreset "Ventilation Preset" [ ga="5.001:5/6/10+<5/5/10" ]
Type switch : ventPresetAway "Ventilation Preset Away" [ ga="1.001:5/6/20+<5/5/20" ]
Type switch : ventPreset1 "Ventilation Preset 1" [ ga="1.001:5/6/30+<5/5/30" ]
Type switch : ventPreset2 "Ventilation Preset 2" [ ga="1.001:5/6/40+<5/5/40" ]
Type switch : ventPreset3 "Ventilation Preset 3" [ ga="1.001:5/6/50+<5/5/50" ]
Type switch : autoMode "Automatic Mode" [ ga="1.001:5/6/60+<5/5/60" ]
Type number : tempProfileMode "Temperatur Profil Modus" [ ga="5.010:5/6/70+<5/5/70" ]
Type number : tempProfile "Temperatur Profil" [ ga="5.010:5/6/80+<5/5/80" ]
Type switch : boost "Boost" [ ga="1.001:5/6/100+<5/5/100" ]
Type number : boosttime "Boost Länge" [ ga="7.005:5/6/110+<5/5/110" ]
Type switch : awayFunction "Abwesenheit" [ ga="1.001:5/6/120+<5/5/120" ]
Type switch : standby "Standby" [ ga="1.001:<5/5/140" ]
Type switch : error "Error" [ ga="1.002:<5/5/160" ]
Type number : filterReplace "Filter Ersetzen" [ ga="7.007:<5/5/170" ]
Type switch : filterDirt "Filter Schmutzig" [ ga="1.002:<5/5/180" ]
Type number : state "Zehnder" [ ga="5.001:<5/5/190" ]
Type number : airflow "Airflow" [ ga="13.002:<5/5/200" ]
Type number : extractTemp "Absaugtemperatur" [ ga="9.001:<5/5/211" ]
Type number : exhaustTemp "Ablufttemperatur" [ ga="9.001:<5/5/212" ]
Type number : outdoorTemp "Ansaugtemperatur" [ ga="9.001:<5/5/213" ]
Type number : supplyTemp "Zulufttemperatur" [ ga="9.001:<5/5/214" ]
Type number : extractHum "Absaugfeuchtigkeit" [ ga="9.007:<5/5/221" ]
Type number : exhaustHum "Abluftfeuchtigkeit" [ ga="9.007:<5/5/222" ]
Type number : outdoorHum "Ansaugfeuchtigkeit" [ ga="9.007:<5/5/223" ]
Type number : supplyHum "Zuluftfeuchtigkeit" [ ga="9.007:<5/5/224" ]
}
Voraussetzungen auf der knx Seite: die GA müssen lesbar sein. Bei den nicht lesbaren GA muss das < entfernt werden, da es sonst zu Timeouts kommt. Ansonsten kann man natürlich auf knx-Seite die KO lesbar setzen

Bei einem guten Teil der GA wird es nicht notwendig sein, den DPT explizit zu setzen und tatsächlich muss man sehr aufpassen, weil das knx Binding manchmal nicht glücklich darüber ist, den Default DPT mitgeteilt zu bekommen

aber grundsätzlich sollte das natürlich nicht stören.
Natürlich ändert sich dadurch auch die Definition der Items, das sollte klar sein.