Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Fragen zu createState.

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Fragen zu createState.

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @ChristianG last edited by

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

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

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

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

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

              @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 AlCalzone 3 Replies Last reply Reply Quote 0
              • C
                ChristianG @paul53 last edited by 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

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

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

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

                        1 Reply Last reply Reply Quote 0
                        • C
                          ChristianG @paul53 last edited by 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 });
                          
                          AlCalzone paul53 2 Replies Last reply Reply Quote 0
                          • AlCalzone
                            AlCalzone Developer @ChristianG last edited by

                            @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 1 Reply Last reply Reply Quote 0
                            • C
                              ChristianG @AlCalzone last edited by

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

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

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

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

                                  AlCalzone 1 Reply Last reply Reply Quote 0
                                  • AlCalzone
                                    AlCalzone Developer @ChristianG last edited by

                                    @ChristianG Warum ist dein Skript auf TypeScript eingestellt?

                                    C 1 Reply Last reply Reply Quote 0
                                    • C
                                      ChristianG @AlCalzone last edited by ChristianG

                                      @AlCalzone weil ich sonst den import von

                                      var axios = require('axios');
                                      

                                      nicht machen kann.

                                      AlCalzone 1 Reply Last reply Reply Quote 0
                                      • AlCalzone
                                        AlCalzone Developer @ChristianG last edited by

                                        @ChristianG natürlich kannst du das.

                                        C 2 Replies Last reply Reply Quote 0
                                        • C
                                          ChristianG @AlCalzone last edited by

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

                                          1 Reply Last reply Reply Quote 0
                                          • C
                                            ChristianG @AlCalzone last edited by

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

                                            AlCalzone 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            913
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            3
                                            31
                                            3283
                                            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