Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Fragen zu createState.

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    776

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Fragen zu createState.

Scheduled Pinned Locked Moved JavaScript
javascript
31 Posts 3 Posters 4.7k Views 3 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.
  • C ChristianG

    Hallo zusammen,

    ich baue mir gerade ein kleines Skript um von einer API einige Daten abzurufen und zu speichern.

    Die Daten habe ich nun vorliegen aber ich bekomme diese leider nicht ioBroker-Baum abgelegt.

    Kann mir bitte jemand sagen wie ich mit createState ein Verzeichnis in erster Ebene anlegen kann?

    Alles was ich mit createState mache landet leider unter javascript.0.

    Was ich also benötige ist:

    1. Prüfen ob ein State schon angelegt und vorhanden ist.
    2. Wenn nicht vorhanden neuen State anlegen.
    3. Wenn vorhanden den Wert updaten.

    Eine kleine Funktion wäre super dafür :)

    Leider werde ich aus den Docs nicht schlau..

    Vielen Dank.

    paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by
    #2

    @ChristianG sagte:

    mit createState ein Verzeichnis in erster Ebene anlegen kann?

    Eigene Datenpunkte sollen unter "0_userdata.0" angelegt werden. Das kann createState() ab Javascript-Version 4.6.1.

    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

    C 1 Reply Last reply
    0
    • paul53P paul53

      @ChristianG sagte:

      mit createState ein Verzeichnis in erster Ebene anlegen kann?

      Eigene Datenpunkte sollen unter "0_userdata.0" angelegt werden. Das kann createState() ab Javascript-Version 4.6.1.

      C Offline
      C Offline
      ChristianG
      wrote on last edited by ChristianG
      #3

      @paul53 ich will aber gerne direkt in der ersten Ebene als wenn es ein Adapter macht :) und prüfen und updaten wäre auch schön.

      paul53P 1 Reply Last reply
      0
      • C ChristianG

        @paul53 ich will aber gerne direkt in der ersten Ebene als wenn es ein Adapter macht :) und prüfen und updaten wäre auch schön.

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #4

        @ChristianG sagte:

        @paul53 ich will aber gerne direkt in der ersten Ebene als wenn es ein Adapter macht :)

        Dann musst Du setObject() und setState() verwenden.

        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

        C 1 Reply Last reply
        0
        • paul53P paul53

          @ChristianG sagte:

          @paul53 ich will aber gerne direkt in der ersten Ebene als wenn es ein Adapter macht :)

          Dann musst Du setObject() und setState() verwenden.

          C Offline
          C Offline
          ChristianG
          wrote on last edited by
          #5

          @paul53 okay schaue ich mir mal an ob ich das verstehe. und wie prüfe ich ob ein state schon da ist? damit ich den nicht wieder mit object anlegen muss?

          paul53P 1 Reply Last reply
          0
          • C ChristianG

            @paul53 okay schaue ich mir mal an ob ich das verstehe. und wie prüfe ich ob ein state schon da ist? damit ich den nicht wieder mit object anlegen muss?

            paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by
            #6

            @ChristianG sagte:

            wie prüfe ich ob ein state schon da ist?

            if(!existsState(id)) {
               setObject(id, obj);
               setTimeout(function() {setState(id, obj.common.def, true)}, 100);
            }
            

            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

            C AlCalzoneA 3 Replies Last reply
            0
            • paul53P paul53

              @ChristianG sagte:

              wie prüfe ich ob ein state schon da ist?

              if(!existsState(id)) {
                 setObject(id, obj);
                 setTimeout(function() {setState(id, obj.common.def, true)}, 100);
              }
              
              C Offline
              C Offline
              ChristianG
              wrote on last edited by ChristianG
              #7

              @paul53 vielen Dank Pail.

              Ich habe nun versucht im Netz zu finden wie ich das obj aufbauen muss, habe aber leider keinen Verweis gefunden. Kannst du mir einen Link schicken.

              Oder noch einfacher wäre vll ein Beispiel anhand dieses Datenpunktes und dann übernehme ich das für alle anderen. Danke :)

              So hatte ich es bis jetzt gemacht gehabt vor meiner Anfrage aber dies landete ja immer im javascript.0 :)

              createState('eufy-security.0.device'+device_count+'.cam_id',device.device_id);

              Vielen Dank!

              Edit:

              ah unter EN gibt es etwas, mal sehen, ob es hilft: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md

              paul53P 1 Reply Last reply
              1
              • paul53P paul53

                @ChristianG sagte:

                wie prüfe ich ob ein state schon da ist?

                if(!existsState(id)) {
                   setObject(id, obj);
                   setTimeout(function() {setState(id, obj.common.def, true)}, 100);
                }
                
                C Offline
                C Offline
                ChristianG
                wrote on last edited by ChristianG
                #8

                @paul53 sagte in Fragen zu createState.:

                setTimeout(function() {setState(id, obj.common.def, true)}, 100);

                meinst du das wird gehen ? :)

                function createOrUpdate(object_path,obj_id,object_value,obj_type = 'state',name = '',type = 'string',role = 'value',desc = '',read = true,write = true,def = 0,min = 0,unit = ''){
                    if(!object_path){
                        console.log('Please define a path.');
                        return;
                    }
                    if(!obj_id){
                        console.log('Please define a state endpoint.');
                        return;
                    }
                    const path = object_path;
                    const id = path + '.' + obj_id;
                    var obj;
                    obj["type"] = obj_type;
                    obj["common"] = {};
                    obj["common"]["name"] = name;
                    obj["common"]["type"] = type;
                    obj["common"]["role"] = role;
                    obj["common"]["desc"] = desc;
                    obj["common"]["read"] = read;
                    obj["common"]["write"] = write;
                    obj["common"]["def"] = def;
                    obj["common"]["min"] = min;   
                    obj["common"]["unit"] = unit;
                    if(!existsState(id)) {
                        setObject(id, obj);
                        setTimeout(function() {setState(id, object_value)}, 100);
                    }else{
                        setState(id, object_value);
                    }
                }
                
                C 1 Reply Last reply
                0
                • C ChristianG

                  @paul53 sagte in Fragen zu createState.:

                  setTimeout(function() {setState(id, obj.common.def, true)}, 100);

                  meinst du das wird gehen ? :)

                  function createOrUpdate(object_path,obj_id,object_value,obj_type = 'state',name = '',type = 'string',role = 'value',desc = '',read = true,write = true,def = 0,min = 0,unit = ''){
                      if(!object_path){
                          console.log('Please define a path.');
                          return;
                      }
                      if(!obj_id){
                          console.log('Please define a state endpoint.');
                          return;
                      }
                      const path = object_path;
                      const id = path + '.' + obj_id;
                      var obj;
                      obj["type"] = obj_type;
                      obj["common"] = {};
                      obj["common"]["name"] = name;
                      obj["common"]["type"] = type;
                      obj["common"]["role"] = role;
                      obj["common"]["desc"] = desc;
                      obj["common"]["read"] = read;
                      obj["common"]["write"] = write;
                      obj["common"]["def"] = def;
                      obj["common"]["min"] = min;   
                      obj["common"]["unit"] = unit;
                      if(!existsState(id)) {
                          setObject(id, obj);
                          setTimeout(function() {setState(id, object_value)}, 100);
                      }else{
                          setState(id, object_value);
                      }
                  }
                  
                  C Offline
                  C Offline
                  ChristianG
                  wrote on last edited by ChristianG
                  #9

                  Also Fehler habe ich jetzt nicht mehr aber leider wird kein Wert geschrieben.

                  createOrUpdate('eufy-security.0.device'+device_count,'cam_id',device.device_id,'state','','string','value','',true,true,0,0,'');
                  
                  1 Reply Last reply
                  0
                  • C ChristianG

                    @paul53 vielen Dank Pail.

                    Ich habe nun versucht im Netz zu finden wie ich das obj aufbauen muss, habe aber leider keinen Verweis gefunden. Kannst du mir einen Link schicken.

                    Oder noch einfacher wäre vll ein Beispiel anhand dieses Datenpunktes und dann übernehme ich das für alle anderen. Danke :)

                    So hatte ich es bis jetzt gemacht gehabt vor meiner Anfrage aber dies landete ja immer im javascript.0 :)

                    createState('eufy-security.0.device'+device_count+'.cam_id',device.device_id);

                    Vielen Dank!

                    Edit:

                    ah unter EN gibt es etwas, mal sehen, ob es hilft: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by paul53
                    #10

                    @ChristianG sagte:

                    Kannst du mir einen Link schicken.

                    Siehe unter Attribute für bestimmte Objekttypen / Datenpunkt.

                    @ChristianG sagte in Fragen zu createState.:

                    ein Beispiel

                    Beispiel. Damals gab es die Funktion existsState(id) noch nicht.

                    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

                    C 1 Reply Last reply
                    0
                    • paul53P paul53

                      @ChristianG sagte:

                      wie prüfe ich ob ein state schon da ist?

                      if(!existsState(id)) {
                         setObject(id, obj);
                         setTimeout(function() {setState(id, obj.common.def, true)}, 100);
                      }
                      
                      AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      wrote on last edited by
                      #11

                      @paul53 sagte in Fragen zu createState.:

                      setTimeout

                      setObject akzeptiert einen Callback:
                      https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#setobject
                      Damit müsste man sofort nach dem Erstellen den Wert schreiben können, ohne künstlich länger zu warten.

                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                      1 Reply Last reply
                      0
                      • paul53P paul53

                        @ChristianG sagte:

                        Kannst du mir einen Link schicken.

                        Siehe unter Attribute für bestimmte Objekttypen / Datenpunkt.

                        @ChristianG sagte in Fragen zu createState.:

                        ein Beispiel

                        Beispiel. Damals gab es die Funktion existsState(id) noch nicht.

                        C Offline
                        C Offline
                        ChristianG
                        wrote on last edited by ChristianG
                        #12

                        @paul53

                        Danke für die Hilfe aber ich gebe auf ... habe nicht so wirklich den Plan von dem was ich da mache und die Punkte werden einfach nicht angelegt. Werde dann außerhalb von ioBroker die API nutzen und in meine Oberfläche einbauen.

                        Hier für alle die doch noch versuchen wollen es ans laufen zu bekommen:

                        function createOrUpdateDP(object_path,obj_id,common){
                            const path = object_path;
                            const id = path + '.' + obj_id;
                            var obj;
                            obj['type'] = 'state';
                            obj['common'] = common;
                            if(!existsState(id)) {
                                setObject(id, obj, function (err) {
                                    if (err) log('Cannot write object: ' + err)
                                    else {
                                        var init = null;
                                        if(common.def === undefined) {
                                            if(common.type === 'number') init = 0;
                                            if(common.type === 'boolean') init = false;
                                            if(common.type === 'string') init = '';
                                        } else init = common.def;
                                        setState(id, init);
                                    }
                                });
                            }else{
                                setState(id, common.def);
                            }
                        }
                        
                        createOrUpdateDP('eufy-security.0.device'+device_count,'cam_id', {read: true, write: true, role: "state", desc: "", type: "string", def: device.device_id });
                        
                        AlCalzoneA paul53P 2 Replies Last reply
                        0
                        • C ChristianG

                          @paul53

                          Danke für die Hilfe aber ich gebe auf ... habe nicht so wirklich den Plan von dem was ich da mache und die Punkte werden einfach nicht angelegt. Werde dann außerhalb von ioBroker die API nutzen und in meine Oberfläche einbauen.

                          Hier für alle die doch noch versuchen wollen es ans laufen zu bekommen:

                          function createOrUpdateDP(object_path,obj_id,common){
                              const path = object_path;
                              const id = path + '.' + obj_id;
                              var obj;
                              obj['type'] = 'state';
                              obj['common'] = common;
                              if(!existsState(id)) {
                                  setObject(id, obj, function (err) {
                                      if (err) log('Cannot write object: ' + err)
                                      else {
                                          var init = null;
                                          if(common.def === undefined) {
                                              if(common.type === 'number') init = 0;
                                              if(common.type === 'boolean') init = false;
                                              if(common.type === 'string') init = '';
                                          } else init = common.def;
                                          setState(id, init);
                                      }
                                  });
                              }else{
                                  setState(id, common.def);
                              }
                          }
                          
                          createOrUpdateDP('eufy-security.0.device'+device_count,'cam_id', {read: true, write: true, role: "state", desc: "", type: "string", def: device.device_id });
                          
                          AlCalzoneA Offline
                          AlCalzoneA Offline
                          AlCalzone
                          Developer
                          wrote on last edited by
                          #13

                          @ChristianG sagte in Fragen zu createState.:

                          die Punkte werden einfach nicht angelegt

                          Bist du 100% sicher, dass die Funktion überhaupt ausgeführt wird? Hast du in den Adaptereinstellungen setObject erlaubt?

                          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                          C 1 Reply Last reply
                          0
                          • AlCalzoneA AlCalzone

                            @ChristianG sagte in Fragen zu createState.:

                            die Punkte werden einfach nicht angelegt

                            Bist du 100% sicher, dass die Funktion überhaupt ausgeführt wird? Hast du in den Adaptereinstellungen setObject erlaubt?

                            C Offline
                            C Offline
                            ChristianG
                            wrote on last edited by
                            #14

                            @AlCalzone Bildschirmfoto 2020-07-06 um 08.48.13.png

                            1 Reply Last reply
                            0
                            • C ChristianG

                              @paul53

                              Danke für die Hilfe aber ich gebe auf ... habe nicht so wirklich den Plan von dem was ich da mache und die Punkte werden einfach nicht angelegt. Werde dann außerhalb von ioBroker die API nutzen und in meine Oberfläche einbauen.

                              Hier für alle die doch noch versuchen wollen es ans laufen zu bekommen:

                              function createOrUpdateDP(object_path,obj_id,common){
                                  const path = object_path;
                                  const id = path + '.' + obj_id;
                                  var obj;
                                  obj['type'] = 'state';
                                  obj['common'] = common;
                                  if(!existsState(id)) {
                                      setObject(id, obj, function (err) {
                                          if (err) log('Cannot write object: ' + err)
                                          else {
                                              var init = null;
                                              if(common.def === undefined) {
                                                  if(common.type === 'number') init = 0;
                                                  if(common.type === 'boolean') init = false;
                                                  if(common.type === 'string') init = '';
                                              } else init = common.def;
                                              setState(id, init);
                                          }
                                      });
                                  }else{
                                      setState(id, common.def);
                                  }
                              }
                              
                              createOrUpdateDP('eufy-security.0.device'+device_count,'cam_id', {read: true, write: true, role: "state", desc: "", type: "string", def: device.device_id });
                              
                              paul53P Offline
                              paul53P Offline
                              paul53
                              wrote on last edited by
                              #15

                              @ChristianG sagte:

                              Hier für alle die doch noch versuchen wollen es ans laufen zu bekommen:

                              Ich würde Zeile 4 - so wie im verlinkten Beispiel - ändern in:

                                  var obj = {};
                              

                              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

                              C 1 Reply Last reply
                              0
                              • paul53P paul53

                                @ChristianG sagte:

                                Hier für alle die doch noch versuchen wollen es ans laufen zu bekommen:

                                Ich würde Zeile 4 - so wie im verlinkten Beispiel - ändern in:

                                    var obj = {};
                                
                                C Offline
                                C Offline
                                ChristianG
                                wrote on last edited by
                                #16

                                @paul53 geht nicht, dann gibt es einen Fehler.Bildschirmfoto 2020-07-06 um 08.59.56.png

                                AlCalzoneA 1 Reply Last reply
                                0
                                • C ChristianG

                                  @paul53 geht nicht, dann gibt es einen Fehler.Bildschirmfoto 2020-07-06 um 08.59.56.png

                                  AlCalzoneA Offline
                                  AlCalzoneA Offline
                                  AlCalzone
                                  Developer
                                  wrote on last edited by
                                  #17

                                  @ChristianG Warum ist dein Skript auf TypeScript eingestellt?

                                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                  C 1 Reply Last reply
                                  0
                                  • AlCalzoneA AlCalzone

                                    @ChristianG Warum ist dein Skript auf TypeScript eingestellt?

                                    C Offline
                                    C Offline
                                    ChristianG
                                    wrote on last edited by ChristianG
                                    #18

                                    @AlCalzone weil ich sonst den import von

                                    var axios = require('axios');
                                    

                                    nicht machen kann.

                                    AlCalzoneA 1 Reply Last reply
                                    0
                                    • C ChristianG

                                      @AlCalzone weil ich sonst den import von

                                      var axios = require('axios');
                                      

                                      nicht machen kann.

                                      AlCalzoneA Offline
                                      AlCalzoneA Offline
                                      AlCalzone
                                      Developer
                                      wrote on last edited by
                                      #19

                                      @ChristianG natürlich kannst du das.

                                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                      C 2 Replies Last reply
                                      0
                                      • AlCalzoneA AlCalzone

                                        @ChristianG natürlich kannst du das.

                                        C Offline
                                        C Offline
                                        ChristianG
                                        wrote on last edited by
                                        #20

                                        @AlCalzone Okay, war rot hinterlegt aber ausführen geht :) Danke!!! Dann lag es nur an der kleinen Sache :)

                                        1 Reply Last reply
                                        0
                                        • AlCalzoneA AlCalzone

                                          @ChristianG natürlich kannst du das.

                                          C Offline
                                          C Offline
                                          ChristianG
                                          wrote on last edited by
                                          #21

                                          @AlCalzonem habe die Daten nun im ioBroker :)

                                          Danke!

                                          Wie kann ich das Skript nun noch automatisch stoppen, nachdem es fertig ist?

                                          Also damit es nicht mehr als aktiviert zählt?

                                          AlCalzoneA 1 Reply Last reply
                                          0

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          613

                                          Online

                                          32.8k

                                          Users

                                          82.7k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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