Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Typ falsch, bzw. number wird als string erwartet (alias)

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Typ falsch, bzw. number wird als string erwartet (alias)

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      HomeGuy last edited by

      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.

      mickym paul53 2 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @HomeGuy last edited by mickym

        @homeguy Du hättest einfach den mode Datentyp manuell auf string setzen können. Ist immer ein String, da die Zahl die Objekteigenschaft ist. Allerdings komme ich mit dieser Multistate Definition im iob eh nicht klar.

        H 1 Reply Last reply Reply Quote 0
        • H
          HomeGuy @mickym last edited by

          @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?

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @HomeGuy last edited by

            @homeguy Ich kann Dir das nicht genau sagen. Ich weiss nur, dass der Admin manchmal versucht selbst den Typ zu setzen in Abhängigkeit was für Werte er bekommt. Wenn Du also erst mal Zahlen schickst, wird das Teil ggf. selbst den Datentyp auf Zahl ändern. Das habe ich aber nur so aus einem anderen Thread entnommen. Belegen kann ich Dir das nicht.

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @HomeGuy last edited by

              @homeguy
              "min" und "max" haben den falschen Typ (string). Einfach löschen!

              H 1 Reply Last reply Reply Quote 0
              • H
                HomeGuy @paul53 last edited by

                @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.

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                818
                Online

                32.0k
                Users

                80.5k
                Topics

                1.3m
                Posts

                3
                6
                328
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo