ich migriere gerade meine OH2 Installation auf OH3. Gleichzeitig implementiere ich meine bestehenden DSL Regeln neu in JavaScript. Beim Schreiben von KNX-Szenen transportiert das KNX Bindung meine Skript Befehle aber nicht auf den Bus, währende openHAB allerdings Veränderungen der KNX Szenen vom Bus tadellos empfängt. Ich habe folgende Konfiguration:
KNX Thing mit einem Szenen Channel Typ Number:
... daran hängt ein Item Typ Number (... hmm, warum wir der Screenshot so klein angezeigt, naja egal...)
wenn ich die Szenen an einem Taster (also ohne openHAB) durchschalte, kann ich in den openHAB Logs Folgendes sehen:
Code: Alles auswählen
Item 'KNXLichtEGWohnzimmerSzene' changed from 1.0 to 2.0
Item 'KNXLichtEGWohnzimmerSzene' changed from 2.0 to 5.0
...
Code: Alles auswählen
events.postUpdate("KNXLichtEGWohnzimmerSzene", 4.0);
Code: Alles auswählen
Item 'KNXLichtEGWohnzimmerSzene' changed from 5.0 to 4
Auffällig ist natürlich, dass openHAB die von KNX gesendeten Kommandos im Log als Float darstellt, die von openHAB selbst ausgesendeten Ziffern allerdings als Integer. Ich bin mir nicht sicher, ob hier vielleicht das Problem liegt, und das KNX-Bus Gateway den Befehl aufgrund eines falschen Formats direkt ablehnt. Ein erzwungenes casten auf Float im Code ändert daran übrigens nichts. Mit folgendem Code
Code: Alles auswählen
events.postUpdate("KNXLichtEGWohnzimmerSzene", parseFloat("4.0"));
Unter openHAB 2.5 hat mit folgender Regel in DSL alles reibungslos funktioniert, an der Konfiguration im Bus habe ich nichts geändert:
Code: Alles auswählen
rule "Wohnzimmer Szene Essen"
when
Item KNXLichtEGWohnzimmerSzene received command
then
if (receivedCommand == ON) {
KNXLichtEGWohnzimmerSzene.sendCommand(0)
}
else if (receivedCommand == OFF) {
KNXLichtEGWohnzimmerSzene.sendCommand(5)
}
end
Gruß,
Kuczerek