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. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Fragen zu createState.

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Fragen zu createState.

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
31 Beiträge 3 Kommentatoren 4.4k Aufrufe 3 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

    @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
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #14

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

          1 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #16

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

              AlCalzoneA 1 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #17

                @ChristianG Warum ist dein Skript auf TypeScript eingestellt?

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

                C 1 Antwort Letzte Antwort
                0
                • AlCalzoneA AlCalzone

                  @ChristianG Warum ist dein Skript auf TypeScript eingestellt?

                  C Offline
                  C Offline
                  ChristianG
                  schrieb am zuletzt editiert von ChristianG
                  #18

                  @AlCalzone weil ich sonst den import von

                  var axios = require('axios');
                  

                  nicht machen kann.

                  AlCalzoneA 1 Antwort Letzte Antwort
                  0
                  • C ChristianG

                    @AlCalzone weil ich sonst den import von

                    var axios = require('axios');
                    

                    nicht machen kann.

                    AlCalzoneA Offline
                    AlCalzoneA Offline
                    AlCalzone
                    Developer
                    schrieb am zuletzt editiert von
                    #19

                    @ChristianG natürlich kannst du das.

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

                    C 2 Antworten Letzte Antwort
                    0
                    • AlCalzoneA AlCalzone

                      @ChristianG natürlich kannst du das.

                      C Offline
                      C Offline
                      ChristianG
                      schrieb am zuletzt editiert von
                      #20

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

                      1 Antwort Letzte Antwort
                      0
                      • AlCalzoneA AlCalzone

                        @ChristianG natürlich kannst du das.

                        C Offline
                        C Offline
                        ChristianG
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • C ChristianG

                          @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 Offline
                          AlCalzoneA Offline
                          AlCalzone
                          Developer
                          schrieb am zuletzt editiert von
                          #22

                          @ChristianG Üblicherweise stoppt man Skripte nicht. Oder ging es hier nur drum, die Daten einmalig einzulesen?

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

                          C 1 Antwort Letzte Antwort
                          0
                          • AlCalzoneA AlCalzone

                            @ChristianG Üblicherweise stoppt man Skripte nicht. Oder ging es hier nur drum, die Daten einmalig einzulesen?

                            C Offline
                            C Offline
                            ChristianG
                            schrieb am zuletzt editiert von
                            #23

                            @AlCalzone Habs verstanden. Ich habe das Skript nun aktiv und wenn ich die Daten haben möchte führe ich das Skript mit Blockly aus.

                            AlCalzoneA 1 Antwort Letzte Antwort
                            0
                            • C ChristianG

                              @AlCalzone Habs verstanden. Ich habe das Skript nun aktiv und wenn ich die Daten haben möchte führe ich das Skript mit Blockly aus.

                              AlCalzoneA Offline
                              AlCalzoneA Offline
                              AlCalzone
                              Developer
                              schrieb am zuletzt editiert von
                              #24

                              @ChristianG Ich glaube ich verstehe den Anwendungsfall nicht. Wenn es wirklich nur um Einlesen-on-demand geht, kannst du es einfach im Skript-Editor manuell starten und stoppen.
                              Wenn es irgendwie automatisiert werden soll:
                              Auf einen Datenpunkt triggern und diesen bei Bedarf beschreiben.

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

                              1 Antwort Letzte Antwort
                              0
                              • C Offline
                                C Offline
                                ChristianG
                                schrieb am zuletzt editiert von
                                #25

                                Das geht doch auch:

                                Bildschirmfoto 2020-07-06 um 20.19.22.png

                                Kann ruhig beim Neustart ausführen oder alle 5 min wenn das Script triggered wurde.

                                AlCalzoneA 1 Antwort Letzte Antwort
                                0
                                • C ChristianG

                                  Das geht doch auch:

                                  Bildschirmfoto 2020-07-06 um 20.19.22.png

                                  Kann ruhig beim Neustart ausführen oder alle 5 min wenn das Script triggered wurde.

                                  AlCalzoneA Offline
                                  AlCalzoneA Offline
                                  AlCalzone
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #26

                                  @ChristianG Wie du meinst... Die Lösung mit scriptEnabled ist nicht offiziell unterstützt und hat (wie man im Forum nachlesen kann) schon häufig zu Problemen geführt. Verwendung also auf eigene Gefahr - ich werde weiterhin davon abraten.

                                  Sauberer wäre ein Trigger-Datenpunkt (keine Ahnung warum du dich so dagegen sträubst, so brauchst du ein weiteres Skript) oder den Timer direkt ins betreffende Skript einbauen.

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

                                  C 1 Antwort Letzte Antwort
                                  0
                                  • AlCalzoneA AlCalzone

                                    @ChristianG Wie du meinst... Die Lösung mit scriptEnabled ist nicht offiziell unterstützt und hat (wie man im Forum nachlesen kann) schon häufig zu Problemen geführt. Verwendung also auf eigene Gefahr - ich werde weiterhin davon abraten.

                                    Sauberer wäre ein Trigger-Datenpunkt (keine Ahnung warum du dich so dagegen sträubst, so brauchst du ein weiteres Skript) oder den Timer direkt ins betreffende Skript einbauen.

                                    C Offline
                                    C Offline
                                    ChristianG
                                    schrieb am zuletzt editiert von
                                    #27

                                    @AlCalzone Ja dann baue ich das direkt mit ins Skript ein, macht ja Sinn.

                                    paul53P 1 Antwort Letzte Antwort
                                    0
                                    • C ChristianG

                                      @AlCalzone Ja dann baue ich das direkt mit ins Skript ein, macht ja Sinn.

                                      paul53P Offline
                                      paul53P Offline
                                      paul53
                                      schrieb am zuletzt editiert von
                                      #28

                                      @ChristianG sagte:

                                      dann baue ich das direkt mit ins Skript ein

                                      Verwende besser einen Zeitplan-Trigger für die zyklische Abfrage.

                                      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 Antwort Letzte Antwort
                                      0
                                      • paul53P paul53

                                        @ChristianG sagte:

                                        dann baue ich das direkt mit ins Skript ein

                                        Verwende besser einen Zeitplan-Trigger für die zyklische Abfrage.

                                        C Offline
                                        C Offline
                                        ChristianG
                                        schrieb am zuletzt editiert von
                                        #29

                                        @paul53 naja ich will jede 5 Minuten die neue Daten abrufen. Also mit nem Cronjob oder wie?

                                        paul53P 1 Antwort Letzte Antwort
                                        0
                                        • C ChristianG

                                          @paul53 naja ich will jede 5 Minuten die neue Daten abrufen. Also mit nem Cronjob oder wie?

                                          paul53P Offline
                                          paul53P Offline
                                          paul53
                                          schrieb am zuletzt editiert von paul53
                                          #30

                                          @ChristianG sagte:

                                          Also mit nem Cronjob oder wie?

                                          Ja,

                                          schedule('*/5 * * * *', Funktion);
                                          

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

                                          634

                                          Online

                                          32.6k

                                          Benutzer

                                          82.1k

                                          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