NEWS
Datentyp eines Boolean Datenpunktes ist String?
-
Hallo,
hab einen Datenpunkt vom Typ boolean angelegt:{ "common": { "name": "TestBoolean", "desc": "Manuell erzeugt", "role": "state", "type": "boolean", "read": true, "write": true, "def": false }, "type": "state", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1747227630695, "_id": "0_userdata.0.Steuerzentrale.SettingsHaus.TestBoolean", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Nach langem debuggen hab ich dann herausgefunden, dass getState des datentyps plötzlich String ergibt:
console.log(typeof(getState('0_userdata.0.TestBoolean').val));
Ausgabe:
javascript.0 16:31:02.431 info script.js.Eigene_Scripte.Run.Test: string?!
Weiss jemand ob ich was falsch mache, oder wie man das richtig stellen kann? Liegt das Problem beim Datenpunkt oder bei getState()?
-
@iob69 Da passt aber etwas nicht.
Du zeigt die Objekt-Eigenschaften vom DP"0_userdata.0.Steuerzentrale.SettingsHaus.TestBoolean"
Und die Ausgabe von einem anderen DP
'0_userdata.0.TestBoolean'
Um welchen DP geht es denn? -
@iob69 sagte: Liegt das Problem beim Datenpunkt oder bei getState()?
Weder ... noch. Du schreibst irgendwo einen String in den Datenpunkt. Es wird zwar gewarnt, dass der Typ nicht stimmt, aber es wird nicht verhindert.
-
@iob69
Was steht den genau im datenpunkt aktuell drin?Wenn der datenpunkt zuvor ein anderer Datentyp war und du den auf Boolean umstellt, führ iobroker keine automatische Konvertierung aus. Nur bei der Eingabe würd die Gültigkeit überprüft.
Gültig ist auch nur true und false, beides klein geschrieben. Wobei bei der Eingabe in der Objektivität das eh über ein Schalter passiert, bei der man keinen Fehler machen kann.
Ich glaube gelegentlich gibt es bei vis noch Probleme. Da muss man dann tatsächlich auf String prüfen. Kann aber sein, das das I. Neueren Versionen oder vis2 verbessert wurde.
-
@mcu
Ich hab den Pfad in der Frage extra gekürzt, um die Frage einfacher zu gestalten, allerdings hat sich das jetzt als Boomerang erwiesen, sorry. Aber das ist der selbe DP.@paul53
Ich schreibe selbst nichts rein, aber das hat mich auf das Problem gebracht:
Ich hab den Datenpunkt dem Widget Radiobuttons Valuelist angegeben. Und dort kann man für die entsprechenden Werte was angeben, und das ist ja offensichtlich ein String. Da hab ich beim eintragen nicht daran gedacht und dort:
eingegeben.
Da kommt für mich die Frage auf: Könnte man das dort gleich als Boolean casten? Wahrscheinlich nicht.
Das Problem war ja schon, mit dem normalen Radio-Button, welches 1 oder 0 in den Datenpunkt schreibt. Für ein oder aus wäre aber boolean das korrekte und nicht 0 oder 1 oder 3...
Aber ich sehe jetzt wo der Fehler liegt. Danke -
@iob69 sagte: Widget Radiobuttons Valuelist
Der ordnet Zahlenwerten Texte zu. Es gibt doch auch einen Radiobutton für boolesche Werte (Radiobuttons On/Off)?
-
@paul53
Ja, aber wie ich geschrieben hab, ordnet der wahr/falsch eben 1/0 zu und nicht true/false.Bin gerade am überlegen, ob ich auf vis2 oder webui wechsle. Die Controls in vis fühlen sich ziemlich gebastelt an und sind nicht standardisiert. (jqui-widgets haben alle andere Grössen und Stile, mal kann man jQuery style rausnehmen, mal nicht usw).
Aber ich weiss nicht wie aufwendig es ist, meine rund 30 Seiten auf ein anderes gui umzustellen....