Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Typ falsch, bzw. number wird als string erwartet (alias)

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 3 Kommentatoren 362 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • H Offline
    H Offline
    HomeGuy
    schrieb am zuletzt editiert von
    #1

    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.

    mickymM paul53P 2 Antworten Letzte Antwort
    0
    • H HomeGuy

      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.

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

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

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      H 1 Antwort Letzte Antwort
      0
      • mickymM 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 Offline
        H Offline
        HomeGuy
        schrieb am zuletzt editiert von
        #3

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

        mickymM 1 Antwort Letzte Antwort
        0
        • H HomeGuy

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

          mickymM Online
          mickymM Online
          mickym
          Most Active
          schrieb am zuletzt editiert von
          #4

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

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          1 Antwort Letzte Antwort
          0
          • H HomeGuy

            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.

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #5

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

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            H 1 Antwort Letzte Antwort
            0
            • paul53P paul53

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

              H Offline
              H Offline
              HomeGuy
              schrieb am zuletzt editiert von
              #6

              @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 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              396

              Online

              32.4k

              Benutzer

              81.5k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe