Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. English
    3. Scripting / Logic
    4. JavaScript
    5. [gelöst] setState funktioniert nicht bei Device ?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] setState funktioniert nicht bei Device ?

    This topic has been deleted. Only users with topic management privileges can see it.
    • arteck
      arteck Developer Most Active @Great SUN last edited by

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

      State "0_userdata.0

      wasndas 0_ wie kommst du dadrauf

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

        @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 SUN 1 Reply Last reply Reply Quote 0
        • Great SUN
          Great SUN @paul53 last edited by

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

          paul53 1 Reply Last reply Reply Quote 0
          • Great SUN
            Great SUN @arteck last edited by

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

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

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @Great SUN last edited by 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 SUN 2 Replies Last reply Reply Quote 0
              • Great SUN
                Great SUN @paul53 last edited by

                @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":{}}
                
                paul53 1 Reply Last reply Reply Quote 0
                • Great SUN
                  Great SUN @paul53 last edited by

                  @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 Reply Quote 0
                  • paul53
                    paul53 @Great SUN last edited by

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

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

                      @paul53 Also muss ich das beim Device rauslassen?

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

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

                        Ja.

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

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

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

                            @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);
                            });
                            
                            1 Reply Last reply Reply Quote 1
                            • Great SUN
                              Great SUN last edited by

                              @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 Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              943
                              Online

                              31.6k
                              Users

                              79.6k
                              Topics

                              1.3m
                              Posts

                              3
                              14
                              532
                              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