NEWS
Script erwartet String statt Boolean
-
Hallo, ich habe eine Gosund- Steckdose mit Tasmota geflasht und mit mqtt eingebunden.
Ich möchte sie nun mit einem Aquara-Schalter ein- und ausschalten. Das Ganze per Blockly.
Bis vor einiger Zeit hat das auch funktioniert, aber jetzt gibts nur noch diesen Fehler:at script.js.common.1.Wohnzimmer-Leiste:5:7 javascript.0 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1439:20) javascript.0 warn You are assigning a boolean to the state "mqtt.0.cmnd.Wohnzimmer-Media.POWER" which expects a string. Please fix your code to use a string or change the state type to boolean. This warning might become an error in future versions.
MOD-Edit: Code in code-tags gesetzt!
Unter "mqtt - cmnd-Wohnzimmer-Media" habe ich nur einen Wert mit dem Namen "Power".
Dieser ist vom Typ "State" und von der Rolle "Variable".Gab es irgendein Update welches diesen Fehler jetzt provoziert?
Wie kann ich den Stecker wieder schalten? -
@ralle1 sagte in Script erwartet String statt Boolean:
Fehler
Nein, Warnung! Zitat:
This warning might become an error in future versions.
Dieser ist vom Typ "State"
Was steht im Objekt unter
common
->type
? Ich wette "string". -
@ralle1 Ändere einfach den Datentyp in Boolean und gut ist. Oder halt umgekehrt - je nachdem was Du brauchst.
-
-
@ralle1 Jap, Zeichenkette ("string"). Du schreibst einen Logikwert ("boolean") rein. Das ist nicht korrekt.
-
@ralle1 In der Warnung steht aber dass Du ein Boolean schreibst, also musst auch den Datenpunkt auf Boolean ändern.
-
@mickym Okay, wie ändere ich ihn denn?
Wenn ich auf editieren gehe, kann ich nirgends Boolean auswählen.
Objektdaten:{ "common": { "name": "cmnd/Wohnzimmer-Media/POWER", "write": true, "read": true, "role": "variable", "desc": "mqtt client variable", "type": "string" }, "native": { "topic": "cmnd/Wohnzimmer-Media/POWER" }, "type": "state", "_id": "mqtt.0.cmnd.Wohnzimmer-Media.POWER", "acl": { "object": 1636, "state": 1636, "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1631880241896 }
-
-
@ralle1 sagte in Script erwartet String statt Boolean:
kann ich nirgends Boolean auswählen.
du bist ja auch in dem RAW (nur für Experten)
diese Experten wissen, dass sie@ralle1 sagte in Script erwartet String statt Boolean:
"type": "string"
in
"type": "boolean"
ändern müssten.oder du gehst -wie die anderen gezeigt haben- auf die StandardTabs
-
Okay, danke für Eure Hilfe, ich werde es nachher gleich testen
-
Habe es eben getestet. Beim ausführen des Skripts schaltet er jetzt ein;
aber leider schaltet er auch sofort wieder aus.So sieht mein Objekt jetzt aus:
Und die Objektdaten:
{ "common": { "name": "cmnd/Wohnzimmer-Media/POWER", "write": true, "read": true, "role": "variable", "desc": "mqtt client variable", "type": "boolean" }, "native": { "topic": "cmnd/Wohnzimmer-Media/POWER" }, "type": "state", "_id": "mqtt.0.cmnd.Wohnzimmer-Media.POWER", "acl": { "object": 1636, "state": 1636, "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1631889614944 }
Das Blockly dazu:
-
@ralle1 sagte in Script erwartet String statt Boolean:
aber leider schaltet er auch sofort wieder aus.
klar - das Script tut was es soll
Sobald der Zustand geändert wird schaltet er um
(wobei ich natürlich nicht zu 100% weiß was buttonpressed liefert. Ich gehe von true aus wenn gedrückt und beim loslassen auf false)
-
@homoran Das ist ein Aquara-Schalter. Er liefert beim Drücken den Wert von 1002 und beim Loslassen dann wieder
den Ursprungswert 0.
Das führt dann wohl zum zweiten Umschalten.
Habe jetzt auf "Lastupdated" gesetzt und jetzt schaltet er nur noch einmal.Ich war eigentlich sicher, dass es vorher immer mit dem "Buttonpressed" funktioniert hat. Hmmm
Aber jetzt geht es, danke. -
@ralle1 sagte in Script erwartet String statt Boolean:
Er liefert beim Drücken den Wert von 1002 und beim Loslassen dann wieder
den Ursprungswert 0.Dann setz den Auslöser am besten auf ist 1002, statt "wurde geändert"