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
    5
    1
    130

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

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

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.
  • Mrs-BM Offline
    Mrs-BM Offline
    Mrs-B
    wrote on last edited by Homoran
    #1

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

    BBTownB T 2 Replies 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...

      BBTownB Offline
      BBTownB Offline
      BBTown
      wrote on last edited by BBTown
      #2

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

      einfach durch benutzen der code-tags

      ioBroker auf NUC (VM debian v13 (Trixie ), node v22.22.2 npm v10.9.4, js-controller v7.1.1 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

      Mrs-BM 1 Reply Last reply
      0
      • 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

                                282

                                Online

                                32.8k

                                Users

                                82.7k

                                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