Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. English
  3. Scripting / Logic
  4. JavaScript
  5. [gelöst] setState funktioniert nicht bei Device ?

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    12
    2
    254

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

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

[gelöst] setState funktioniert nicht bei Device ?

[gelöst] setState funktioniert nicht bei Device ?

Scheduled Pinned Locked Moved JavaScript
14 Posts 3 Posters 1.0k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Great SUNG Offline
    Great SUNG Offline
    Great SUN
    wrote on last edited by Great SUN
    #1

    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 paul53P 2 Replies Last reply
    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!

      arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      wrote on last edited by
      #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 Reply Last reply
      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
        wrote on last edited by
        #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 Reply Last reply
        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
          wrote on last edited by
          #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 Reply Last reply
          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
            wrote on last edited by
            #5

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

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

            1 Reply Last reply
            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
              wrote on last edited by 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 Replies Last reply
              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
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by
                  #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 Reply Last reply
                  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
                    wrote on last edited by
                    #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 Reply Last reply
                    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
                      wrote on last edited by
                      #10

                      @paul53 Also muss ich das beim Device rauslassen?

                      paul53P 1 Reply Last reply
                      0
                      • Great SUNG Great SUN

                        @paul53 Also muss ich das beim Device rauslassen?

                        paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by
                        #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 Reply Last reply
                        0
                        • paul53P paul53

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

                          Ja.

                          Great SUNG Offline
                          Great SUNG Offline
                          Great SUN
                          wrote on last edited by
                          #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 Reply Last reply
                          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
                            wrote on last edited by 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 Reply Last reply
                            1
                            • Great SUNG Offline
                              Great SUNG Offline
                              Great SUN
                              wrote on last edited by
                              #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 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              114

                              Online

                              32.4k

                              Users

                              81.3k

                              Topics

                              1.3m

                              Posts
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              ioBroker Community 2014-2025
                              logo
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Recent
                              • Tags
                              • Unread 0
                              • Categories
                              • Unreplied
                              • Popular
                              • GitHub
                              • Docu
                              • Hilfe