NEWS
Datentyp (Array, String, Number) wirrwarr
-
Hallo zusammen
Hoffentlich kann mir da jemand auf die Sprünge helfen.
Ich möchtte Meine Rollläden, welche mit einem Shelly gekoppelt sind, auch per Alexa Sprachsteuerung bedienen können.Shelly kommuniziert bei mir per MQTT, was soweit auch zuverlässig läuft.
Ebenfalls konnte ich einen eigen dafür erstellten Datenpunkt als Smart-Gerät anlegen und der Rollladen lässt sich durch ein simples Blockly Script, welches den Datenpunkt an MQTT weiterleitet auch per Alexa steuern. Funktionalität ist daher kein Problem, aber die Logs geben mir hier Fehler aus, welche ich sehr gerne beseitigen möchte.You are assigning a number to the state "javascript.0.Fenster.Rollladen-oben" which expects a string. Please fix your code to use a string or change the state type to number.
Ich habe nun im Blockly Script ebenfalls ausgewählt, dass der Inhalt des Datenpunktes in einen String umgewandelt werden soll, aber der Fehler bleibt bestehen.
Hier noch die Infos zum erstellten Datenpunkt "Rollladen-oben":
-
@wizzardking Das Problem kommt nicht von dem Code-Schnipsel. Es tritt auf, wenn du in den Datenpunkt "javascript.0.Fenster.Rollladen-oben" schreibst.
Laut deiner Definition (Zeile 7) hat das Objekt einen
type: "string"
- anhand der übrigen Eigenschaften wie min/max, müsste der abertype: "number"
haben.Ändere diese Zeile und die Meldung geht weg. Steht ja auch so da
-
@AlCalzone
Vielen Dank für Deine Antwort.
Wer lesen kann, ist klar im Vorteil. aber...Es gab mehrere Fehlermeldungen, was zu meiner Verwirrung geführt hatte, da MQTT einen String erwartet hatte und ich den anderen Rollladen auch zu Number umgeändert hatte. Dies wurde aber mit dem "konvertieren nach" gelöst.
beim anderen Rollladen erhalte ich nun aber die genau gegenteilige Meldung:
You are assigning a string to the state "javascript.0.Fenster.Rollladen-unten" which expects a number. Please fix your code to use a number or change the state type to stringGibt es da irgend eine Logik oder Setup, wann Smart Geräte im ioBroker wie gesteuert werden (Number, String)?
Edit:
Es gibt nun tatsächlich keinen Fehler mehr aus, wenn ich den einen Rollladen als String und den Anderen als Number festlege. Würde aber wirklich gerne verstehen wieso, da ich keinen Unterschied zwischen den Beiden feststelle und diese auch auf die gleiche Weise angelegt wurden.{
"_id": "javascript.0.Fenster.Rollladen-oben",
"type": "state",
"common": {
"name": "Rollladen-oben",
"role": "level",
"type": "number",
"read": true,
"write": true,
"desc": "Manuell erzeugt",
"min": 0,
"max": 100,
"def": 0,
"unit": "%",
"smartName": {
"de": "Rollladen oben, Storen oben"
}
},
"native": {},
"from": "system.adapter.admin.0",
"ts": 1557537495833,
"acl": {
"object": 1638,
"state": 1638
}
}{
"_id": "javascript.0.Fenster.Rollladen-unten",
"type": "state",
"common": {
"name": "Rollladen-unten",
"role": "level",
"type": "string",
"read": true,
"write": true,
"desc": "Manuell erzeugt",
"min": 0,
"max": 100,
"def": 0,
"unit": "%",
"smartName": {
"de": "Rollladen unten, Storen unten"
}
},
"native": {},
"from": "system.adapter.admin.0",
"ts": 1557536751223,
"acl": {
"object": 1638,
"state": 1638
} -
@wizzardking sagte in Datentyp (Array, String, Number) wirrwarr:
You are assigning a string to the state "javascript.0.Fenster.Rollladen-unten" which expects a number. Please fix your code to use a number or change the state type to string
Dazu müsste ich den Code sehen. Woher kommt der State? Liefert MQTT ggf. einen String? Dann musst du den im Code/Blockly vorm Schreiben in eine Zahl umwandeln.
Gibt es da irgend eine Logik oder Setup, wann Smart Geräte im ioBroker wie gesteuert werden (Number, String)?
Grundsätzlich sollte alles, was einen Zahlenwert annehmen kann, als number definiert sein. An/Aus als boolean. Texte als string.
Ob das jeder Adapter richtig macht oder machen kann steht auf einem anderen Blatt. -
@AlCalzone
Um dieses Objekt zu steuern verwende ich gar keinen Code. Das Objekt wird direkt über Alexa per iot Smartobjekt gesteuert.Ich habe dieses Objekt nun aber gelöscht und nochmals das 100% gleiche Objekt neu angelegt. Dadurch wurde das Problem beseitigt und iot überträgt die Information von Alexa nun auch als Zahl. Klappt also nun alles.
Danke für Deinen Support!