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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

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

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Aufzählung - ein Teil funktioniert iwie nicht

Geplant Angeheftet Gesperrt Verschoben JavaScript
15 Beiträge 3 Kommentatoren 845 Aufrufe 2 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.
  • 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
    schrieb am zuletzt editiert von
    #3

    @BBTown
    Danke für die Info :)

    1 Antwort Letzte Antwort
    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 Offline
      T Offline
      ticaki
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von Mrs-B
        #5

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

        1 Antwort Letzte Antwort
        0
        • Mrs-BM Offline
          Mrs-BM Offline
          Mrs-B
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • T Offline
            T Offline
            ticaki
            schrieb am zuletzt editiert von ticaki
            #7

            :grin:

            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 Antwort Letzte Antwort
            0
            • T ticaki

              :grin:

              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
              schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
              0
              • Mrs-BM Offline
                Mrs-BM Offline
                Mrs-B
                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                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 Offline
                  T Offline
                  ticaki
                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #11

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

                    1 Antwort Letzte Antwort
                    0
                    • T Offline
                      T Offline
                      ticaki
                      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                      0
                      • Mrs-BM Offline
                        Mrs-BM Offline
                        Mrs-B
                        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                        0
                        • T Offline
                          T Offline
                          ticaki
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • Mrs-BM Offline
                            Mrs-BM Offline
                            Mrs-B
                            schrieb am zuletzt editiert von
                            #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 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

                            316

                            Online

                            32.6k

                            Benutzer

                            82.2k

                            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