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. English
  3. Scripting / Logic
  4. JavaScript
  5. [gelöst] setState funktioniert nicht bei Device ?

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

[gelöst] setState funktioniert nicht bei Device ?

Geplant Angeheftet Gesperrt Verschoben JavaScript
14 Beiträge 3 Kommentatoren 1.1k 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.
  • Great SUNG Great SUN

    Hi Ihr,

    ich hab heute mal angefangen automatisch Devices anzulegen, um gewisse Daten sinngemäß zusammen zu halten und an ein echtes Gerät binden zu können...
    Das Device erstelle ich mit setObject via Javascript und sieht im JSON Abzug (nach Anlegen des States "LastSetTemperature") so aus:

    {
      "0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat": {
        "type": "device",
        "common": {
          "name": "Heizkoerperthermostat",
          "read": true,
          "write": true,
          "def": ""
        },
        "native": {},
        "from": "system.adapter.javascript.0",
        "user": "system.user.admin",
        "ts": 1670322887832,
        "_id": "0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat",
        "acl": {
          "object": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      },
      "0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat.LastSetTemperature": {
        "type": "state",
        "common": {
          "name": "LastSetTemperature",
          "type": "number",
          "role": "state",
          "read": true,
          "write": true,
          "def": ""
        },
        "native": {},
        "from": "system.adapter.javascript.0",
        "user": "system.user.admin",
        "ts": 1670322887833,
        "_id": "0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat.LastSetTemperature",
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      }
    }
    

    Wenn ich jetzt Versuche mit setState auf 0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat.LastSetTemperature einen Wert zuzuweisen, bekomme ich die Fehlermeldung:

    State "0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat.LastSetTemperature" not found
    

    Kann mir das einer erklärenm und/oder mir sagen, wie ich das richtig mache?

    Danke!

    arteckA Offline
    arteckA Offline
    arteck
    Developer Most Active
    schrieb am zuletzt editiert von
    #2

    @great-sun sagte in setState funktioniert nicht bei Device ?:

    State "0_userdata.0

    wasndas 0_ wie kommst du dadrauf

    zigbee hab ich, zwave auch, nuc's genauso und HA auch

    Great SUNG 1 Antwort Letzte Antwort
    0
    • Great SUNG Great SUN

      Hi Ihr,

      ich hab heute mal angefangen automatisch Devices anzulegen, um gewisse Daten sinngemäß zusammen zu halten und an ein echtes Gerät binden zu können...
      Das Device erstelle ich mit setObject via Javascript und sieht im JSON Abzug (nach Anlegen des States "LastSetTemperature") so aus:

      {
        "0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat": {
          "type": "device",
          "common": {
            "name": "Heizkoerperthermostat",
            "read": true,
            "write": true,
            "def": ""
          },
          "native": {},
          "from": "system.adapter.javascript.0",
          "user": "system.user.admin",
          "ts": 1670322887832,
          "_id": "0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat",
          "acl": {
            "object": 1636,
            "owner": "system.user.admin",
            "ownerGroup": "system.group.administrator"
          }
        },
        "0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat.LastSetTemperature": {
          "type": "state",
          "common": {
            "name": "LastSetTemperature",
            "type": "number",
            "role": "state",
            "read": true,
            "write": true,
            "def": ""
          },
          "native": {},
          "from": "system.adapter.javascript.0",
          "user": "system.user.admin",
          "ts": 1670322887833,
          "_id": "0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat.LastSetTemperature",
          "acl": {
            "object": 1636,
            "state": 1636,
            "owner": "system.user.admin",
            "ownerGroup": "system.group.administrator"
          }
        }
      }
      

      Wenn ich jetzt Versuche mit setState auf 0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat.LastSetTemperature einen Wert zuzuweisen, bekomme ich die Fehlermeldung:

      State "0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat.LastSetTemperature" not found
      

      Kann mir das einer erklärenm und/oder mir sagen, wie ich das richtig mache?

      Danke!

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

      @great-sun sagte: sieht im JSON Abzug (nach Anlegen des States "LastSetTemperature") so aus:

      Man kann nicht ein Device und einen Datenpunkt zusammen erzeugen. Das sind getrennte Objekte. Einen Datenpunkt erstellt man mit createState().

      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

      Great SUNG 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @great-sun sagte: sieht im JSON Abzug (nach Anlegen des States "LastSetTemperature") so aus:

        Man kann nicht ein Device und einen Datenpunkt zusammen erzeugen. Das sind getrennte Objekte. Einen Datenpunkt erstellt man mit createState().

        Great SUNG Offline
        Great SUNG Offline
        Great SUN
        schrieb am zuletzt editiert von
        #4

        @paul53 Ja, ich weiß. Das habe ich auch nicht gemacht.
        Habe beides mit setObject angelegt.
        Das Ergebnis (wenn man einen JSON export macht) ist aber dann das o.g.

        paul53P 1 Antwort Letzte Antwort
        0
        • arteckA arteck

          @great-sun sagte in setState funktioniert nicht bei Device ?:

          State "0_userdata.0

          wasndas 0_ wie kommst du dadrauf

          Great SUNG Offline
          Great SUNG Offline
          Great SUN
          schrieb am zuletzt editiert von
          #5

          @arteck Das ist bei mir in den Objekten so drin.

          fbae1887-f287-43c8-bd6b-f7c7111cca04-image.png

          1 Antwort Letzte Antwort
          0
          • Great SUNG Great SUN

            @paul53 Ja, ich weiß. Das habe ich auch nicht gemacht.
            Habe beides mit setObject angelegt.
            Das Ergebnis (wenn man einen JSON export macht) ist aber dann das o.g.

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

            @great-sun sagte: Das Ergebnis (wenn man einen JSON export macht) ist aber dann das o.g.

            Das ist ein Objekt, das nicht ioBroker konform ist. Lösche es und erstelle 2 konforme Objekte, etwa so:

            const idDev = '0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat';
            const idSoll = idDev + '.LastSetTemperature';
            
            const obj = {
                type: 'device',
                common: {
                    name: 'Heizkörperthermostat'
                },
                native: {}
            };
            
            setObject(idDev, obj);
            createState(idSoll, 0, {
                name: 'LastSetTemperature',
                type: 'number',
                role: 'value.temperature',
                read: true,
                write: false,
                def: 0
            });
            

            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

            Great SUNG 2 Antworten Letzte Antwort
            0
            • paul53P paul53

              @great-sun sagte: Das Ergebnis (wenn man einen JSON export macht) ist aber dann das o.g.

              Das ist ein Objekt, das nicht ioBroker konform ist. Lösche es und erstelle 2 konforme Objekte, etwa so:

              const idDev = '0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat';
              const idSoll = idDev + '.LastSetTemperature';
              
              const obj = {
                  type: 'device',
                  common: {
                      name: 'Heizkörperthermostat'
                  },
                  native: {}
              };
              
              setObject(idDev, obj);
              createState(idSoll, 0, {
                  name: 'LastSetTemperature',
                  type: 'number',
                  role: 'value.temperature',
                  read: true,
                  write: false,
                  def: 0
              });
              
              Great SUNG Offline
              Great SUNG Offline
              Great SUN
              schrieb am zuletzt editiert von
              #7

              @paul53 Kannst Du mir sagen, wie ich diese dann erstellen sollte?

              0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters with {"type":"folder","common":{"name":"Heaters","read":true,"write":true,"def":"","role":""},"native":{}}
              
              0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat with {"type":"device","common":{"name":"Heizkoerperthermostat","read":true,"write":true,"def":"","role":""},"native":{}}
              
              0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat.LastSetTemperature with {"type":"state","common":{"name":"LastSetTemperature","type":"number","role":"state","read":true,"write":true,"def":""},"native":{}}
              
              paul53P 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @great-sun sagte: Das Ergebnis (wenn man einen JSON export macht) ist aber dann das o.g.

                Das ist ein Objekt, das nicht ioBroker konform ist. Lösche es und erstelle 2 konforme Objekte, etwa so:

                const idDev = '0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat';
                const idSoll = idDev + '.LastSetTemperature';
                
                const obj = {
                    type: 'device',
                    common: {
                        name: 'Heizkörperthermostat'
                    },
                    native: {}
                };
                
                setObject(idDev, obj);
                createState(idSoll, 0, {
                    name: 'LastSetTemperature',
                    type: 'number',
                    role: 'value.temperature',
                    read: true,
                    write: false,
                    def: 0
                });
                
                Great SUNG Offline
                Great SUNG Offline
                Great SUN
                schrieb am zuletzt editiert von
                #8

                @paul53 Ich besser das mal aus (statt setObject -> createState) und schau mal, ob es dann geht.

                Danke erstmal für die Mühe!

                1 Antwort Letzte Antwort
                0
                • Great SUNG Great SUN

                  @paul53 Kannst Du mir sagen, wie ich diese dann erstellen sollte?

                  0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters with {"type":"folder","common":{"name":"Heaters","read":true,"write":true,"def":"","role":""},"native":{}}
                  
                  0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat with {"type":"device","common":{"name":"Heizkoerperthermostat","read":true,"write":true,"def":"","role":""},"native":{}}
                  
                  0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat.LastSetTemperature with {"type":"state","common":{"name":"LastSetTemperature","type":"number","role":"state","read":true,"write":true,"def":""},"native":{}}
                  
                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #9

                  @great-sun
                  Nur Datenpunkte haben common.type, common.read, common.write und common.def.

                  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

                  Great SUNG 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @great-sun
                    Nur Datenpunkte haben common.type, common.read, common.write und common.def.

                    Great SUNG Offline
                    Great SUNG Offline
                    Great SUN
                    schrieb am zuletzt editiert von
                    #10

                    @paul53 Also muss ich das beim Device rauslassen?

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • Great SUNG Great SUN

                      @paul53 Also muss ich das beim Device rauslassen?

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

                      @great-sun sagte: muss ich das beim Device rauslassen?

                      Ja.

                      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

                      Great SUNG 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @great-sun sagte: muss ich das beim Device rauslassen?

                        Ja.

                        Great SUNG Offline
                        Great SUNG Offline
                        Great SUN
                        schrieb am zuletzt editiert von
                        #12

                        @paul53
                        Ich hab das jetzt so in der Erstellung:

                        setObject('0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters', {"type":"folder","common":{"name":"Heaters"},"native":{}});
                        
                        setObject('0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat', {"type":"device","common":{"name":"Heizkoerperthermostat"},"native":{}});
                        
                        createState('0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat', null, {'name': 'LastSetTemperature', 'type': 'number', 'role': 'value', 'read': true, 'write': true);
                        

                        Darf ich bei dem createState null nicht benutzen?
                        Brauche ich zwangsweise das default value?

                        Das Objekt als solches wird angelegt ohne Fehler, nur, wenn ich dann mit setState etwas reinschreiben will, gibts den Fehler.

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • Great SUNG Great SUN

                          @paul53
                          Ich hab das jetzt so in der Erstellung:

                          setObject('0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters', {"type":"folder","common":{"name":"Heaters"},"native":{}});
                          
                          setObject('0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat', {"type":"device","common":{"name":"Heizkoerperthermostat"},"native":{}});
                          
                          createState('0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat', null, {'name': 'LastSetTemperature', 'type': 'number', 'role': 'value', 'read': true, 'write': true);
                          

                          Darf ich bei dem createState null nicht benutzen?
                          Brauche ich zwangsweise das default value?

                          Das Objekt als solches wird angelegt ohne Fehler, nur, wenn ich dann mit setState etwas reinschreiben will, gibts den Fehler.

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

                          @great-sun sagte: Darf ich bei dem createState null nicht benutzen?

                          Nein, null steht für "nicht vorhanden".

                          @great-sun sagte in setState funktioniert nicht bei Device ?:

                          wenn ich dann mit setState etwas reinschreiben will, gibts den Fehler.

                          Welchen Fehler? Unmittelbar nach createState() kann man setState() nicht verwenden, da der Datenpunkt noch nicht fertig erstellt ist.

                          Man kann einen Datenpunkt auch mit setObject() erstellen und mit setState() in der Callback-Funktion initialisieren.

                          const idDev = '0_userdata.0.DeviceState.Heatage.Configurations.Zoe.Heaters.Heizkoerperthermostat';
                          const idSoll = idDev + '.LastSetTemperature';
                          
                          setObject(idDev, {
                              type: 'device',
                              common: {
                                  name: 'Heizkörperthermostat'
                              },
                              native: {}
                          });
                          
                          setObject(idSoll, {
                              type: 'state', 
                              common: {
                                  name: 'LastSetTemperature',
                                  type: 'number',
                                  role: 'level.temperature',
                                  read: true,
                                  write: true,
                                  def: 0
                              },
                              native: {}
                          }, function() {
                              setState(idSoll, 20, true);
                          });
                          

                          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

                          1 Antwort Letzte Antwort
                          1
                          • Great SUNG Offline
                            Great SUNG Offline
                            Great SUN
                            schrieb am zuletzt editiert von
                            #14

                            @paul53 Hach ja... Und ich dachte beim bauen des Scripts, dass es createState und createStateAsync gibt, weil createState das Objekt direkt erzeugt und man damit danach arbeiten kann...

                            Das genau war die Lösung!!!

                            Vielen lieben Dank für den Hint mit dem Callback.

                            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

                            442

                            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