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. [gelöst]-Alle Objekte eines Ordners...

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

[gelöst]-Alle Objekte eines Ordners...

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascriptblockly
27 Beiträge 3 Kommentatoren 3.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.
  • P Offline
    P Offline
    Peterfrosta
    schrieb am zuletzt editiert von
    #12

    wobei mir die Funktion vom Baustein Javascript nicht ersichtlich ist.
    (Ja klar, der führt nen Javascript bzw Befehl aus?!

    liv-in-skyL 1 Antwort Letzte Antwort
    0
    • P Peterfrosta

      @liv-in-sky said in Alle Objekte eines Ordners...:

      var Temperatur = $('state[id=*](functions="temperatur")');

      die Zeile hatte ich übersprungen und checke ich doch nicht ganz.

      Das:

      Temperatur.each(function (id, i)

      wird ja schematisch sowas wie das:

      $('time-switch.0.onoff.0.*').each(function(id, i) {

      ergeben.

      Wenn ich jetzt so einen Screenshot von der Ordnerstruktur wie in deinem ersten Post zu sehen bekommen könnte, würde die Logik vermutlich selbst durchsteigen ;)

      liv-in-skyL Offline
      liv-in-skyL Offline
      liv-in-sky
      schrieb am zuletzt editiert von
      #13

      @Peterfrosta

      bei

      $('state[id=*](functions="temperatur")');
      

      gibt es keine ordner struktur - das läuft über aufzählung bzw functions - damit braucht man nicht alle datenpunkte in einem ordner, sondern irgenwo in deiner struktur

      Image 7.png
      Image 8.png

      ansonsten stimmt was du vermutest - da wurde einfach eine variable daraus gemacht und diese variable ist vor dem each()

      das function blockly hat drei punkte - rechts - wenn du darauf gehst , kannst du javascript direkt eingeben ( ist auch .z.b. sehr nutzlich, wenn man strings bearbeitet (mit regex oder replace, ..) ist- js viel einfacher, als ein blockly zusammen zu schustern

      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

      1 Antwort Letzte Antwort
      0
      • P Peterfrosta

        wobei mir die Funktion vom Baustein Javascript nicht ersichtlich ist.
        (Ja klar, der führt nen Javascript bzw Befehl aus?!

        liv-in-skyL Offline
        liv-in-skyL Offline
        liv-in-sky
        schrieb am zuletzt editiert von
        #14

        @Peterfrosta sagte in Alle Objekte eines Ordners...:

        wobei mir die Funktion vom Baustein Javascript nicht ersichtlich ist.
        (Ja klar, der führt nen Javascript bzw Befehl aus?!

        ist direkt am rechner sehr leicht zu verstehen

        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

        P 1 Antwort Letzte Antwort
        0
        • liv-in-skyL liv-in-sky

          @Peterfrosta sagte in Alle Objekte eines Ordners...:

          wobei mir die Funktion vom Baustein Javascript nicht ersichtlich ist.
          (Ja klar, der führt nen Javascript bzw Befehl aus?!

          ist direkt am rechner sehr leicht zu verstehen

          P Offline
          P Offline
          Peterfrosta
          schrieb am zuletzt editiert von
          #15

          @liv-in-sky said in Alle Objekte eines Ordners...:

          ist direkt am rechner sehr leicht zu verstehen

          Sagst du, ich saß ja vorhin auch schon am Rechner ;)

          @liv-in-sky said in Alle Objekte eines Ordners...:

          gibt es keine ordner struktur - das läuft über aufzählung bzw functions - damit braucht man nicht alle datenpunkte in einem ordner, sondern irgenwo in deiner struktur..

          also abgesehen davon, dass "Aufzählung" bei mir nicht sichtbar war, hätte ich auch erstmal nicht gewusst wozu das sein soll. Dass kann ich auch für anderes in Betracht ziehen. aber vorallem könnt man damit ja auch prima di Ansicht im ObjektReiter Filtern... gut zu wissen.

          So weit so gut. Alle Objekte lesen und Ausgeben scheint kein Problem.

          var wartung_14tage = $('state[id=*](functions="wartung_14tage")');
          var wartung_30tage = $('state[id=*](functions="wartung_30tage")');
          
          var status;
          var dname;
          
          
          console.log('***********  each 14 Tage**************');
          wartung_14tage.each(function (id, i)
          {
              status = getState(id).val;
              dname = getObject(id).common.name;
              //sendTo("telegram", "send", { text: name+": "+status+" °C" });
              console.log('***********${i}**************');
              console.log(dname);
              console.log(status);
          } );
          
          
          console.log('***********  each 30 Tage**************');
          wartung_30tage.each(function (id, i)
          {
              status = getState(id).val;
              dname = getObject(id).common.name;
              //sendTo("telegram", "send", { text: name+": "+status+" °C" });
              console.log('***********${i}**************');
              console.log(dname);
              console.log(status);
          } );
          

          tehen

          liv-in-skyL 1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            Peterfrosta
            schrieb am zuletzt editiert von
            #16

            jedoch ist das Projekt damit ja noch nicht abgechlossen.

            Ich möchte gerne abhängig vom letzten Änderungsdatum(Zeit) des entsprechende Objekts handeln...

            Wie würde ich das auslesen?

            dname = getObject(id).common.name;

            da habe ich ja das "common.name" auch in den "raw" einstellungen gefunden. aber leider keinen eintrag für den Zeitstempel.... der wird wohl woanders liegen?!

            Sonst hätte ichja sowas vermutet:

            dtimestamp = getObject(id).common.datetime_update;

            paul53P 1 Antwort Letzte Antwort
            0
            • P Peterfrosta

              @liv-in-sky said in Alle Objekte eines Ordners...:

              ist direkt am rechner sehr leicht zu verstehen

              Sagst du, ich saß ja vorhin auch schon am Rechner ;)

              @liv-in-sky said in Alle Objekte eines Ordners...:

              gibt es keine ordner struktur - das läuft über aufzählung bzw functions - damit braucht man nicht alle datenpunkte in einem ordner, sondern irgenwo in deiner struktur..

              also abgesehen davon, dass "Aufzählung" bei mir nicht sichtbar war, hätte ich auch erstmal nicht gewusst wozu das sein soll. Dass kann ich auch für anderes in Betracht ziehen. aber vorallem könnt man damit ja auch prima di Ansicht im ObjektReiter Filtern... gut zu wissen.

              So weit so gut. Alle Objekte lesen und Ausgeben scheint kein Problem.

              var wartung_14tage = $('state[id=*](functions="wartung_14tage")');
              var wartung_30tage = $('state[id=*](functions="wartung_30tage")');
              
              var status;
              var dname;
              
              
              console.log('***********  each 14 Tage**************');
              wartung_14tage.each(function (id, i)
              {
                  status = getState(id).val;
                  dname = getObject(id).common.name;
                  //sendTo("telegram", "send", { text: name+": "+status+" °C" });
                  console.log('***********${i}**************');
                  console.log(dname);
                  console.log(status);
              } );
              
              
              console.log('***********  each 30 Tage**************');
              wartung_30tage.each(function (id, i)
              {
                  status = getState(id).val;
                  dname = getObject(id).common.name;
                  //sendTo("telegram", "send", { text: name+": "+status+" °C" });
                  console.log('***********${i}**************');
                  console.log(dname);
                  console.log(status);
              } );
              

              tehen

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von
              #17

              @Peterfrosta

              der rest wird auch noch :-)

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              1 Antwort Letzte Antwort
              0
              • P Peterfrosta

                jedoch ist das Projekt damit ja noch nicht abgechlossen.

                Ich möchte gerne abhängig vom letzten Änderungsdatum(Zeit) des entsprechende Objekts handeln...

                Wie würde ich das auslesen?

                dname = getObject(id).common.name;

                da habe ich ja das "common.name" auch in den "raw" einstellungen gefunden. aber leider keinen eintrag für den Zeitstempel.... der wird wohl woanders liegen?!

                Sonst hätte ichja sowas vermutet:

                dtimestamp = getObject(id).common.datetime_update;

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

                @Peterfrosta sagte in [gelöst]-Alle Objekte eines Ordners...:

                abhängig vom letzten Änderungsdatum(Zeit) des entsprechende Objekts

                lastChange = getState(id).lc;
                

                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

                P 1 Antwort Letzte Antwort
                0
                • P Offline
                  P Offline
                  Peterfrosta
                  schrieb am zuletzt editiert von Peterfrosta
                  #19

                  danke, das hatte ich zum glück schon gefunden... aber:

                  wenn ichjetzt wissen möchte wie alt der status schon ist, würde ich ja denken, dass ich folgenden prüfen müsste:

                   console.log((Date.now()-getState(id).lc)/1000);
                  

                  Date.now()

                  der Output ist dann aber :
                  11121.896

                  was würde ich ohne dich nur machen ;)

                  hm...

                  edit:

                  und ich hatte den state natürlich wenige Sekunden zuvor geändern. so dass ich eine Zahl in der Größenordnung 1-10 erwartet hätte

                  P liv-in-skyL 2 Antworten Letzte Antwort
                  0
                  • paul53P paul53

                    @Peterfrosta sagte in [gelöst]-Alle Objekte eines Ordners...:

                    abhängig vom letzten Änderungsdatum(Zeit) des entsprechende Objekts

                    lastChange = getState(id).lc;
                    
                    P Offline
                    P Offline
                    Peterfrosta
                    schrieb am zuletzt editiert von
                    #20

                    @paul53 Ach da ist ja wer Neues. Danke dir!

                    1 Antwort Letzte Antwort
                    0
                    • P Peterfrosta

                      danke, das hatte ich zum glück schon gefunden... aber:

                      wenn ichjetzt wissen möchte wie alt der status schon ist, würde ich ja denken, dass ich folgenden prüfen müsste:

                       console.log((Date.now()-getState(id).lc)/1000);
                      

                      Date.now()

                      der Output ist dann aber :
                      11121.896

                      was würde ich ohne dich nur machen ;)

                      hm...

                      edit:

                      und ich hatte den state natürlich wenige Sekunden zuvor geändern. so dass ich eine Zahl in der Größenordnung 1-10 erwartet hätte

                      P Offline
                      P Offline
                      Peterfrosta
                      schrieb am zuletzt editiert von
                      #21

                      @Peterfrosta said in [gelöst]-Alle Objekte eines Ordners...:

                      der Output ist dann aber :
                      11121.896

                      Vergisst es. hatte das falsche Objekt bearbeitet. Entschuldigt bitte.

                      1 Antwort Letzte Antwort
                      0
                      • P Offline
                        P Offline
                        Peterfrosta
                        schrieb am zuletzt editiert von
                        #22

                        gibt es nirgens eine Sammlung (Wiki) für die Sachen auf die man mit getState() oder getObject() zugreifen kann?

                        getObject().common.name
                        getState(id).val
                        getState(id).lc

                        kenne ich ja nun nur von euch hier.

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • P Peterfrosta

                          gibt es nirgens eine Sammlung (Wiki) für die Sachen auf die man mit getState() oder getObject() zugreifen kann?

                          getObject().common.name
                          getState(id).val
                          getState(id).lc

                          kenne ich ja nun nur von euch hier.

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

                          @Peterfrosta sagte:

                          Sammlung (Wiki) für die Sachen auf die man mit getState()

                          Doku

                          @Peterfrosta sagte in [gelöst]-Alle Objekte eines Ordners...:

                          getObject() zugreifen kann?

                          Doku

                          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

                          P 1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @Peterfrosta sagte:

                            Sammlung (Wiki) für die Sachen auf die man mit getState()

                            Doku

                            @Peterfrosta sagte in [gelöst]-Alle Objekte eines Ordners...:

                            getObject() zugreifen kann?

                            Doku

                            P Offline
                            P Offline
                            Peterfrosta
                            schrieb am zuletzt editiert von
                            #24

                            @paul53 DAAANKE :-*

                            1 Antwort Letzte Antwort
                            0
                            • P Peterfrosta

                              danke, das hatte ich zum glück schon gefunden... aber:

                              wenn ichjetzt wissen möchte wie alt der status schon ist, würde ich ja denken, dass ich folgenden prüfen müsste:

                               console.log((Date.now()-getState(id).lc)/1000);
                              

                              Date.now()

                              der Output ist dann aber :
                              11121.896

                              was würde ich ohne dich nur machen ;)

                              hm...

                              edit:

                              und ich hatte den state natürlich wenige Sekunden zuvor geändern. so dass ich eine Zahl in der Größenordnung 1-10 erwartet hätte

                              liv-in-skyL Offline
                              liv-in-skyL Offline
                              liv-in-sky
                              schrieb am zuletzt editiert von liv-in-sky
                              #25

                              @Peterfrosta sagte in [gelöst]-Alle Objekte eines Ordners...:

                              console.log((Date.now()-getState(id).lc)/1000);

                              eher sowas:

                              log(((new Date().getTime()-getState(myid).lc))/1000)
                              

                              aktuelle zeit in ms minus zeit (lastchange) in millisekunden geteilt durch 1000 sind gleich sekunden

                              noch ein kleiner tipp, wenn du mit blockly besser zurecht kommst. du kannst die erstmal ein blockly machen und dieses blockly in js ansehen - dies kannst du dann in deinen js-script kopieren

                              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                              1 Antwort Letzte Antwort
                              0
                              • P Offline
                                P Offline
                                Peterfrosta
                                schrieb am zuletzt editiert von
                                #26

                                So ich bin schon was weiter.. habe ein paar Testfunktionen für die Verarbeitungs der Wartungsstände...
                                Klappte auch erstmal... nun hatte ich geshen, dass die ganze for.each sachen für get alle states und dessen infos sich oft wiederholt -->also ausgelagert in eine eigene Funktion GetWartungsStates()

                                //hier liegen alle Wartungobjekte
                                var root_path="javascript.0.waschstr.wartung";
                                //var alle_wartungen = $('state[id=*](functions="wartung_14tage")');       //Alternative mit "Aufzählung"     //Objekte könnten dann verteilt sein 
                                
                                //definition der Wartungseinträge zum erstmaligen Erstellen der Objekte
                                var states_init = [
                                                ["Cat350 oelen", 30 ], [ "Kameras \"abledern\"", 30 ],
                                                ["Schlamfänge konmtrollieren", 14 ], [ "Lager fetten", 14 ],
                                                ["Kettengetriebe Oelwechseln", 30 ], [ "Cat350 OElwechsel", 30 ], [ "Kompressor OEl Tauschen", 30 ]
                                 ] ;
                                
                                var all_wartungs_states=[];     //globale halte Variable der WartungsObjekte
                                
                                
                                //InitWartungStates(states_init);        //erstellt alle WartungsObjekte
                                //GetWartungsStates();              //fragt alle Wartungsobjekte ab
                                PrintWartungStates();               //gebe alle Einträge aus
                                
                                //PrintWartungStates_alt();           // war ohne GetWartungsStates() und Array für die Werte und Objekte
                                //IsWartungFaellig();
                                
                                
                                
                                //########################################################
                                //##    Funktionenen
                                
                                function InitWartungStates(wartung) {
                                    wartung.forEach(function(id,i) {
                                        createState(root_path+"."+id[0], false, {
                                                read: true,
                                                write: true,
                                                name: id[0],            ///nName/text der wartung
                                                type: "number",
                                                def: 0,
                                                key: i,                 //jede wartung bekommt eigene nummer (kurzbefehl)
                                                interval:id[1]          //alle x Tage wird drann erinnert
                                        });
                                    });
                                }
                                
                                // Versuch mit lokaler und globaler Variable 
                                // hier klappt beides aber.. siehe >> function PrintWartungStates(ordner)
                                function GetWartungsStates(){
                                    var alter_sek;      //hilfsvariable  für wartungs_state["alter_tage"]
                                
                                    //var all_wartungs_states=[];       
                                
                                    var  wartungs_state= {
                                        name: "leer",
                                        state: 0,
                                        interval: 0,
                                        key: 0,
                                        alter_tage: 0 
                                    };
                                
                                    //gehe jedes Objekt im ordner durch
                                    $(root_path+".*").each(function(id, i) {
                                
                                        alter_sek = Math.floor((Date.now()-getState(id).lc)/1000);
                                                
                                        wartungs_state["alter_tage"] = Math.floor(alter_sek/60/60/24);
                                        wartungs_state["name"]= getObject(id).common.name;
                                        wartungs_state["state"]= getState(id).val;
                                        wartungs_state["interval"]= getObject(id).common.interval;
                                        wartungs_state["key"]= getObject(id).common.key;
                                
                                        all_wartungs_states.push(wartungs_state);
                                        console.log("**Name"+i+": "+wartungs_state["name"]+"   Interval: "+wartungs_state["interval"]+"   State: "+wartungs_state["state"]+"    Key: "+wartungs_state["key"]+" \n  Alter Sekunden:  "+wartungs_state["sekunden"]+"\n");
                                        console.log("**Name"+i+": "+all_wartungs_states[i]["name"]+"   Interval: "+all_wartungs_states[i]["interval"]+"   State: "+all_wartungs_states[i]["state"]+"    Key: "+all_wartungs_states[i]["key"]+" \n  Alter Sekunden:  "+all_wartungs_states[i]["sekunden"]+"\n");
                                    });
                                    //return all_wartungs_states;
                                }
                                
                                //Teste return Objekt-Array von GetWartungsStates()
                                //Konsolenausgabe aller (Wartungsobjekte) returned from GetWartungsStates()
                                function PrintWartungStates(ordner){
                                   // var all_wartungs_states2=[];   
                                
                                    GetWartungsStates();
                                
                                    all_wartungs_states.forEach(function(wartungs_state, i) {
                                       console.log("--Name"+i+": "+wartungs_state["name"]+"   Interval: "+wartungs_state["interval"]+"   State: "+wartungs_state["state"]+"    Key: "+wartungs_state["key"]+" \n  Alter Sekunden:  "+wartungs_state["sekunden"]+"\n");
                                       console.log("--Name"+i+": "+all_wartungs_states[i]["name"]+"   Interval: "+all_wartungs_states[i]["interval"]+"   State: "+all_wartungs_states[i]["state"]+"    Key: "+all_wartungs_states[i]["key"]+" \n  Alter Sekunden:  "+all_wartungs_states[i]["sekunden"]+"\n");
                                    });  
                                }
                                
                                

                                die doppelten Consolenausgaben in GetWartungsStates() und PrintWartungStates() sind nur zu debugzwecken drin...

                                Die PrintWartungStates() läuft zwar die richtige Anzahl oft durch die Each doch leider findet sich in jedem der Arrays der selbe Inhalt - der des letztens Objektes.

                                [info ] javascript.0.Wartung_prozedual: **Name0: Cat350 OElwechsel   Interval: 30   State: false    Key: 5   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: **Name0: Cat350 OElwechsel   Interval: 30   State: false    Key: 5   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: **Name1: Cat350 oelen   Interval: 30   State: false    Key: 0   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: **Name1: Cat350 oelen   Interval: 30   State: false    Key: 0   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: **Name2: Kettengetriebe Oelwechseln   Interval: 30   State: false    Key: 4 Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: **Name2: Kettengetriebe Oelwechseln   Interval: 30   State: false    Key: 4   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: **Name3: Kompressor OEl Tauschen   Interval: 30   State: false    Key: 6   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: **Name3: Kompressor OEl Tauschen   Interval: 30   State: false    Key: 6   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: **Name4: Lager fetten   Interval: 14   State: false    Key: 3   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: **Name4: Lager fetten   Interval: 14   State: false    Key: 3   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: **Name5: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: **Name5: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: --Name0: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: --Name0: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: --Name1: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: --Name1: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: --Name2: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: --Name2: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: --Name3: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: --Name3: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: --Name4: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: --Name4: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: --Name5: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                [info ] javascript.0.Wartung_prozedual: --Name5: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                31.7.2020, 01:12:18.689	[info ] javascript.0.Wartung_prozedual: registered 1 subscription and 0 schedules
                                

                                Das Script oben sollte eigentlich alles Nötige mitbringen und direkt ausführbar sein. Erstellt euch höchstens einen Ordner mit Objekten ;)
                                Dann versteht man mich vllt besser als mit meiner schriftlichen Ausführung ;)

                                P 1 Antwort Letzte Antwort
                                0
                                • P Peterfrosta

                                  So ich bin schon was weiter.. habe ein paar Testfunktionen für die Verarbeitungs der Wartungsstände...
                                  Klappte auch erstmal... nun hatte ich geshen, dass die ganze for.each sachen für get alle states und dessen infos sich oft wiederholt -->also ausgelagert in eine eigene Funktion GetWartungsStates()

                                  //hier liegen alle Wartungobjekte
                                  var root_path="javascript.0.waschstr.wartung";
                                  //var alle_wartungen = $('state[id=*](functions="wartung_14tage")');       //Alternative mit "Aufzählung"     //Objekte könnten dann verteilt sein 
                                  
                                  //definition der Wartungseinträge zum erstmaligen Erstellen der Objekte
                                  var states_init = [
                                                  ["Cat350 oelen", 30 ], [ "Kameras \"abledern\"", 30 ],
                                                  ["Schlamfänge konmtrollieren", 14 ], [ "Lager fetten", 14 ],
                                                  ["Kettengetriebe Oelwechseln", 30 ], [ "Cat350 OElwechsel", 30 ], [ "Kompressor OEl Tauschen", 30 ]
                                   ] ;
                                  
                                  var all_wartungs_states=[];     //globale halte Variable der WartungsObjekte
                                  
                                  
                                  //InitWartungStates(states_init);        //erstellt alle WartungsObjekte
                                  //GetWartungsStates();              //fragt alle Wartungsobjekte ab
                                  PrintWartungStates();               //gebe alle Einträge aus
                                  
                                  //PrintWartungStates_alt();           // war ohne GetWartungsStates() und Array für die Werte und Objekte
                                  //IsWartungFaellig();
                                  
                                  
                                  
                                  //########################################################
                                  //##    Funktionenen
                                  
                                  function InitWartungStates(wartung) {
                                      wartung.forEach(function(id,i) {
                                          createState(root_path+"."+id[0], false, {
                                                  read: true,
                                                  write: true,
                                                  name: id[0],            ///nName/text der wartung
                                                  type: "number",
                                                  def: 0,
                                                  key: i,                 //jede wartung bekommt eigene nummer (kurzbefehl)
                                                  interval:id[1]          //alle x Tage wird drann erinnert
                                          });
                                      });
                                  }
                                  
                                  // Versuch mit lokaler und globaler Variable 
                                  // hier klappt beides aber.. siehe >> function PrintWartungStates(ordner)
                                  function GetWartungsStates(){
                                      var alter_sek;      //hilfsvariable  für wartungs_state["alter_tage"]
                                  
                                      //var all_wartungs_states=[];       
                                  
                                      var  wartungs_state= {
                                          name: "leer",
                                          state: 0,
                                          interval: 0,
                                          key: 0,
                                          alter_tage: 0 
                                      };
                                  
                                      //gehe jedes Objekt im ordner durch
                                      $(root_path+".*").each(function(id, i) {
                                  
                                          alter_sek = Math.floor((Date.now()-getState(id).lc)/1000);
                                                  
                                          wartungs_state["alter_tage"] = Math.floor(alter_sek/60/60/24);
                                          wartungs_state["name"]= getObject(id).common.name;
                                          wartungs_state["state"]= getState(id).val;
                                          wartungs_state["interval"]= getObject(id).common.interval;
                                          wartungs_state["key"]= getObject(id).common.key;
                                  
                                          all_wartungs_states.push(wartungs_state);
                                          console.log("**Name"+i+": "+wartungs_state["name"]+"   Interval: "+wartungs_state["interval"]+"   State: "+wartungs_state["state"]+"    Key: "+wartungs_state["key"]+" \n  Alter Sekunden:  "+wartungs_state["sekunden"]+"\n");
                                          console.log("**Name"+i+": "+all_wartungs_states[i]["name"]+"   Interval: "+all_wartungs_states[i]["interval"]+"   State: "+all_wartungs_states[i]["state"]+"    Key: "+all_wartungs_states[i]["key"]+" \n  Alter Sekunden:  "+all_wartungs_states[i]["sekunden"]+"\n");
                                      });
                                      //return all_wartungs_states;
                                  }
                                  
                                  //Teste return Objekt-Array von GetWartungsStates()
                                  //Konsolenausgabe aller (Wartungsobjekte) returned from GetWartungsStates()
                                  function PrintWartungStates(ordner){
                                     // var all_wartungs_states2=[];   
                                  
                                      GetWartungsStates();
                                  
                                      all_wartungs_states.forEach(function(wartungs_state, i) {
                                         console.log("--Name"+i+": "+wartungs_state["name"]+"   Interval: "+wartungs_state["interval"]+"   State: "+wartungs_state["state"]+"    Key: "+wartungs_state["key"]+" \n  Alter Sekunden:  "+wartungs_state["sekunden"]+"\n");
                                         console.log("--Name"+i+": "+all_wartungs_states[i]["name"]+"   Interval: "+all_wartungs_states[i]["interval"]+"   State: "+all_wartungs_states[i]["state"]+"    Key: "+all_wartungs_states[i]["key"]+" \n  Alter Sekunden:  "+all_wartungs_states[i]["sekunden"]+"\n");
                                      });  
                                  }
                                  
                                  

                                  die doppelten Consolenausgaben in GetWartungsStates() und PrintWartungStates() sind nur zu debugzwecken drin...

                                  Die PrintWartungStates() läuft zwar die richtige Anzahl oft durch die Each doch leider findet sich in jedem der Arrays der selbe Inhalt - der des letztens Objektes.

                                  [info ] javascript.0.Wartung_prozedual: **Name0: Cat350 OElwechsel   Interval: 30   State: false    Key: 5   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: **Name0: Cat350 OElwechsel   Interval: 30   State: false    Key: 5   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: **Name1: Cat350 oelen   Interval: 30   State: false    Key: 0   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: **Name1: Cat350 oelen   Interval: 30   State: false    Key: 0   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: **Name2: Kettengetriebe Oelwechseln   Interval: 30   State: false    Key: 4 Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: **Name2: Kettengetriebe Oelwechseln   Interval: 30   State: false    Key: 4   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: **Name3: Kompressor OEl Tauschen   Interval: 30   State: false    Key: 6   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: **Name3: Kompressor OEl Tauschen   Interval: 30   State: false    Key: 6   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: **Name4: Lager fetten   Interval: 14   State: false    Key: 3   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: **Name4: Lager fetten   Interval: 14   State: false    Key: 3   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: **Name5: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: **Name5: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: --Name0: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: --Name0: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: --Name1: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: --Name1: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: --Name2: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: --Name2: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: --Name3: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: --Name3: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: --Name4: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: --Name4: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: --Name5: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  [info ] javascript.0.Wartung_prozedual: --Name5: Schlamfänge konmtrollieren   Interval: 14   State: false    Key: 2   Alter Sekunden:  undefined
                                  31.7.2020, 01:12:18.689	[info ] javascript.0.Wartung_prozedual: registered 1 subscription and 0 schedules
                                  

                                  Das Script oben sollte eigentlich alles Nötige mitbringen und direkt ausführbar sein. Erstellt euch höchstens einen Ordner mit Objekten ;)
                                  Dann versteht man mich vllt besser als mit meiner schriftlichen Ausführung ;)

                                  P Offline
                                  P Offline
                                  Peterfrosta
                                  schrieb am zuletzt editiert von Peterfrosta
                                  #27

                                  Habe die Ursache gefunden - wenn auch ich nicht ganz nachvollziehen können:
                                  initialize the object holding variable inside the for loop beginning

                                  1 Antwort Letzte Antwort
                                  0
                                  Antworten
                                  • In einem neuen Thema antworten
                                  Anmelden zum Antworten
                                  • Älteste zuerst
                                  • Neuste zuerst
                                  • Meiste Stimmen


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  579

                                  Online

                                  32.7k

                                  Benutzer

                                  82.4k

                                  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