NEWS
Blockly-Noob - DP wie ansprechen...
-
Wie spreche ich am besten diesen Datenpunkt in einem Blockly an:

Ich experimientiere mit diesem Blockly:

Ist 'aktualisiere mit 100' der beste Ansatz in dem Fall?
@Thomas-Braun sagte: Ist 'aktualisiere mit 100' der beste Ansatz in dem Fall?
Nein, Adapter-Datenpunkte müssen mit "steuere" geschrieben werden, damit sie gesendet werden.
Wie kann ein Datenpunkt mit der Rolle "button" einen Zahlenwert (100) enthalten? Er müsste vom Typ "boolean" und "write only" sein.
Passen sollte "steuere Trigger press mit wahr". -
@Thomas-Braun sagte: Ist 'aktualisiere mit 100' der beste Ansatz in dem Fall?
Nein, Adapter-Datenpunkte müssen mit "steuere" geschrieben werden, damit sie gesendet werden.
Wie kann ein Datenpunkt mit der Rolle "button" einen Zahlenwert (100) enthalten? Er müsste vom Typ "boolean" und "write only" sein.
Passen sollte "steuere Trigger press mit wahr".@paul53 sagte in Blockly-Noob - DP wie ansprechen...:
Wie kann ein Datenpunkt mit der Rolle "button" einen Zahlenwert (100) enthalten?
Keine Ahnung. Das wird wohl so vom Adapter/der API kommen...
-
@paul53 sagte in Blockly-Noob - DP wie ansprechen...:
Wie kann ein Datenpunkt mit der Rolle "button" einen Zahlenwert (100) enthalten?
Keine Ahnung. Das wird wohl so vom Adapter/der API kommen...
@Thomas-Braun sagte: Das wird wohl so vom Adapter/der API kommen...
... oder dass du mit "aktualisiere" den Wert 100 geschrieben hast, was allerdings zu einer Warnung geführt haben muss, wenn der DP korrekt konfiguriert ist. Schau mal die OBJEKTDATEN des DP an.
-
@Thomas-Braun sagte: Das wird wohl so vom Adapter/der API kommen...
... oder dass du mit "aktualisiere" den Wert 100 geschrieben hast, was allerdings zu einer Warnung geführt haben muss, wenn der DP korrekt konfiguriert ist. Schau mal die OBJEKTDATEN des DP an.
@paul53
Ich hab die Datenpunkte jetzt mal alle gelöscht und frisch per Instanzneustart eingelesen:{ "type": "state", "common": { "name": "Trigger press", "type": "number", "role": "button", "read": true, "unit": "", "write": true }, "from": "system.adapter.switchbot-hub.0", "user": "system.user.admin", "ts": 1769287007378, "_id": "switchbot-hub.0.DC2BC51B4688.press", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } -
@paul53
Ich hab die Datenpunkte jetzt mal alle gelöscht und frisch per Instanzneustart eingelesen:{ "type": "state", "common": { "name": "Trigger press", "type": "number", "role": "button", "read": true, "unit": "", "write": true }, "from": "system.adapter.switchbot-hub.0", "user": "system.user.admin", "ts": 1769287007378, "_id": "switchbot-hub.0.DC2BC51B4688.press", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }@Thomas-Braun
"type": "number" / "role": "button" widersprechen sich. Was soll der DP bewirken? -
@Thomas-Braun
"type": "number" / "role": "button" widersprechen sich. Was soll der DP bewirken?Der löst einen SwitchBot aus:
https://eu.switch-bot.com/products/switchbot-botAlso ein Button. Ich hab jetzt den type auf boolean geändert.
Jetzt sind zwar die Meldungen dazu weg, dafür löst das Skript nun warum auch immer selber aus:2026-01-24 22:03:04.437 - info: javascript.0 (422976) script.js.common.treppenhaus_licht_hub: BWM-Treppenhaus oder Klingel wurde ausgelöst 2026-01-24 22:03:04.437 - warn: javascript.0 (422976) You are assigning a boolean to the state "switchbot-hub.0.DC2BC51B4688.press" which expects a number. Please fix your code to use a number or change the state type to boolean. This warning might become an error in future versions. 2026-01-24 22:03:04.440 - warn: javascript.0 (422976) at setState (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:2661:20) 2026-01-24 22:03:04.440 - warn: javascript.0 (422976) at Object.<anonymous> (script.js.common.treppenhaus_licht_hub:8:5) 2026-01-24 22:03:04.441 - warn: javascript.0 (422976) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:1772:38) 2026-01-24 22:03:04.441 - warn: javascript.0 (422976) at JavaScript.onStateChange (/opt/iobroker/node_modules/iobroker.javascript/src/main.ts:752:25) 2026-01-24 22:03:04.441 - warn: javascript.0 (422976) at JavaScript.emit (node:events:508:28) 2026-01-24 22:03:04.441 - warn: javascript.0 (422976) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11163:53) 2026-01-24 22:03:04.441 - warn: javascript.0 (422976) at processImmediate (node:internal/timers:504:21) 2026-01-24 22:03:04.442 - info: javascript.0 (422976) script.js.common.treppenhaus_licht_hub: Lichtschalter wurde vom ioBroker-Skript ausgelöst 2026-01-24 22:03:04.453 - info: javascript.0 (422976) State value to set for "switchbot-hub.0.DC2BC51B4688.press" has to be type "number" but received type "boolean" 2026-01-24 22:04:48.888 - info: switchbot-hub.0 (768645) Connected to SwitchBot API found 7 devices 2026-01-24 22:04:49.446 - info: switchbot-hub.0 (768645) All devices and values loaded, adapter ready 2026-01-24 22:13:03.092 - info: javascript.0 (422976) script.js.common.treppenhaus_licht_hub: BWM-Treppenhaus oder Klingel wurde ausgelöst 2026-01-24 22:13:03.092 - info: javascript.0 (422976) script.js.common.treppenhaus_licht_hub: Lichtschalter wurde vom ioBroker-Skript ausgelöst -
@Thomas-Braun
"type": "number" / "role": "button" widersprechen sich. Was soll der DP bewirken?Ich hab jetzt die Trigger angepasst:

Ergibt das Sinn? Der alte Trigger 'Current ring-state of the Opener' stand immer auf 'true', wurde also nicht 'größer als letztes'. Deswegen nutze ich nun den Timestamp. Der dürfte ja dann 'größer als letztes' sein.
-
Ich hab jetzt die Trigger angepasst:

Ergibt das Sinn? Der alte Trigger 'Current ring-state of the Opener' stand immer auf 'true', wurde also nicht 'größer als letztes'. Deswegen nutze ich nun den Timestamp. Der dürfte ja dann 'größer als letztes' sein.
@Thomas-Braun sagte: Der alte Trigger 'Current ring-state of the Opener' stand immer auf 'true'
Dann mal mit Trigger auf "ist wahr" versuchen. Der triggert auch dann, wenn nur der Zeitstempel aktualisiert wird.
Ein DP, der den Zeitstempel als Wert enthält, ist nur selten verfügbar.Was den Datenpunkt-Typ des DP "press" betrifft, erstelle bitte Issue auf Github.
-
@Thomas-Braun sagte: Der alte Trigger 'Current ring-state of the Opener' stand immer auf 'true'
Dann mal mit Trigger auf "ist wahr" versuchen. Der triggert auch dann, wenn nur der Zeitstempel aktualisiert wird.
Ein DP, der den Zeitstempel als Wert enthält, ist nur selten verfügbar.Was den Datenpunkt-Typ des DP "press" betrifft, erstelle bitte Issue auf Github.
Danke dir! Blockly hab ich angepasst und issue erstellt.
-
@Thomas-Braun sagte: Der alte Trigger 'Current ring-state of the Opener' stand immer auf 'true'
Dann mal mit Trigger auf "ist wahr" versuchen. Der triggert auch dann, wenn nur der Zeitstempel aktualisiert wird.
Ein DP, der den Zeitstempel als Wert enthält, ist nur selten verfügbar.Was den Datenpunkt-Typ des DP "press" betrifft, erstelle bitte Issue auf Github.
Eine KI hat mir folgendes geflüstert:
Die Warnmeldung im ioBroker-Log zeigt an, dass ein boolean-Wert (true/false) an einen State geschrieben wird, der eigentlich einen number-Wert erwartet. Das passiert konkret beim State switchbot-hub.0.DC2BC51B4688.press.
Ursache
Laut der Dokumentation des Adapters:Der Adapter erstellt für SwitchBot-Geräte zwei States: press (für das Auslösen eines Drucks) und state (für On/Off).
Wenn das Gerät im Press-Modus betrieben wird, ist der state-Wert nicht relevant, und der press-State sollte als boolean (true/false) interpretiert werden.
Wenn das Gerät im Switch-Modus betrieben wird, sollte der press-State eigentlich als number (z.B. 0/1) interpretiert werden, um den Status korrekt widerzuspiegeln.
Lösung
Du hast zwei Möglichkeiten, um die Warnung zu beheben:- State-Typ im ioBroker anpassen
Gehe in die ioBroker-Objektverwaltung.
Suche den State switchbot-hub.0.DC2BC51B4688.press.
Ändere den common.type des States von number auf boolean.
Speichere die Änderungen und starte den Adapter neu.- Skript anpassen (falls du den State selbst setzt)
Falls du in einem Skript (z.B. JavaScript) den State switchbot-hub.0.DC2BC51B4688.press setzt, passe den Code so an, dass er einen number-Wert (z.B. 1 für true, 0 für false) statt eines booleans verwendet:
// Statt: setState("switchbot-hub.0.DC2BC51B4688.press", true);// Verwende: setState("switchbot-hub.0.DC2BC51B4688.press", 1);- mache ich ja momentan, aber das muss ich bei einem Neustart ja immer wieder machen. Nervt... :-)
Wie kann man denn 2) in einem Blockly verwenden? Oder muss ich dafür ein reines skript laufen lassen?