NEWS
SetState sendet falschen Wet auf den KNX Bus
-
Hallo zusammen,
ich nutze den KNX Adapter und möchte mittels JS KNX Telegramme absetzen.
Generell funktioniert das, nur bei einem Objekt mit dem DPT232.600 (RGB Wert als 3 Byte) komme ich nicht weiter.
Wenn ich über die UI einen Wert setze (z.B. 4456448 entspricht in 3 Byte dem Hex RGB Wert #440000), dann kommt dies so auch auf dem KNX Bus an.
Hier das Ergebnis der UI Eingabe. Ergebnis, so wie ich es aus meiner Sicht sein soll.
Setze ich den Wert nun über setState im JS, dann landet auf dem Bus der Wert "000005".
setState("knx.0.Wohnzimmer.Deckenspots.LED_HSV_Setzen", (4456448).toString());
Der JS command führt zu folgendem Telegramm auf dem KNX Bus:
Mache ich hier etwas falsch oder was könnte hier das Problem sein?
Wäre super, wenn ihr mir hier weiterhelfen könnt!
Grüße
Felix
-
-
Hast Du es mal ohne .toString() versucht ?
Ja habe ich, dann wir kein Wert in der UI angezeigt und auch 0x00000 auf den Bus gesendet.
Hier noch ein Screenshot von dem Telegramm ohne toString.
-
@felixnb
... und mit .toString(16) ? -
.toString(16)
Dann landet in der UI wieder die 440000 (wie erwartet) und aber auf dem Bus ein 0x000000. Gleiches Verhalten, wie ohne toString
-
@felixnb sagte:
dann wir kein Wert in der UI angezeigt
Das kann nicht sein.
setState("knx.0.Wohnzimmer.Deckenspots.LED_HSV_Setzen", 4456448);
muss den Wert in den Datenpunkt schreiben (evtl. mit Warnung).
Trigger mal den DP und logge den Wert:setState("knx.0.Wohnzimmer.Deckenspots.LED_HSV_Setzen", 4456448); on({id: "knx.0.Wohnzimmer.Deckenspots.LED_HSV_Setzen"}, function(dp) { log(dp.state.val); });
-
setState("knx.0.Wohnzimmer.Deckenspots.LED_HSV_Setzen", 4456448);
Habe es nochmal ausgeführt. In der UI steht kein Wert, im Log kein Fehler und auf dem KNX Bus ein 0x000000.
Habe auch schon "#440000" und das ganze als binary rein geschrieben, hat aber auch keinen Erfolg gebracht.
Hast du noch eine Idee?
-
Trigger mal den DP und logge den Wert:
Habe 1:1 deinen code ausgeführt. Im Log steht auch kein Wert:
(22206) script.js.common.ColorConversion:
-
@felixnb sagte:
Im Log steht auch kein Wert:
Auch nicht im Tab "Log" ? Dann starte mal ioBroker neu, denn da ist was faul.
-
Ja, auch nicht unter Log. ioBroker neu gestartet, gleiches Problem. Im Log steht immer noch kein Wert. Also wenn ich das wie folgt ausführe:
setState("knx.0.Wohnzimmer.Deckenspots.LED_HSV_Setzen", 4456448);
-
@felixnb sagte:
Im Log steht immer noch kein Wert. Also wenn ich das wie folgt ausführe:
Das Log wird erst durch den Code mit dem Trigger (on) erzeugt.
-
Sorry, meine Antwort war unpräzise. Habe den Event handler mit drinnen gelassen.
Also das hier ausgeführt:
setState("knx.0.Wohnzimmer.Deckenspots.LED_HSV_Setzen", 4456448); on({id: "knx.0.Wohnzimmer.Deckenspots.LED_HSV_Setzen"}, function(dp) { log(dp.state.val); });
-
@felixnb
Erfolgt kein Log oder nur ein Log ohne Wert ? -
Es wird ein Log Eintrag erzeugt, aber ohne Wert. Siehe
@felixnb said in SetState sendet falschen Wet auf den KNX Bus:
Trigger mal den DP und logge den Wert:
Habe 1:1 deinen code ausgeführt. Im Log steht auch kein Wert:
(22206) script.js.common.ColorConversion:
-
@felixnb
Erweitere mal das Log (eigentlich müssten 2 erfolgen: Erst mit ack: false und dann mit ack: true).setState("knx.0.Wohnzimmer.Deckenspots.LED_HSV_Setzen", 4456448); on({id: "knx.0.Wohnzimmer.Deckenspots.LED_HSV_Setzen"}, function(dp) { log('Wert: ' + dp.state.val + ', Ack: ' + dp.stat.ack + ', Ursprung: ' + dp.state.from); });
-
Es wird 1 Log Eintrag erzeugt:
(821) script.js.common.ColorConversion: LED_HSV: , Ack: false, Ursprung: system.adapter.javascript.0
Ein zweiter Log Eintrag wird nicht erzeugt.
Kann es sein, dass der KNX Adapter den Wert nicht "annimmt" und verwirft?
-
@felixnb sagte:
Kann es sein, dass der KNX Adapter den Wert nicht "annimmt" und verwirft?
Dann würde erst mit ack: true der Wert "verworfen". Aber der Wert erscheint gar nicht erst im Datenpunkt. Poste bitte die RAW-Ansicht der Objekteigenschaften des DP in Code tags.
-
@paul53 said in SetState sendet falschen Wet auf den KNX Bus:
Objekteigenschaften
{ "from": "system.adapter.knx.0", "user": "system.user.admin", "ts": 1609163390261, "common": { "name": "LED HSV Setzen", "type": "mixed", "role": "value", "unit": "", "max": "", "min": "", "read": false, "write": true, "update": true }, "native": { "dpt": "DPT232.600", "address": "1/0/0", "addressRefId": "P-056B-0_GA-12", "statusGARefId": "", "actGARefId": "", "objRef": "O-67_R-118", "devName": "M-0083_A-0040-24-52B5", "devInst": "P-056B-0_DI-2", "objectSize": "" }, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "knx.0.Wohnzimmer.Deckenspots.LED_HSV_Setzen", "type": "state" }
-
@felixnb
Da haben wir den Salat: Lösche mal die Zeilen "min" und "max" raus.
Der Adapter ist "schlampig" programmiert. -
Da haben wir den Salat: Lösche mal die Zeilen "min" und "max" raus.
--> Vielen Dank dir! Das hat geklappt!
Der Adapter ist "schlampig" programmiert.
--> Habe den code zum Adapter gar nicht gefunden, sodass ich daraus einen PR machen könnte. Sofern ich mich im Code zurecht finden würde