@paul53
Es sieht zumindest so aus, als wäre nicht klar, was es sein soll. Nach Anlage steht "" in min und max. Nach Schreiben ist es null. Wenn ich Werte eintrage, also eine Ansage mache, was es denn sein soll, passt es.
Ich danke euch.
NEWS
Latest posts made by HomeGuy
-
RE: Typ falsch, bzw. number wird als string erwartet (alias)
-
RE: Typ falsch, bzw. number wird als string erwartet (alias)
@mickym
OK, Danke. Merke ich mir fürs nächste Mal.
Aber warum funktioniert es denn jetzt, wo ich an der Definition selbst ja eigentlich nichts geändert habe und weiterhin number schreibe? -
Typ falsch, bzw. number wird als string erwartet (alias)
Re: Fehlermeldung "Wrong type of…: "string"
Hallo,
bevor ich meine Frage stelle, eine kurze Vorstellung. Ich habe iobroker seit ein, zwei Jahren auf einem pi laufen und da auch schon diverse Dinge umgesetzt. Ich kann ein wenig JS, nutze Node-Red und habe noch Jarvis und VIS als Projekte auf dem Plan. Angesteuert werden im Moment zigbee-Geräte und noch ein paar Max-Thermostate.
Nun zu meiner Frage:
Die Max-Thermostate haben einen state 'mode':{ "_id": "maxcul.0.PEQXXXXXXX.mode", "common": { "name": "Thermostat PEQXXXXXXX mode", "type": "number", "role": "level.mode", "read": true, "write": true, "states": { "0": "auto weekly", "1": "manual", "2": "vacation", "3": "boost", "4": "manual eco", "5": "manual comfort", "6": "manual window" } }, "type": "state", "native": { "src": "1bXXXX", "type": 1, "raw": "1001AXXXXXXXXXXXXXXXXXXX", "rssi": -53.5, "serial": "PEQXXXXXXX" }, "from": "system.adapter.maxcul.0", "user": "system.user.admin", "ts": 163XXXXXXXXXX, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Ich habe einen Alias eingerichtet, dessen Definition so aussieht:
{ "common": { "alias": { "id": "maxcul.0.PEQXXXXXXX.mode", "read": "", "write": "" }, "name": "mode", "role": "level.mode", "type": "number", "unit": "", "min": "", "max": "", "read": true, "write": true, "states": { "0": "auto weekly", "1": "manual", "2": "vacation", "3": "boost", "4": "manual eco", "5": "manual comfort", "6": "manual window" } }, "native": {}, "type": "state", "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 16504XXXXXXXXXX, "_id": "alias.0.AZ.Thermostat.mode", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Beim Schreiben von mode passiert aber nichts. Der vorige Wert bleibt.
setState('alias.0.AZ.Thermostat.mode', 1);
Wenn ich den Wert als string übergebe ('1'), wird der Wert gesetzt. Dann meckert javascript aber, weil der Typ falsch ist.
Anders sieht es aus, wenn ich nicht den Alias nutze:setState('maxcul.0.PEQXXXXXXX.mode', 1);
Dann wird der Wert richtig gesetzt.
Ein typeof liefert für 'maxcul.0.PEQXXXXXXX.mode' number zurück. Bei 'alias.0.AZ.Thermostat.mode' ist es string, wenn vorher versucht wurde, hierüber eine 1 zu setzen. Wird nur über 'maxcul' der Wert gesetzt und typeof für beide States ausgelesen, bleibt es bei number. Es scheint so, dass das Setzen des Wertes über den Alias irgendwas verbiegt.
Ich habe gerade ein wenig rumgespielt und im Alias in der Objektdefinition die Werte Min und Max gelöscht. Danach bleibt es bei number, egal über welchen Weg ich die Werte schreibe. Es funktioniert also nun und mein Problem hat sich erledigt.
Es bleibt natürlich die grundlegende Frage: Ist im Alias irgendwo ein Fehler versteckt?
Bei meiner Philips Hue hatte ich das Problem übrigens auch, wenn ich den State colortemp setzen wollte. Hier hat ein Editieren von "Min" geholfen.
Viellicht ist ja jemand anwesend, der mich etwas erleuchten kann.Schonmal vielen Dank.