Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Aufzählung - ein Teil funktioniert iwie nicht

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    6
    1
    220

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    217

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

Aufzählung - ein Teil funktioniert iwie nicht

Scheduled Pinned Locked Moved JavaScript
15 Posts 3 Posters 955 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • BBTownB BBTown

    @Mrs-B
    defeb66f-c1af-4e15-863c-0383dd86b1d9-grafik.png

    einfach durch benutzen der code-tags

    Mrs-BM Offline
    Mrs-BM Offline
    Mrs-B
    wrote on last edited by
    #3

    @BBTown
    Danke für die Info :)

    1 Reply Last reply
    0
    • Mrs-BM Mrs-B

      Hallo zusammen,

      ich habe das Script Aufzählung Lichter für mich angepasst.

      Es funktioniert auch soweit gut...

      Was bei mir leider nicht funktioniert (auch schon mit dem Orginal Script) ist der aufbereitete Datenpunkt für die Ansage..
      Angezeigt wird mir brav was eingeschaltet ist, aber wenn alles aus ist, bekomme ich nicht den Textbaustein sondern einfach nur der Text "Steckdosen Nordflügel eingeschaltet..). Hier sollte dann aber der Text "Alle Steckdosen im Nordflügel sind ausgeschaltet" erscheinen...

      Wo liegt hier der Fehler?

      Hier der Script-Schnipsel (weiss leider nicht wie man das so schön als Script hier einstellt...)

      // Aufbereitung für Ansage
      
      function strip_tags(data) {
      
      var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
      
      return(rueckgabe);
      
      }
      
      {1}
      
      on(idNamenNord, function (obj) {
      
      //var text = obj.state.val;
      var textNord = obj.state.val;
      
      //text = (getState(idAnzahlNord).val > 0 ) ? 'Steckdosen Nordflügel eingeschaltet: ' + strip_tags(text) : 'Alle Steckdosen im Nordflügel sind ausgeschaltet';
      textNord = (getState(idAnzahlNord).val > 0 ) ? 'Steckdosen Nordflügel eingeschaltet: ' + strip_tags(textNord) : 'Alle Steckdosen im Nordflügel sind ausgeschaltet';
      
      
      //setState(idAnsageNord, text);
      setState(idAnsageNord, textNord);
      

      MOD-Edit: Code in code-tags gesetzt!

      Würde mich sehr freuen wenn mir da jemand weiterhelfen kann...

      T Do not disturb
      T Do not disturb
      ticaki
      wrote on last edited by
      #4

      @Mrs-B

      setzte das mal an den Anfang von on(idNamennord...)

      log('Anzahl:' + getState(idAnzahlNord).val + ' Namen:' + obj.state.val);
      

      Ich geh davon aus das die idAnzahlNord nicht null wird oder IdNamenNord vor idAnzahlNord gesetzt wird.

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      Mrs-BM 1 Reply Last reply
      0
      • T ticaki

        @Mrs-B

        setzte das mal an den Anfang von on(idNamennord...)

        log('Anzahl:' + getState(idAnzahlNord).val + ' Namen:' + obj.state.val);
        

        Ich geh davon aus das die idAnzahlNord nicht null wird oder IdNamenNord vor idAnzahlNord gesetzt wird.

        Mrs-BM Offline
        Mrs-BM Offline
        Mrs-B
        wrote on last edited by Mrs-B
        #5

        @ticaki
        Danke für deine Antwort!
        Ich werde das mal testen.

        1 Reply Last reply
        0
        • Mrs-BM Offline
          Mrs-BM Offline
          Mrs-B
          wrote on last edited by
          #6

          Ich habe jetzt noch viel rum probiert, finde aber den Fehler nicht :(

          Das Script läuft soweit. Die eigenen Datenpunkte werden korrekt gefüllt.

          ABER: den Teil mit der Ansage bekomme ich nicht hin..

          Ich habe den Tip von ticaki versucht und musste feststellen das die Werte (Zahlen) für
          idAnzahlNordOn
          idAnzahlOstOn
          schlicht nie stimmen und das obwohl sie in die Datenpunkte korrekt geschrieben werden.

          Nach meinem kleinen Verständnis bislang liest doch die Funktion
          on(idNamenNord, function (obj) { bzw.
          on(idNamenOst, function (obj) {
          per getState die Datenpunkte aus... Warum klappt das bei mir nicht?

          
          {1}
          
          zählt die Steckdosen in allen Räumen im Nordflügel und meldet die Eingeschalteten namentlich
          
          Daten kommen von Aufzählung "nordflügel-licht"
          
          {1}
          
          */
          
          var logging = true;
          
           // ++++++++ Pfad und Name der zu erstellenden Datenpunkte
          
          var idAnzahlNordOn = '0_userdata.0.MrsBiesly.Status.Steckdosen.Anzahl_Nord_On';
          var idAnzahlOstOn = '0_userdata.0.MrsBiesly.Status.Steckdosen.Anzahl_Ost_On';
          
          
          var idAnzahlNord = '0_userdata.0.MrsBiesly.Status.Steckdosen.Anzahl_Nord';
          var idAnzahlOst = '0_userdata.0.MrsBiesly.Status.Steckdosen.Anzahl_Ost';
          
          var idNamenNord = '0_userdata.0.MrsBiesly.Status.Steckdosen.Namen_Nord';
          var idNamenOst = '0_userdata.0.MrsBiesly.Status.Steckdosen.Namen_Ost';
          
          var idRaumNord = '0_userdata.0.MrsBiesly.Status.Steckdosen.Raum_Nord';
          var idRaumOst = '0_userdata.0.MrsBiesly.Status.Steckdosen.Raum_Ost';
          
          var idAnsageNord = '0_userdata.0.MrsBiesly.Status.Steckdosen.Ansage_Nord';
          var idAnsageOst = '0_userdata.0.MrsBiesly.Status.Steckdosen.Ansage_Ost';
          
          
          
          // ++++++++ Wonach soll gesucht werden? 
          // ++++++++ Hier nach allen Datenpunkten die in der Aufzählung "Nordflügel-Strom" / "Ostflügel-Strom" sind und die ID ".1" haben (da in diesem Datenpunkt false/true für ON bzw OFF)
          
          
          var cacheSelectorSwitchNord = $('state[id=*.1](functions=nordflügel-strom)');
          
          var cacheSelectorSwitchOst = $('state[id=*.1](functions=ostflügel-strom)');
          
          
           // ++++++++ Setzt die Zähler vor dem Durchlauf aller Elemente *.1 in der Aufzählung (Gewerk) Nordflügel-Strom auf 0
          
          
          function checkDevicesNord(obj) {
          
          
          var anzahlSteckdockdosenNordOn = 0;
          
          var anzahlSteckdosenNord = 0;
          
          var NameSteckdoseNordOn = [];
          
          var textRaumNord = [];
          
          
          
          
          if (logging) {
          
          log('++++++ Steckdosen Nordflügel Anzahl ++++ ');
          
          log('#### SCHALTER ##### ');
          
          }
          
          cacheSelectorSwitchNord.each(function (id, i) { // Schleife für jedes gefundenen Element *.1 in der Aufzählung (Gewerk) Nordflügel-Strom
          
          var obj = getObject(id);
          
          var idDev = id.substring(0, id.lastIndexOf('.'));  // Zugriff auf übergeordneten Datenpunkt da der Name des Datenpunkts sonst "switch_1" heißen würde
          var name = getObject(idDev).common.name; // liest den Namen des übergeordneten Datenpunkts aus
          
          var status = getState(id).val; // Abfrage Zustand (true/false) für alle *.1 abfragen (für jedes Element)
          
          var raumname = getObject(id, "rooms"); // Abfrage Raum-Name
          
          
          
           
          
          
          if (status) { // wenn Zustand = true, dann wird die Anzahl der Steckdosen im Nordflügel hochgezählt
          
          ++anzahlSteckdockdosenNordOn; 
          
          NameSteckdoseNordOn.push(name); // Zu Array hinzufügen
          
          textRaumNord.push(raumname.enumNames); // <---- NEU
          
          }
          
          ++anzahlSteckdosenNord; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
          
          });
          
           
          log('test: ' + anzahlSteckdosenNord);
          
          
          
           
          
          // Array mit Lichternamen sortieren
          
          NameSteckdoseNordOn.sort();
          
          textRaumNord.sort(); 
          
          // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
          
          if (logging) log("Text: " + NameSteckdoseNordOn);
          
          if (logging) log("Anzahl Steckdosen Nordflügel: " + anzahlSteckdosenNord + " # davon Steckdosen ON: " + anzahlSteckdockdosenNordOn);
          
          
          
          // die ermittelten Werte werden in die erstellten Datenpunkte geschrieben (z.B. für die Verarbeitung in VIS)
          
          setState(idNamenNord, NameSteckdoseNordOn.join(',')); // Schreibt die aktuellen Namen der eingeschalteten Steckdosen im Nordflügel
          
          setState(idAnzahlNordOn, NameSteckdoseNordOn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Steckdosen im Nordflügel
          
          setState(idAnzahlNord, anzahlSteckdosenNord); // Schreibt die aktuelle Anzahl der vorhandenen Steckdosen im Nordflügel
          
          setState(idRaumNord, textRaumNord.join(', ')); // Schreibt die Räume im Nordflügel, in denen Steckdosen ON sind
          
          
          }
          
          function checkDevicesOst(obj) {
          
          
          var anzahlSteckdockdosenOstOn = 0;
          
          var anzahlSteckdosenOst = 0;
          
          var NameSteckdoseOstOn = [];
          
          var textRaumOst = [];
          
          
          
          
          if (logging) {
          
          log('++++++ Steckdosen Ostflügel Anzahl ++++ ');
          
          log('#### SCHALTER ##### ');
          
          }
          
          cacheSelectorSwitchOst.each(function (id, i) { // Schleife für jedes gefundenen Element *.1 in der Aufzählung (Gewerk) Nordflügel-Strom
          
          var obj = getObject(id);
          
          var idDev = id.substring(0, id.lastIndexOf('.'));  // Zugriff auf übergeordneten Datenpunkt da der Name des Datenpunkts sonst "switch_1" heißen würde
          var name = getObject(idDev).common.name; // liest den Namen des übergeordneten Datenpunkts aus
          
          var status = getState(id).val; // Abfrage Zustand (true/false) für alle *.1 abfragen (für jedes Element)
          
          var raumname = getObject(id, "rooms"); // Abfrage Raum-Name
          
          
          
           
          
          
          if (status) { // wenn Zustand = true, dann wird die Anzahl der Steckdosen im Nordflügel hochgezählt
          
          ++anzahlSteckdockdosenOstOn; 
          
          NameSteckdoseOstOn.push(name); // Zu Array hinzufügen
          
          textRaumOst.push(raumname.enumNames); // <---- NEU
          
          }
          
          ++anzahlSteckdosenOst; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
          
          });
          
           
          log('test: ' + anzahlSteckdosenOst);
          log('test2: ' + anzahlSteckdockdosenOstOn);
          
          
          
           
          
          // Array mit Lichternamen sortieren
          
          NameSteckdoseOstOn.sort();
          
          textRaumOst.sort(); 
          
          // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
          
          if (logging) log("Text: " + NameSteckdoseOstOn);
          
          if (logging) log("Anzahl Steckdosen Ostflügel: " + anzahlSteckdosenOst + " # davon Steckdosen ON: " + anzahlSteckdockdosenOstOn);
          
          
          
          // die ermittelten Werte werden in die erstellten Datenpunkte geschrieben (z.B. für die Verarbeitung in VIS)
          
          setState(idNamenOst, NameSteckdoseOstOn.join(',')); // Schreibt die aktuellen Namen der eingeschalteten Steckdosen im Nordflügel
          
          setState(idAnzahlOstOn, NameSteckdoseOstOn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Steckdosen im Nordflügel
          
          setState(idAnzahlOst, anzahlSteckdosenOst); // Schreibt die aktuelle Anzahl der vorhandenen Steckdosen im Nordflügel
          
          setState(idRaumOst, textRaumOst.join(', ')); // Schreibt die Räume im Nordflügel, in denen Steckdosen ON sind
          
          
          }
          
          
          {1}
          
          // Trigger
          
          cacheSelectorSwitchNord.on(function(obj) { // bei Zustandsänderung *.1 in der Aufzählung (Gewerk) "Nordflügel-Strom"
          
          if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
          
          checkDevicesNord();
          
          });
          
          cacheSelectorSwitchOst.on(function(obj) { // bei Zustandsänderung *.1 in der Aufzählung (Gewerk) "Nordflügel-Strom"
          
          if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
          
          checkDevicesOst();
          
          });
          
          
          
          
          function main() {
          
          setTimeout(function(){
          
          if (logging) log('Auslöser Skriptstart');
          
          checkDevicesNord(), ////??????????????????????????????????????????????
          
          checkDevicesOst();
          
          }, 2000);
          
          }
          
          {1}
          
          main(); // Skriptstart-Auslöser
          
          {1}
          
          // Aufbereitung für Ansage
          
          function strip_tags(data) {
          
          var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
          
          return(rueckgabe);
          
          }
          
          
          
          {1}
          
          
          on(idNamenNord, function (obj) {
          
          log('Check Nord:' + getState(idAnzahlNordOn).val + ' Namen:' + obj.state.val);     
          
          //var text = obj.state.val;
          var textNord = obj.state.val;
          
          //text = (getState(idAnzahlNord).val > 0 ) ? 'Steckdosen Nordflügel eingeschaltet: ' + strip_tags(text) : 'Alle Steckdosen im Nordflügel sind ausgeschaltet';
          textNord = (getState(idAnzahlNordOn).val > 0 ) ? 'Steckdosen Nordflügel eingeschaltet: ' + strip_tags(textNord) : 'Alle Steckdosen im Nordflügel sind ausgeschaltet';
          
          
          //setState(idAnsageNord, text);
          setState(idAnsageNord, textNord);
          
          })
          
          
          
          
          on(idNamenOst, function (obj) {
          
          log('Check Ost:' + getState(idAnzahlOstOn).val + ' Namen:' + obj.state.val);    
          
          
          //var text = obj.state.val;
          var textOst = obj.state.val;
          
          //text = (getState(idAnzahlNord).val > 0 ) ? 'Steckdosen Nordflügel eingeschaltet: ' + strip_tags(text) : 'Alle Steckdosen im Nordflügel sind ausgeschaltet';
          textOst = (getState(idAnzahlOstOn).val > 0 ) ? 'Steckdosen Ostflügel eingeschaltet: ' + strip_tags(textOst) : 'Alle Steckdosen im Ostflügel sind ausgeschaltet';
          
          
          //setState(idAnsageNord, text);
          setState(idAnsageOst, textOst);
          
          
          
          
          });
          
          {1}
          code_text
          

          Hier mal das gesamte Script...

          Und hier ein Screenshot von den Datenpunkten mit Werten

          1f36ab6b-0866-41a6-962d-0baa2c72cd2e-image.png

          Ich würde mich sehr freuen wenn jemand die Zeit finden würde um sich das mal anzuschauen...

          1 Reply Last reply
          0
          • T Do not disturb
            T Do not disturb
            ticaki
            wrote on last edited by ticaki
            #7

            😁

            Dein Verständnis ist richtig du übersiehst dabei aber die Reihenfolge, dein Script reagiert auf die erste Änderung und nicht die letzte.

            vorher:

            setState(idNamenOst, NameSteckdoseOstOn.join(',')); // Schreibt die aktuellen Namen der eingeschalteten Steckdosen im Nordflügel
            setState(idAnzahlOstOn, NameSteckdoseOstOn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Steckdosen im Nordflügel
            setState(idAnzahlOst, anzahlSteckdosenOst); // Schreibt die aktuelle Anzahl der vorhandenen Steckdosen im Nordflügel
            setState(idRaumOst, textRaumOst.join(', ')); // Schreibt die Räume im Nordflügel, in denen Steckdosen ON sind
            

            nachher:

            setState(idAnzahlOstOn, NameSteckdoseOstOn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Steckdosen im Nordflügel
            setState(idAnzahlOst, anzahlSteckdosenOst); // Schreibt die aktuelle Anzahl der vorhandenen Steckdosen im Nordflügel
            setState(idRaumOst, textRaumOst.join(', ')); // Schreibt die Räume im Nordflügel, in denen Steckdosen ON sind
            setState(idNamenOst, NameSteckdoseOstOn.join(',')); // Schreibt die aktuellen Namen der eingeschalteten Steckdosen im Nordflügel
            

            Und wenn das nicht reicht, was es aber sollte:

            on(idNamenNord, function (obj) {
            var textNord = obj.state.val;  
            //var text = obj.state.val;
            setTimeout(() => { 
              //text = (getState(idAnzahlNord).val > 0 ) ? 'Steckdosen Nordflügel eingeschaltet: ' + strip_tags(text) : 'Alle Steckdosen im Nordflügel sind ausgeschaltet';
              textNord = (getState(idAnzahlNord).val > 0 ) ? 'Steckdosen Nordflügel eingeschaltet: ' + strip_tags(textNord) : 'Alle Steckdosen im Nordflügel sind ausgeschaltet';
              
              //setState(idAnsageNord, text);
              setState(idAnsageNord, textNord);
            },20;
            }
            

            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

            Spenden

            Mrs-BM 1 Reply Last reply
            0
            • T ticaki

              😁

              Dein Verständnis ist richtig du übersiehst dabei aber die Reihenfolge, dein Script reagiert auf die erste Änderung und nicht die letzte.

              vorher:

              setState(idNamenOst, NameSteckdoseOstOn.join(',')); // Schreibt die aktuellen Namen der eingeschalteten Steckdosen im Nordflügel
              setState(idAnzahlOstOn, NameSteckdoseOstOn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Steckdosen im Nordflügel
              setState(idAnzahlOst, anzahlSteckdosenOst); // Schreibt die aktuelle Anzahl der vorhandenen Steckdosen im Nordflügel
              setState(idRaumOst, textRaumOst.join(', ')); // Schreibt die Räume im Nordflügel, in denen Steckdosen ON sind
              

              nachher:

              setState(idAnzahlOstOn, NameSteckdoseOstOn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Steckdosen im Nordflügel
              setState(idAnzahlOst, anzahlSteckdosenOst); // Schreibt die aktuelle Anzahl der vorhandenen Steckdosen im Nordflügel
              setState(idRaumOst, textRaumOst.join(', ')); // Schreibt die Räume im Nordflügel, in denen Steckdosen ON sind
              setState(idNamenOst, NameSteckdoseOstOn.join(',')); // Schreibt die aktuellen Namen der eingeschalteten Steckdosen im Nordflügel
              

              Und wenn das nicht reicht, was es aber sollte:

              on(idNamenNord, function (obj) {
              var textNord = obj.state.val;  
              //var text = obj.state.val;
              setTimeout(() => { 
                //text = (getState(idAnzahlNord).val > 0 ) ? 'Steckdosen Nordflügel eingeschaltet: ' + strip_tags(text) : 'Alle Steckdosen im Nordflügel sind ausgeschaltet';
                textNord = (getState(idAnzahlNord).val > 0 ) ? 'Steckdosen Nordflügel eingeschaltet: ' + strip_tags(textNord) : 'Alle Steckdosen im Nordflügel sind ausgeschaltet';
                
                //setState(idAnsageNord, text);
                setState(idAnsageNord, textNord);
              },20;
              }
              
              Mrs-BM Offline
              Mrs-BM Offline
              Mrs-B
              wrote on last edited by Mrs-B
              #8

              @ticaki
              Sorry das ich mich erst jetzt wieder melde.. Bin vorher nicht dazu gekommen..

              Aber VIELEN DANK! für deine Hilfe!
              Das schlichte Umstellen der Reihenfolge so wie du es aufgezeigt hast, führt nun zu korrekten Antworten :)
              Konnte es zwar gerade nur für den "Nord-Teil" testen (wenn ich im Ost-Teil jetzt den Strom weg nehme hab ich keinen Rechner mehr lach), aber denke das es auch hier nun läuft...

              Den "Timeout" Teil werde ich bestimmt an anderer Stelle noch versuchen zu verwenden :)
              Wenn es deine Zeit erlaubt.. Magst mir evtl. ein paar Zeilen schreiben zur Begründung?
              Ich versuche nicht nur Dinge abzuschreiben sondern versuche auch den Hintergrund zu verstehen....
              Hier ist mir jetzt nicht so ganz klar warum die Umstellung der Reihenfolge den Erfolg des Scripts ausmacht.... ?

              LG

              T 1 Reply Last reply
              0
              • Mrs-BM Offline
                Mrs-BM Offline
                Mrs-B
                wrote on last edited by Mrs-B
                #9

                Und dann doch noch ein "Problem"..

                // Trigger
                
                cacheSelectorSwitchNord.on(function(obj) { // bei Zustandsänderung *.1 in der Aufzählung (Gewerk) "Nordflügel-Strom"
                
                //if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                if (logging) log('Auslösender Schalter: ' + obj.name + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                
                checkDevicesNord();
                
                });
                

                Dieser Teil zeigt mir ja im Log wer der Auslöser war.. Leider bekomme ich hier als (korrekte) Antwort "swicht_1" angezeigt.
                Leider wenig hilfreich da alle meine Steckdosen dann quasi so heißen....
                Hier würde ich gern den Namen des übergeordneten DP angezeigt bekommen (hier dann also "Fire-Strom").

                Wie bekomme ich das hin?

                Hier die Struktur:

                5fef2f84-9e4f-4feb-a6b6-69426de00258-grafik.png

                1 Reply Last reply
                0
                • Mrs-BM Mrs-B

                  @ticaki
                  Sorry das ich mich erst jetzt wieder melde.. Bin vorher nicht dazu gekommen..

                  Aber VIELEN DANK! für deine Hilfe!
                  Das schlichte Umstellen der Reihenfolge so wie du es aufgezeigt hast, führt nun zu korrekten Antworten :)
                  Konnte es zwar gerade nur für den "Nord-Teil" testen (wenn ich im Ost-Teil jetzt den Strom weg nehme hab ich keinen Rechner mehr lach), aber denke das es auch hier nun läuft...

                  Den "Timeout" Teil werde ich bestimmt an anderer Stelle noch versuchen zu verwenden :)
                  Wenn es deine Zeit erlaubt.. Magst mir evtl. ein paar Zeilen schreiben zur Begründung?
                  Ich versuche nicht nur Dinge abzuschreiben sondern versuche auch den Hintergrund zu verstehen....
                  Hier ist mir jetzt nicht so ganz klar warum die Umstellung der Reihenfolge den Erfolg des Scripts ausmacht.... ?

                  LG

                  T Do not disturb
                  T Do not disturb
                  ticaki
                  wrote on last edited by ticaki
                  #10

                  @Mrs-B
                  Wenn du 4 Punkte beschreibst, werden die nicht gleichzeitig geschrieben sondern das sind 4 einzelne Kommandos. Wenn du also auf den ersten Schreibvorgang einen Trigger setzt ist es sehr unwahrscheinlich, das die restlichen 3 schon geschrieben sind.

                  Also bassiert der 1. Lösungsansatz darauf, dass die Schreibkommandos in aufgetragener Reihenfolge vollständig abgearbeitet sind.

                  Der 2. Lösungsansatz gibt dem System ein paar Millisekunden um die anstehenden Schreibaufträge abzuschließen, bevor mit dem auslesen der Daten begonnen wird.

                  Die beste Lösung wäre jedoch nicht mehrere Datenpunkte zu verwenden, sondern einen Objektdatenpunkt zu erstellen:

                  var fluegel = getState(datenpunkt_der_Objekt_enthalten_kann).val;
                  if (fluegel === undefined) fluegel = {};
                  fluegel.nord = {};
                  fluegel.nord.anzahl = 3;
                  fluegel.nord.text = 'text';
                  setState(datenpunkt_der_Objekt_enthalten_kann, fluegel);
                  

                  :)
                  EDIT: ups ich weiß garnicht ob es Objekt Datenpunkte gibt.
                  Das hier ist für einen Zeichenketten Datenpunkt:

                  var str = getState(datenpunkt_der_Zeichenkette_enthält).val;
                  var fluegel = {};
                  if (str) fluegel = JSON.parse(str);
                  fluegel.nord = {};
                  fluegel.nord.anzahl = 3;
                  fluegel.nord.text = 'text';
                  setState(datenpunkt_der_Zeichenkette_enthält, JSON.stringify(fluegel));
                  

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  Mrs-BM 1 Reply Last reply
                  0
                  • T ticaki

                    @Mrs-B
                    Wenn du 4 Punkte beschreibst, werden die nicht gleichzeitig geschrieben sondern das sind 4 einzelne Kommandos. Wenn du also auf den ersten Schreibvorgang einen Trigger setzt ist es sehr unwahrscheinlich, das die restlichen 3 schon geschrieben sind.

                    Also bassiert der 1. Lösungsansatz darauf, dass die Schreibkommandos in aufgetragener Reihenfolge vollständig abgearbeitet sind.

                    Der 2. Lösungsansatz gibt dem System ein paar Millisekunden um die anstehenden Schreibaufträge abzuschließen, bevor mit dem auslesen der Daten begonnen wird.

                    Die beste Lösung wäre jedoch nicht mehrere Datenpunkte zu verwenden, sondern einen Objektdatenpunkt zu erstellen:

                    var fluegel = getState(datenpunkt_der_Objekt_enthalten_kann).val;
                    if (fluegel === undefined) fluegel = {};
                    fluegel.nord = {};
                    fluegel.nord.anzahl = 3;
                    fluegel.nord.text = 'text';
                    setState(datenpunkt_der_Objekt_enthalten_kann, fluegel);
                    

                    :)
                    EDIT: ups ich weiß garnicht ob es Objekt Datenpunkte gibt.
                    Das hier ist für einen Zeichenketten Datenpunkt:

                    var str = getState(datenpunkt_der_Zeichenkette_enthält).val;
                    var fluegel = {};
                    if (str) fluegel = JSON.parse(str);
                    fluegel.nord = {};
                    fluegel.nord.anzahl = 3;
                    fluegel.nord.text = 'text';
                    setState(datenpunkt_der_Zeichenkette_enthält, JSON.stringify(fluegel));
                    
                    Mrs-BM Offline
                    Mrs-BM Offline
                    Mrs-B
                    wrote on last edited by
                    #11

                    @ticaki
                    DANKE für die Antwort.. Das muss ich jetzt für mich erstmal studieren lach

                    1 Reply Last reply
                    0
                    • T Do not disturb
                      T Do not disturb
                      ticaki
                      wrote on last edited by ticaki
                      #12

                      Zu deiner nächsten Frage: (Ich schreibe das Freihand, kann/wird Syntaxfehler enthalten :) )

                      var id = obj.id.substring(obj.id.lastIndexOf('.'));
                      log(id);
                      var oName = getObject(id).common.name;
                      log(oName);
                      

                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                      Spenden

                      1 Reply Last reply
                      0
                      • Mrs-BM Offline
                        Mrs-BM Offline
                        Mrs-B
                        wrote on last edited by Mrs-B
                        #13

                        @ticaki said in Aufzählung - ein Teil funktioniert iwie nicht:

                        var id = obj.id.substring(obj.id.lastIndexOf('.'));
                        log(id);
                        var oName = getObject(id).common.name;
                        log(oName);

                        Danke auch hier :)

                        So hat es bei mir iwie nicht funktionieren wollen.
                        Nach Analyse hab ich dann gesehen das ich immer "DeviceID" mit ".1" am Ende (so heißt die ID des abzufragenen Datenpunkts bei mir..) raus bekomme.
                        Habe mir dann soweit geholfen das ich einfach das ".1" am Ende abschneide und damit dann den Namen abfrage.

                        Ist garantiert keine "schöne" Lösung ... Aber funktioniert in meiner Umgebung soweit gut...
                        JScript und ich wir stehen noch in der Kennenlernphase :)

                        Wünsche ein schönes Wochenende :)

                        1 Reply Last reply
                        0
                        • T Do not disturb
                          T Do not disturb
                          ticaki
                          wrote on last edited by
                          #14

                          @Mrs-B sagte in Aufzählung - ein Teil funktioniert iwie nicht:

                          var id = obj.id.substring(obj.id.lastIndexOf('.'));

                          Das tut nichts anders als alles hinter dem letzten "." zu verwerfen.

                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                          Spenden

                          1 Reply Last reply
                          0
                          • Mrs-BM Offline
                            Mrs-BM Offline
                            Mrs-B
                            wrote on last edited by
                            #15

                            Huhu...

                            Ich hab endlich wieder etwas Zeit gefunden um an meinem Script (siehe oben) weiter zu basteln...

                            Hab da noch folgende Frage:
                            Mit folgenden Zeilen lege ich ja fest wonach gesucht werden soll:

                            var cacheSelectorSwitchNord = $('stateid=*.1');
                            var cacheSelectorSwitchOst = $('stateid=*.1');

                            Also hier für mein Beispiel nach Datenpunkten mit der ID "1" mit der jeweils zugewiesenen function...

                            Nun hab ich aber noch ne Steckdosenleiste die mitgezählt werden soll ... Hier heißen die ID`s leider nicht "1" ...

                            Kann man auch einfach nur nach den Datenpunkten suchen die die function zugewiesen haben? Also ohne Angabe der ID? Würde dann natürlich die entsprechende function auch nur den passenden Datenpunkten zuordnen...

                            Geht das? Und wie müsste ich das anstellen?

                            1 Reply Last reply
                            0

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

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

                            With your input, this post could be even better 💗

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


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            288

                            Online

                            32.8k

                            Users

                            82.8k

                            Topics

                            1.3m

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

                            • Don't have an account? Register

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