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.4k

[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.
  • 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

                        579

                        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