NEWS
OpenKNX Adapter funktioniert nicht mit ACK
-
Hallo zusammen,
ich habe zuhause KNX und auch ioBroker und wollte gerne beide über Skripte miteinander für verschiedene Steuerungsaufgaben verheiraten. Bspw. Philips Hue Lampen über KNX-Taster einschalten bzw. Szenen-Steuerung, die eben auch neben Licht und Raffstores auch TV-Geräte einschalten können soll.
Die Änderungen auf dem KNX-Bus bekomme ich von meinem Router auch nach OpenKNX geliefert und kann entsprechend auch darauf reagieren. Wenn ich allerdings vom OpenKNX-Adapter eine Änderung auf den KNX-Bus schicken will, muss ich dies über eine unbestätigte Änderung via setState machen, da anderenfalls gar nichts passiert.
Jetzt nutze ich aus Faulheit Blockly, aber hier wird immer JS-Code generiert, der bestätigte Änderungen generiert, was eben nicht verarbeitet wird.Vermutlich ist es ja kein Fehler in Blockly, sondern irgendwo bei mir. Kann mir da jemand weiterhelfen?
Test-Code von Blockly (umgebaut wegen ACK) wäre nun:
on({id: "openknx.0.Szenen.Multimedia.Szene_Wohnzimmer_TV"/*Szene Wohnzimmer TV*/, change: "any", ack: true}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log('test'); setState("openknx.0.Beleuchtung.Schalten_(Ein_Aus__1_Bit).EG_-_Wohnzimmer_-_Deckenlampe_-_Schalten"/*EG - Wohnzimmer - Deckenlampe - Schalten*/, true, false); });
Im ioBroker-Log stehen weder Warnungen noch Fehler.
-
@wolpertinger
setState() sendet mit ack = false (Block "steuere"). -
@wolpertinger sagte in OpenKNX Adapter funktioniert nicht mit ACK:
Wenn ich allerdings vom OpenKNX-Adapter eine Änderung auf den KNX-Bus schicken will, muss ich dies über eine unbestätigte Änderung via setState machen, da anderenfalls gar nichts passiert.
Ja, das ist ja auch das normale ioBroker-Verhalten und so arbeiten alle Adapter: https://www.youtube.com/watch?v=p5FyeifYUnw
Jetzt kommt es darauf an, worauf Du in Blockly reagieren willst:
- Deine (eventuell noch nicht ausgeführte) Ansteuerung - dann ack: false
- Auf Änderungen, welche von Adapter-Seite wirklich durchgeführt wurden - dann ack: true
-
@paul53 Ok, danke. Also einfach den falschen Blockly-Block erwischt für mein Vorhaben.