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. [gelöst]Timingprobleme bei createState und setState im selben Skript

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.6k

[gelöst]Timingprobleme bei createState und setState im selben Skript

Geplant Angeheftet Gesperrt Verschoben JavaScript
37 Beiträge 6 Kommentatoren 5.2k Aufrufe 5 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.
  • F Offline
    F Offline
    Fitti
    schrieb am zuletzt editiert von
    #1

    Hi,

    kann es sein, dass es Timingprobleme bei createState und setState im selben skript gibt?

    Ich beobachte das eigentlich schon seit zwei Jahren.

    Okay, was mache ich:

    createState("MeineVarA", "nicht_gesetzt", {name: 'Ich bin ein Beispiel',  type: 'string'});
    //noch ein bischen zeitunkritischer Code, vielleicht ein Datum z. B. abfragen
    setState("MeineVarA", "bin_gesetzt");
    
    

    Starte ich nun das Skript, erhalte ich eine Warnung im Log:
    ` > javascript.0 2018-01-07 13:17:40.332 warn at script.js._Test.Testskript:2:1

    javascript.0 2018-01-07 13:17:40.330 warn State "MeineVarA" not found `

    Schaue ich nun in die Objekte, gibt es das Objekt "MeineVarA" mit dem String "nicht_gesetzt".

    Es scheint also so, als ob setState zu früh passiert.

    Das habe ich schon bei allen möglichen Skripten, die ich mir hier so kopierte, festgestellt.

    Feature oder Bug?

    Restarte ich das Programm, sind die Fehlermeldungen weg und das Object hat den Wert "bin_gesetzt".

    So long,

    Fitti

    "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
    Plural von Status ist auch Status!

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @Fitti:

      Schaue ich nun in die Objekte, gibt es das Objekt "MeineVarA" mit dem String "nicht_gesetzt".

      Es scheint also so, als ob setState zu früh passiert. `
      So ist es. Javascript ist nunmal viel schneller als man in den Objekten schauen kann.

      Willst Du auf den Datenpunkt, der mit createState() erzeugt wird, sofort zugreifen, kannst Du das in der Callback-Funktion von createState() machen.

      createState("MeineVarA", "nicht_gesetzt", {name: 'Ich bin ein Beispiel',  type: 'string'}, function() {
         setState("MeineVarA", "bin_gesetzt");
      });
      
      

      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
      0
      • F Offline
        F Offline
        Fitti
        schrieb am zuletzt editiert von
        #3

        @paul53:

        So ist es. Javascript ist nunmal viel schneller als man in den Objekten schauen kann. `
        Du meinst "schreiben", oder?

        @Fitti:

        Willst Du auf den Datenpunkt, der mit createState() erzeugt wird, sofort zugreifen, kannst Du das in der Callback-Funktion von createState() machen.

        createState("MeineVarA", "nicht_gesetzt", {name: 'Ich bin ein Beispiel',  type: 'string'}, function() {
           setState("MeineVarA", "bin_gesetzt");
        });
        ```` `  
        

        Hmm, danke für den Tipp - aber das finde ich nicht so schön für eine gut lesbare Syntax, auch wenn es ein hilfreicher Hinweis von Dir war!

        Ich erstelle mir gerade ein Programm, bei dem ich ca. 15 Objekte anlegen möchte.

        Jetzt müsste ich also bei allen ersten setStates eines Objectes den createState nach Deinem Beispiel davor schreiben.

        Letztendlich fängt ja createState ab, ob er bereits angelegt wurde, richtig? Dann würde das Skript, welches immer wiederkehrend aufgerufen wird, unnötig arbeiten durchführen.

        Zumindest erklärt es, warum bei so vielen Skripten hier aus dem Forum beim ersten Mal auch immer eine Fehlermeldung gibt.

        Das muss doch irgendwie noch anders gehen. So wie ich aber js kenne, würde nicht einmal ein setTimeOut helfen.

        Also z.B. Skriptablauf:

        =>Header
        =>create States
        =>setTimeout 500ms
        =>Mache mein eigentliches Programm
        	berechne was, 
        	schreibe setStates
        	usw.
        

        Ich frage mich überhaupt: Was ist denn aus der Sicht eines Software Entwicklers BestPractize? Letztendlich sind die CreateStates ja auch "unschön" beim Neustart eines Skriptes oder des JS Adapters.

        Ich suche sowas wie beim Arduino, bei dem es eine Initphase gibt und dann der Loop.

        BTW: Ich möchte dann das, was ich hier zusammen schreibe, auch hier vorstellen, daher versuche ich eine möglichst problemlose Abfolge zu schreiben.

        "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
        Plural von Status ist auch Status!

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @Fitti:

          Was ist denn aus der Sicht eines Software Entwicklers BestPractize? Letztendlich sind die CreateStates ja auch "unschön" beim Neustart eines Skriptes oder des JS Adapters. `
          Ich erzeuge Datenpunkte nicht im Skript mit createState(), sondern im Reiter "Objekte", denn dort werden gleich sinnvolle Eigenschaften je nach Datenpunkt-Typ angeboten. Ansonsten erzeuge ich gleiche Datenpunkte, die sich nur im Namen und ID unterscheiden mit einem Skript.

          function copyDatapoint(src, dst) {
              var sid = getIdByName(src);
              var sdp = getObject(sid).common;
              createState(dst, sdp.def, { read: sdp.read,
                                          write: sdp.write,
                                          desc: sdp.desc,
                                          type: sdp.type,
                                          min: sdp.min,
                                          max: sdp.max,
                                          def: sdp.def,
                                          unit: sdp.unit,
                                          states: sdp.states,
                                          role: sdp.role
              });
          }
          
          copyDatapoint("Aussen.Feuchtegehalt", "Bad.Feuchtegehalt");
          
          

          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
          0
          • frankjokeF Offline
            frankjokeF Offline
            frankjoke
            schrieb am zuletzt editiert von
            #5

            Fitti,

            bei Arduino läft nur ein Programm, und zwar deines auch dem Rechner.

            Nodejs ist komplett anders und javascript kommt aktuell vom Webbrowser der auch 100erte Sachen gleichzeitig (aber aeventuell nur auf einem Prozessor) machen muss.

            Nun ioBroker besteht im Grunde aus dem js-controller und vielen Adaptern.

            Der js-controller kontrolliert die Objekte und stetes und tauscht sie zwischen den Adaptern aus. Wenn du nun ein Objekt als state anlegst bekommt der js-controller den Befehl dafür und dieser bestätigt Erfolg oder Misserfolg via dem callback (welche alle asynchrone Prozesse brauchen).

            da der js-controller nicht im gleichen Prozess läuft sondern in einer eigenen, und die Objektdatenbank auch in eigenen Prozessen laufen und sogar zwischen master und slaves ausgetauscht werden müssen dauert das Anlegen von Objekten eben etwas länger.

            Du kannst ja eine Routine schreiben welche beides (create-State und setState) nacheinander mit callback ausführst!

            Ich verwende sowas auch anstatt setState, es schaut ungefähr so aus:

            var createdStates = {};
            function mySetState (id,value,ack) {
                  if (ack === undefined)
                    ack=true;
                  if (createdStates[id])
                    return setState(id,value,ack);
                 createState(id,val,{name: id, type: typeof value}, function(res) {
                   createdStates[id] = true;
                   setState(id,value,ack);
                 });
            }
            

            Frank,

            NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
            Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

            1 Antwort Letzte Antwort
            0
            • F Offline
              F Offline
              Fitti
              schrieb am zuletzt editiert von
              #6

              @fsjoke:

              bei Arduino läft nur ein Programm, und zwar deines auch dem Rechner.

              Nodejs ist komplett anders und javascript kommt aktuell vom Webbrowser der auch 100erte Sachen gleichzeitig (aber aeventuell nur auf einem Prozessor) machen muss. `
              Das weiß ich glücklicherweise. Ich programmiere schon weit über 20 Jahren, bin aber kein Entwickler - eher ein Anpasser.

              Jedoch vergeht quasi kein Tag, an dem ich nicht was Programmiere.

              Ich meinte es auch nur im Sinnbildlichen für die, die Wissen, wie der Arduino im Einfachen arbeitet. Also Einstieg, dann endlos while Schleife.

              Da ich auch noch aus Zeiten komme, wo jedes Bit und jeder Assemblerschritt gut zu überlegen war, kann ich meine Gewohnheiten nicht ganz ablegen.

              Somit suche ich also nach den BestPractizes, Du und Paul haben mir ja schon ein paar Beispiele genannt.

              Ich überlege halt einfach nur, auch ein vis. Widget zu schreiben, da das, was ich hier gerade mache bestimmt auch für andere nützlich ist.

              Oder zumindst einen Adapter - so aus reiner Lust und ich möchte der Community auch mal was geben.

              Und wenn dann ein Skript, mit dem es hier erst einmal beginnt einfach beim Erstlauf Schwierigkeiten macht, finde ich das gerade nicht schön. Nun wollte ich auch nicht gleich mit "try" rangehen, was ja auch eine Möglichkeit wäre.

              Ich frage mich also, wie ein Adapter das löst? Auf die Schnelle(!) habe ich nur festgestellt, dass es (fas leider) nun solch eine Flut an Anleitungen und Hinweisen überall im Netz gibt, die leider einen mehr erschlagen, als das dieses einem nützt. Oder sie sind veraltert - oder einfach noch zu neu. Ich habe da russische Dinge auf Youtube über iobroker gesehen… :shock:

              Aber ich sehe gerade in einem Adapter, dass vermutlich andere Funktionen wie .createDevice dieses durchführen.

              Somit soll also alles erst mal einen Schritt nach dem anderen passieren und ich möchte möglichst eine saubere Lösung als Skript haben, die ich ja so erst einmal vorstellen kann.

              Wenn das läuft (bin eigentlich schon fast fertig) möchte ich mir das ansehen, wie ein Adapter erstellt wird. Irgendwo gab es doch auch eine Anleitung von Bluefox, oder?....

              "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
              Plural von Status ist auch Status!

              1 Antwort Letzte Antwort
              0
              • AlCalzoneA Offline
                AlCalzoneA Offline
                AlCalzone
                Developer
                schrieb am zuletzt editiert von
                #7

                @Fitti:

                Ich frage mich also, wie ein Adapter das löst? `
                Ich überprüfe in der Regel dann wenn ein Objekt/State aktualisiert werden muss, ob er schon existiert und lege ihn ansonsten vor dem Schreiben an.

                Du kannst deine klassische "Init => Programm"-Struktur aber folgendermaßen nachbilden (schematisch, ungetestet). Die "…" musst du noch an deine Ansprüche anpassen:

                // Einmalig beim Programmstart alle States erzeugen, sofern nicht schon geschehen
                var states = [
                  {id: "stateID1", initial: "Initialwert1", ...sonstiges},
                  {id: "stateID2", initial: "Initialwert1", ...sonstiges}
                ];
                var numStates = states.length;
                states.each(function(state) {
                	createState(state.id, state.initial, ..., function() {
                		numStates--;
                		if (numStates === 0) {
                			// fertig!
                			main();
                		}
                	});
                });
                
                function main() {
                    // hier der eigentliche Programmablauf
                }
                
                

                Ein fixer Timeout ist nicht zu empfehlen, für den Programmfluss sind die Callbacks in NodeJS nämlich da.

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

                P 1 Antwort Letzte Antwort
                0
                • F Offline
                  F Offline
                  Fitti
                  schrieb am zuletzt editiert von
                  #8

                  Das gefällt mir. Danke!

                  So long,

                  Fitti

                  "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
                  Plural von Status ist auch Status!

                  1 Antwort Letzte Antwort
                  0
                  • AlCalzoneA AlCalzone

                    @Fitti:

                    Ich frage mich also, wie ein Adapter das löst? `
                    Ich überprüfe in der Regel dann wenn ein Objekt/State aktualisiert werden muss, ob er schon existiert und lege ihn ansonsten vor dem Schreiben an.

                    Du kannst deine klassische "Init => Programm"-Struktur aber folgendermaßen nachbilden (schematisch, ungetestet). Die "…" musst du noch an deine Ansprüche anpassen:

                    // Einmalig beim Programmstart alle States erzeugen, sofern nicht schon geschehen
                    var states = [
                      {id: "stateID1", initial: "Initialwert1", ...sonstiges},
                      {id: "stateID2", initial: "Initialwert1", ...sonstiges}
                    ];
                    var numStates = states.length;
                    states.each(function(state) {
                    	createState(state.id, state.initial, ..., function() {
                    		numStates--;
                    		if (numStates === 0) {
                    			// fertig!
                    			main();
                    		}
                    	});
                    });
                    
                    function main() {
                        // hier der eigentliche Programmablauf
                    }
                    
                    

                    Ein fixer Timeout ist nicht zu empfehlen, für den Programmfluss sind die Callbacks in NodeJS nämlich da.

                    P Offline
                    P Offline
                    Pittini
                    Developer
                    schrieb am zuletzt editiert von Pittini
                    #9

                    @AlCalzone sagte in [gelöst]Timingprobleme bei createState und setState im selben Skript:

                    Du kannst deine klassische "Init => Programm"-Struktur aber folgendermaßen nachbilden (schematisch, ungetestet). Die "…" musst du noch an deine Ansprüche anpassen:

                    Ich weis, altes Thema, aber für mich grade topaktuell und ich stell mich zu blöd an, das anzupassen.
                    Grundsätzlich werden die States angelegt, aber nichts aus dem "common" Bereich (name/read/write/def/usw.).
                    Vieleicht mag @AlCalzone mal nen kurzen Blick drauf werfen.

                    PS: Wenn ich Zeile 29 ändere, von:

                        createState(state.id, state.initial, state.forceCreation,  function () {
                    

                    zu

                        createState(state.id, state.initial, state.forceCreation, state.common, function () {
                    

                    werden zumindest die default Werte angelegt. Aber das state.common hat nen roten Kringel und der Name ist vollkommen falsch, nämlich die ID und nicht was in name definiert wurde.

                    switch (ProfileType) {
                        case "Mo - Su":
                            y = 0;
                            for (let x = 0; x <= NumberOfPeriods - 1; x++) {
                                states[y] = { id: praefix + "ProfileTypes.Mo-Su.Periods." + x + ".Temperature", initial: 20, forceCreation: false, read: true, write: true, name: "target temperature", type: "number", def: 20 };
                                y++
                                states[y] = { id: praefix + "ProfileTypes.Mo-Su.Periods." + x + ".time", initial: "00:00", forceCreation: false, read: true, write: true, name: "period from", type: "string", def: " 00:00" };
                                y++
                            };
                            break;
                    
                        //V2 Mo-Fr / Sa-So
                        case "Mo - Fr / Sa - Su":
                            y = 0;
                            for (let x = 0; x <= NumberOfPeriods - 1; x++) {
                                states[y] = { id: praefix + "ProfileTypes.Mo-Fr.Periods." + x + ".Temperature", initial: 20, forceCreation: false, read: true, write: true, name: "target temperature", type: "number", def: 20 };
                                y++
                                states[y] = { id: praefix + "ProfileTypes.Mo-Fr.Periods." + x + ".time", initial: "00:00", forceCreation: false, read: true, write: true, name: "period from", type: "string", def: " 00:00" };
                                y++
                                states[y] = { id: praefix + "ProfileTypes.Sa-So.Periods." + x + ".Temperature", initial: 20, forceCreation: false, read: true, write: true, name: "target temperature", type: "number", def: 20 };
                                y++
                                states[y] = { id: praefix + "ProfileTypes.Sa-So.Periods." + x + ".time", initial: "00:00", forceCreation: false, read: true, write: true, name: "period from", type: "string", def: " 00:00" };
                                y++
                            };
                            break;
                    };
                    let numStates = states.length;
                    states.forEach(function (state) {
                        createState(state.id, state.initial, state.forceCreation,  function () {
                            numStates--;
                            if (numStates === 0) {
                                log("fertig!");
                                //main();
                            }
                        });
                    });
                    
                    
                    C 1 Antwort Letzte Antwort
                    0
                    • P Pittini

                      @AlCalzone sagte in [gelöst]Timingprobleme bei createState und setState im selben Skript:

                      Du kannst deine klassische "Init => Programm"-Struktur aber folgendermaßen nachbilden (schematisch, ungetestet). Die "…" musst du noch an deine Ansprüche anpassen:

                      Ich weis, altes Thema, aber für mich grade topaktuell und ich stell mich zu blöd an, das anzupassen.
                      Grundsätzlich werden die States angelegt, aber nichts aus dem "common" Bereich (name/read/write/def/usw.).
                      Vieleicht mag @AlCalzone mal nen kurzen Blick drauf werfen.

                      PS: Wenn ich Zeile 29 ändere, von:

                          createState(state.id, state.initial, state.forceCreation,  function () {
                      

                      zu

                          createState(state.id, state.initial, state.forceCreation, state.common, function () {
                      

                      werden zumindest die default Werte angelegt. Aber das state.common hat nen roten Kringel und der Name ist vollkommen falsch, nämlich die ID und nicht was in name definiert wurde.

                      switch (ProfileType) {
                          case "Mo - Su":
                              y = 0;
                              for (let x = 0; x <= NumberOfPeriods - 1; x++) {
                                  states[y] = { id: praefix + "ProfileTypes.Mo-Su.Periods." + x + ".Temperature", initial: 20, forceCreation: false, read: true, write: true, name: "target temperature", type: "number", def: 20 };
                                  y++
                                  states[y] = { id: praefix + "ProfileTypes.Mo-Su.Periods." + x + ".time", initial: "00:00", forceCreation: false, read: true, write: true, name: "period from", type: "string", def: " 00:00" };
                                  y++
                              };
                              break;
                      
                          //V2 Mo-Fr / Sa-So
                          case "Mo - Fr / Sa - Su":
                              y = 0;
                              for (let x = 0; x <= NumberOfPeriods - 1; x++) {
                                  states[y] = { id: praefix + "ProfileTypes.Mo-Fr.Periods." + x + ".Temperature", initial: 20, forceCreation: false, read: true, write: true, name: "target temperature", type: "number", def: 20 };
                                  y++
                                  states[y] = { id: praefix + "ProfileTypes.Mo-Fr.Periods." + x + ".time", initial: "00:00", forceCreation: false, read: true, write: true, name: "period from", type: "string", def: " 00:00" };
                                  y++
                                  states[y] = { id: praefix + "ProfileTypes.Sa-So.Periods." + x + ".Temperature", initial: 20, forceCreation: false, read: true, write: true, name: "target temperature", type: "number", def: 20 };
                                  y++
                                  states[y] = { id: praefix + "ProfileTypes.Sa-So.Periods." + x + ".time", initial: "00:00", forceCreation: false, read: true, write: true, name: "period from", type: "string", def: " 00:00" };
                                  y++
                              };
                              break;
                      };
                      let numStates = states.length;
                      states.forEach(function (state) {
                          createState(state.id, state.initial, state.forceCreation,  function () {
                              numStates--;
                              if (numStates === 0) {
                                  log("fertig!");
                                  //main();
                              }
                          });
                      });
                      
                      
                      C Offline
                      C Offline
                      CruziX
                      schrieb am zuletzt editiert von
                      #10

                      @Pittini Du gibst den erzeugten states, so wie ich das sehe auch kein common attribut?
                      Wo setzt du bsp. hierbei das attribut common, auf das du dann zugreifen möchtest?

                      states[y] = { id: praefix + "ProfileTypes.Mo-Su.Periods." + x + ".Temperature", initial: 20, forceCreation: false, read: true, write: true, name: "target temperature", type: "number", def: 20 };
                      

                      state.id, state.initial und state.forceCreation gehen, weil du den Objekten diese Eigenschaften gegeben hast.

                      P 1 Antwort Letzte Antwort
                      0
                      • C CruziX

                        @Pittini Du gibst den erzeugten states, so wie ich das sehe auch kein common attribut?
                        Wo setzt du bsp. hierbei das attribut common, auf das du dann zugreifen möchtest?

                        states[y] = { id: praefix + "ProfileTypes.Mo-Su.Periods." + x + ".Temperature", initial: 20, forceCreation: false, read: true, write: true, name: "target temperature", type: "number", def: 20 };
                        

                        state.id, state.initial und state.forceCreation gehen, weil du den Objekten diese Eigenschaften gegeben hast.

                        P Offline
                        P Offline
                        Pittini
                        Developer
                        schrieb am zuletzt editiert von Pittini
                        #11

                        @CruziX
                        Ich steh grad aufm Schlauch, was meinst Du? Beim normalen createState muß ich doch common auch ned separat definieren?
                        Aber Versuch macht kluch, ich habs mal probiert, jetzt wird alles korrekt angelegt, aber nu mault er state.forceCreation an.

                        AlCalzoneA 1 Antwort Letzte Antwort
                        0
                        • P Pittini

                          @CruziX
                          Ich steh grad aufm Schlauch, was meinst Du? Beim normalen createState muß ich doch common auch ned separat definieren?
                          Aber Versuch macht kluch, ich habs mal probiert, jetzt wird alles korrekt angelegt, aber nu mault er state.forceCreation an.

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

                          @Pittini sagte in [gelöst]Timingprobleme bei createState und setState im selben Skript:

                          Ich steh grad aufm Schlauch, was meinst Du? Beim normalen createState muß ich doch common auch ned separat definieren?

                          Wenn du willst, dass deine States nachher bestimmte common-Eigenschaften (z.B. Name) haben, musst du das beim createState mitgeben. Wie soll createState sonst wissen können, was du da für Eigenschaften haben willst?

                          Ändere mal deine Objektdefinitionen von z.B.

                          states[y] = { id: praefix + "ProfileTypes.Sa-So.Periods." + x + ".time", initial: "00:00", forceCreation: false, read: true, write: true, name: "period from", type: "string", def: " 00:00" }
                          

                          zu

                          states[y] = { id: praefix + "ProfileTypes.Sa-So.Periods." + x + ".time", initial: "00:00", forceCreation: false, common: { read: true, write: true, name: "period from", type: "string", def: " 00:00" } }
                          

                          (also alles innerhalb common in ein Objekt gruppieren), dann sollte es auch mit dem createState inklusive common klappen.

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

                          P C 2 Antworten Letzte Antwort
                          0
                          • AlCalzoneA AlCalzone

                            @Pittini sagte in [gelöst]Timingprobleme bei createState und setState im selben Skript:

                            Ich steh grad aufm Schlauch, was meinst Du? Beim normalen createState muß ich doch common auch ned separat definieren?

                            Wenn du willst, dass deine States nachher bestimmte common-Eigenschaften (z.B. Name) haben, musst du das beim createState mitgeben. Wie soll createState sonst wissen können, was du da für Eigenschaften haben willst?

                            Ändere mal deine Objektdefinitionen von z.B.

                            states[y] = { id: praefix + "ProfileTypes.Sa-So.Periods." + x + ".time", initial: "00:00", forceCreation: false, read: true, write: true, name: "period from", type: "string", def: " 00:00" }
                            

                            zu

                            states[y] = { id: praefix + "ProfileTypes.Sa-So.Periods." + x + ".time", initial: "00:00", forceCreation: false, common: { read: true, write: true, name: "period from", type: "string", def: " 00:00" } }
                            

                            (also alles innerhalb common in ein Objekt gruppieren), dann sollte es auch mit dem createState inklusive common klappen.

                            P Offline
                            P Offline
                            Pittini
                            Developer
                            schrieb am zuletzt editiert von
                            #13

                            @AlCalzone
                            Jap, so funktioniert das, besten DAnk. Allerdings passt ihm jetzt state.forceCreation nicht. Was hab ich da noch falsch?

                            2020-03-05 17_21_09-javascript - ioBroker.png

                            C 1 Antwort Letzte Antwort
                            0
                            • AlCalzoneA AlCalzone

                              @Pittini sagte in [gelöst]Timingprobleme bei createState und setState im selben Skript:

                              Ich steh grad aufm Schlauch, was meinst Du? Beim normalen createState muß ich doch common auch ned separat definieren?

                              Wenn du willst, dass deine States nachher bestimmte common-Eigenschaften (z.B. Name) haben, musst du das beim createState mitgeben. Wie soll createState sonst wissen können, was du da für Eigenschaften haben willst?

                              Ändere mal deine Objektdefinitionen von z.B.

                              states[y] = { id: praefix + "ProfileTypes.Sa-So.Periods." + x + ".time", initial: "00:00", forceCreation: false, read: true, write: true, name: "period from", type: "string", def: " 00:00" }
                              

                              zu

                              states[y] = { id: praefix + "ProfileTypes.Sa-So.Periods." + x + ".time", initial: "00:00", forceCreation: false, common: { read: true, write: true, name: "period from", type: "string", def: " 00:00" } }
                              

                              (also alles innerhalb common in ein Objekt gruppieren), dann sollte es auch mit dem createState inklusive common klappen.

                              C Offline
                              C Offline
                              CruziX
                              schrieb am zuletzt editiert von
                              #14

                              @AlCalzone sagte in [gelöst]Timingprobleme bei createState und setState im selben Skript:

                              @Pittini sagte in [gelöst]Timingprobleme bei createState und setState im selben Skript:

                              Ich steh grad aufm Schlauch, was meinst Du? Beim normalen createState muß ich doch common auch ned separat definieren?

                              Wenn du willst, dass deine States nachher bestimmte common-Eigenschaften (z.B. Name) haben, musst du das beim createState mitgeben. Wie soll createState sonst wissen können, was du da für Eigenschaften haben willst?

                              Ändere mal deine Objektdefinitionen von z.B.

                              states[y] = { id: praefix + "ProfileTypes.Sa-So.Periods." + x + ".time", initial: "00:00", forceCreation: false, read: true, write: true, name: "period from", type: "string", def: " 00:00" }
                              

                              zu

                              states[y] = { id: praefix + "ProfileTypes.Sa-So.Periods." + x + ".time", initial: "00:00", forceCreation: false, common: { read: true, write: true, name: "period from", type: "string", def: " 00:00" } }
                              

                              (also alles innerhalb common in ein Objekt gruppieren), dann sollte es auch mit dem createState inklusive common klappen.

                              Jep, genau das meinte ich ^^

                              1 Antwort Letzte Antwort
                              0
                              • P Pittini

                                @AlCalzone
                                Jap, so funktioniert das, besten DAnk. Allerdings passt ihm jetzt state.forceCreation nicht. Was hab ich da noch falsch?

                                2020-03-05 17_21_09-javascript - ioBroker.png

                                C Offline
                                C Offline
                                CruziX
                                schrieb am zuletzt editiert von
                                #15

                                @Pittini zeig doch nochmal bitte das setzen der states

                                P 1 Antwort Letzte Antwort
                                0
                                • C CruziX

                                  @Pittini zeig doch nochmal bitte das setzen der states

                                  P Offline
                                  P Offline
                                  Pittini
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #16

                                  @CruziX

                                  states[y] = { id: praefix + "ProfileTypes.Sun.Periods." + x + ".time", initial: "00:00", forceCreation: false, common: { read: true, write: true, name: "period from", type: "string", def: " 00:00" } }; // 
                                  
                                  
                                      createState(state.id, state.initial, state.forceCreation, state.common, function () {
                                  
                                  
                                  C 1 Antwort Letzte Antwort
                                  0
                                  • P Pittini

                                    @CruziX

                                    states[y] = { id: praefix + "ProfileTypes.Sun.Periods." + x + ".time", initial: "00:00", forceCreation: false, common: { read: true, write: true, name: "period from", type: "string", def: " 00:00" } }; // 
                                    
                                    
                                        createState(state.id, state.initial, state.forceCreation, state.common, function () {
                                    
                                    
                                    C Offline
                                    C Offline
                                    CruziX
                                    schrieb am zuletzt editiert von
                                    #17

                                    @Pittini funktioniert es denn trotzdem? Habe in meinen Srkipts auch manchmal was rot aber es geht

                                    P 1 Antwort Letzte Antwort
                                    0
                                    • C CruziX

                                      @Pittini funktioniert es denn trotzdem? Habe in meinen Srkipts auch manchmal was rot aber es geht

                                      P Offline
                                      P Offline
                                      Pittini
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #18

                                      @CruziX sagte in [gelöst]Timingprobleme bei createState und setState im selben Skript:

                                      funktioniert es denn trotzdem? Habe in meinen Srkipts auch manchmal was rot aber es geht

                                      Ja, hab ich oben ja geschrieben dass es funktioniert. Und ja, ich kenn das auch mit den roten Kringeln gelegntlich, aber meist sind die immer da und kommen nicht erst wenn mans richtig macht.

                                      AlCalzoneA 1 Antwort Letzte Antwort
                                      0
                                      • P Pittini

                                        @CruziX sagte in [gelöst]Timingprobleme bei createState und setState im selben Skript:

                                        funktioniert es denn trotzdem? Habe in meinen Srkipts auch manchmal was rot aber es geht

                                        Ja, hab ich oben ja geschrieben dass es funktioniert. Und ja, ich kenn das auch mit den roten Kringeln gelegntlich, aber meist sind die immer da und kommen nicht erst wenn mans richtig macht.

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

                                        @Pittini sagte in [gelöst]Timingprobleme bei createState und setState im selben Skript:

                                        meist sind die immer da und kommen nicht erst wenn mans richtig macht.

                                        Dann schick mir bitte mal ein paar Beispiele wo du denkst dass sie nicht angebracht sind. Eigentlich sollten die auf Fehler hinweisen.
                                        Z.B. was kommt beim ForceCreation-Fehler wenn du mit der Maus drüber gehst?

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

                                        P 2 Antworten Letzte Antwort
                                        0
                                        • AlCalzoneA AlCalzone

                                          @Pittini sagte in [gelöst]Timingprobleme bei createState und setState im selben Skript:

                                          meist sind die immer da und kommen nicht erst wenn mans richtig macht.

                                          Dann schick mir bitte mal ein paar Beispiele wo du denkst dass sie nicht angebracht sind. Eigentlich sollten die auf Fehler hinweisen.
                                          Z.B. was kommt beim ForceCreation-Fehler wenn du mit der Maus drüber gehst?

                                          P Offline
                                          P Offline
                                          Pittini
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #20

                                          @AlCalzone sagte in [gelöst]Timingprobleme bei createState und setState im selben Skript:

                                          Z.B. was kommt beim ForceCreation-Fehler wenn du mit der Maus drüber gehst?

                                          2020-03-06 08_36_34-javascript - ioBroker.png

                                          AlCalzoneA 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

                                          627

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          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