Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. nspanel script: state im alias bleibt 0

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    nspanel script: state im alias bleibt 0

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      msuilmann last edited by

      Hallo Schwarmwissen,

      das ts-script für den Müllkalender für das nspanel läuft fehlerfrei, die Werte für das Datum und den Behältertyp werden im alias übernommen.
      Nur die Farbe bleibt im alias auf 0.

      hier die Objektdaten für color in userdata:
      {
      "common": {
      "name": "color",
      "desc": "Manuell erzeugt",
      "role": "state",
      "type": "number",
      "read": true,
      "write": true,
      "def": 0
      },
      "type": "state",
      "native": {},
      "from": "system.adapter.admin.0",
      "user": "system.user.admin",
      "ts": 1669308868460,
      "_id": "0_userdata.0.Abfallkalender.1.color",
      "acl": {
      "object": 1636,
      "state": 1636,
      "owner": "system.user.admin",
      "ownerGroup": "system.group.administrator"
      }
      }

      und hier die Objektdaten im alias folder:
      {
      "_id": "alias.0.NSPanel.Abfall.event1.LEVEL",
      "common": {
      "name": "LEVEL",
      "role": "value.warning",
      "type": "number",
      "read": true,
      "write": true,
      "alias": {
      "id": "0_userdata.0.Abfallkalender.1.color"
      }
      },
      "native": {},
      "type": "state",
      "acl": {
      "object": 1636,
      "state": 1636,
      "owner": "system.user.admin",
      "ownerGroup": "system.group.administrator"
      },
      "from": "system.adapter.admin.0",
      "user": "system.user.admin",
      "ts": 1679861120927
      }

      warum bleibt der Wert im Objekt auf 0?

      T 1 Reply Last reply Reply Quote 0
      • T
        TT-Tom @msuilmann last edited by TT-Tom

        @msuilmann

        zeige mal dein Script. Die Daten sehen okay aus. Ich habe den Verdacht, dass der Vergleich nicht funktioniert, um die richtige Farbe zu setzen. Füge bitte mal die beiden, Log Zeilen vor dem "if" ein. Damit kannst du den erkannten Restmüllnamen und deinen angegebenen Namen im log sehen.

                console.log(Event2);
                console.log(idRestmuellName);
        
         if (Event2 == idRestmuellName) {
        
        M 1 Reply Last reply Reply Quote 0
        • M
          msuilmann @TT-Tom last edited by

          @tt-tom said in nspanel script: state im alias bleibt 0:

          console.log(idRestmuellName);

          Hallo Tom,
          ich habe jetzt mal in das script die folgenden log-Befehle eingegeben:
          console.log('Event2 = ' + Event2);
          console.log('ID = ' + idRestmuellName);
          console.log('ID = ' + idBioabfaelleName);
          console.log('ID = ' + idPappePapierName);
          console.log('ID = ' + idWertstoffName);

          Das ist das Ergebnis in der log-Datei:
          javascript.0
          2023-04-01 21:30:03.730 info script.js.NSPanel.Muell_JS: ID = Wertstoffbehaelter

          javascript.0
          2023-04-01 21:30:03.729 info script.js.NSPanel.Muell_JS: ID = Papierbehaelter

          javascript.0
          2023-04-01 21:30:03.729 info script.js.NSPanel.Muell_JS: ID = Bioabfallbehaelter

          javascript.0
          2023-04-01 21:30:03.729 info script.js.NSPanel.Muell_JS: ID = Restabfallbehaelter

          javascript.0
          2023-04-01 21:30:03.729 info script.js.NSPanel.Muell_JS: Event2 = Bioabfallbehaelter

          javascript.0
          2023-04-01 21:30:03.728 info script.js.NSPanel.Muell_JS: ID = Wertstoffbehaelter

          javascript.0
          2023-04-01 21:30:03.727 info script.js.NSPanel.Muell_JS: ID = Papierbehaelter

          javascript.0
          2023-04-01 21:30:03.727 info script.js.NSPanel.Muell_JS: ID = Bioabfallbehaelter

          javascript.0
          2023-04-01 21:30:03.727 info script.js.NSPanel.Muell_JS: ID = Restabfallbehaelter

          javascript.0
          2023-04-01 21:30:03.727 info script.js.NSPanel.Muell_JS: Event2 = Wertstoffbehaelter

          javascript.0
          2023-04-01 21:30:03.726 info script.js.NSPanel.Muell_JS: ID = Wertstoffbehaelter

          javascript.0
          2023-04-01 21:30:03.726 info script.js.NSPanel.Muell_JS: ID = Papierbehaelter

          javascript.0
          2023-04-01 21:30:03.725 info script.js.NSPanel.Muell_JS: ID = Bioabfallbehaelter

          javascript.0
          2023-04-01 21:30:03.725 info script.js.NSPanel.Muell_JS: ID = Restabfallbehaelter

          javascript.0
          2023-04-01 21:30:03.725 info script.js.NSPanel.Muell_JS: Event2 = Restabfallbehaelter

          javascript.0
          2023-04-01 21:30:03.723 info script.js.NSPanel.Muell_JS: ID = Wertstoffbehaelter

          javascript.0
          2023-04-01 21:30:03.723 info script.js.NSPanel.Muell_JS: ID = Papierbehaelter

          javascript.0
          2023-04-01 21:30:03.722 info script.js.NSPanel.Muell_JS: ID = Bioabfallbehaelter

          javascript.0
          2023-04-01 21:30:03.722 info script.js.NSPanel.Muell_JS: ID = Restabfallbehaelter

          javascript.0
          2023-04-01 21:30:03.721 info script.js.NSPanel.Muell_JS: Event2 = Papierbehaelter

          Es sieht so aus, als ob bei der ersten event2-Abfrage der string leer ist.

          Hier jetzt mal das script:

          const idAbfalliCal = 'ical.0'; // iCal Instanz zum Abfallkalender
          const idZeichenLoeschen = 0; // x Zeichen links vom String abziehen, wenn vor dem Eventname noch Text steht z.B. Strassenname; Standard = 0
          const idRestmuellName ='Restabfallbehaelter'; // Schwarze Tonne
          const idWertstoffName = 'Wertstoffbehaelter'; // Gelbe Tonne / Sack
          const idPappePapierName = 'Papierbehaelter'; // Blaue Tonne
          const idBioabfaelleName = 'Bioabfallbehaelter'; // Braune Tonne

          var i, Muell_JSON, Event2, Color = 0;

          for (i = 1; i <= 4; i++) {
          if (!existsState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.date')) {
          log(i + '.date nicht vorhanden, wurde erstellt');
          createState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.date', '',
          {
          name: parseFloat(i) + '.date',
          role: 'state',
          type: 'string',
          read: true,
          write: true,
          def: ''
          });
          };
          if (!existsState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.event')) {
          log(i + '.event nicht vorhanden, wurde erstellt');
          createState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.event', '',
          {
          name: parseFloat(i) + '.event',
          role: 'state',
          type: 'string',
          read: true,
          write: true,
          def: ''
          });
          };
          if (!existsState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.color')) {
          log(i + '.color nicht vorhanden, wurde erstellt');
          createState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.color', 31,
          {
          name: parseFloat(i) + '.color',
          role: 'state',
          type: 'number',
          read: true,
          write: true,
          def: 0
          });
          };
          }

          function subsequenceFromStartLast(sequence, at1) {
          var start = at1;
          var end = sequence.length;
          return sequence.slice(start, end);
          }

          on({ id: idAbfalliCal + '.data.table', change: "ne" }, async function () {

          for (i = 0; i <= 3; i++) {
              Muell_JSON = getState(idAbfalliCal + '.data.table').val;
              setStateDelayed((['0_userdata.0.Abfallkalender.', parseFloat(i) + 1, '.date'].join('')), getAttr(Muell_JSON, (String(i) + '.date')), false, parseInt(((0) || "").toString(), 10), false);
              Event2 = subsequenceFromStartLast(getAttr(Muell_JSON, (String(i) + '.event')), idZeichenLoeschen);
            
              setStateDelayed((['0_userdata.0.Abfallkalender.', parseFloat(i) + 1, '.event'].join('')), Event2, false, parseInt(((0) || "").toString(), 10), false);
              console.log('Event2 = ' + Event2);
              console.log('ID = ' + idRestmuellName);
              console.log('ID = ' + idBioabfaelleName);
              console.log('ID = ' + idPappePapierName);
              console.log('ID = ' + idWertstoffName);
              if (Event2 == idRestmuellName) {
                  Color = 33840;
                  console.log ('Rest = true');
              } else if (Event2 == idBioabfaelleName) {
                  Color = 2016;
                  console.log ('Bio = true');
              } else if (Event2 == idPappePapierName) {
                  Color = 31;
                  console.log ('Papier = true');
              } else if (Event2 == idWertstoffName) {
                  Color = 65504;
                  console.log ('Wert = true');
              }
              setStateDelayed((['0_userdata.0.Abfallkalender.', parseFloat(i) + 1, '.color'].join('')), Color, false, parseInt(((0) || "").toString(), 10), false);
          }
          

          });

          M 1 Reply Last reply Reply Quote 0
          • M
            msuilmann @msuilmann last edited by

            @msuilmann Sehe gerade, dass ich ja von unten nach oben lesen mus,
            also passt die Anzeige

            T 1 Reply Last reply Reply Quote 0
            • T
              TT-Tom @msuilmann last edited by TT-Tom

              @msuilmann

              Kannst du bitte mal alle Ausgaben in die codetags packen. Dann kann ich es besser lesen.

              M 1 Reply Last reply Reply Quote 0
              • M
                msuilmann @TT-Tom last edited by

                @tt-tom

                console.log('Event2 = ' + Event2);
                console.log('ID = ' + idRestmuellName);
                console.log('ID = ' + idBioabfaelleName);
                console.log('ID = ' + idPappePapierName);
                console.log('ID = ' + idWertstoffName);
                
                javascript.0
                2023-04-01 21:30:03.723 info script.js.NSPanel.Muell_JS: ID = Wertstoffbehaelter
                
                javascript.0
                2023-04-01 21:30:03.723 info script.js.NSPanel.Muell_JS: ID = Papierbehaelter
                
                javascript.0
                2023-04-01 21:30:03.722 info script.js.NSPanel.Muell_JS: ID = Bioabfallbehaelter
                
                javascript.0
                2023-04-01 21:30:03.722 info script.js.NSPanel.Muell_JS: ID = Restabfallbehaelter
                
                javascript.0
                2023-04-01 21:30:03.721 info script.js.NSPanel.Muell_JS: Event2 = Papierbehaelter
                
                const idAbfalliCal = 'ical.0'; // iCal Instanz zum Abfallkalender
                const idZeichenLoeschen = 0; // x Zeichen links vom String abziehen, wenn vor dem Eventname noch Text steht z.B. Strassenname; Standard = 0
                const idRestmuellName ='Restabfallbehaelter'; // Schwarze Tonne
                const idWertstoffName = 'Wertstoffbehaelter'; // Gelbe Tonne / Sack
                const idPappePapierName = 'Papierbehaelter'; // Blaue Tonne
                const idBioabfaelleName = 'Bioabfallbehaelter'; // Braune Tonne
                
                var i, Muell_JSON, Event2, Color = 0;
                
                for (i = 1; i <= 4; i++) {
                if (!existsState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.date')) {
                log(i + '.date nicht vorhanden, wurde erstellt');
                createState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.date', '',
                {
                name: parseFloat(i) + '.date',
                role: 'state',
                type: 'string',
                read: true,
                write: true,
                def: ''
                });
                };
                if (!existsState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.event')) {
                log(i + '.event nicht vorhanden, wurde erstellt');
                createState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.event', '',
                {
                name: parseFloat(i) + '.event',
                role: 'state',
                type: 'string',
                read: true,
                write: true,
                def: ''
                });
                };
                if (!existsState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.color')) {
                log(i + '.color nicht vorhanden, wurde erstellt');
                createState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.color', 31,
                {
                name: parseFloat(i) + '.color',
                role: 'state',
                type: 'number',
                read: true,
                write: true,
                def: 0
                });
                };
                }
                
                function subsequenceFromStartLast(sequence, at1) {
                var start = at1;
                var end = sequence.length;
                return sequence.slice(start, end);
                }
                
                on({ id: idAbfalliCal + '.data.table', change: "ne" }, async function () {
                
                for (i = 0; i <= 3; i++) {
                    Muell_JSON = getState(idAbfalliCal + '.data.table').val;
                    setStateDelayed((['0_userdata.0.Abfallkalender.', parseFloat(i) + 1, '.date'].join('')), getAttr(Muell_JSON, (String(i) + '.date')), false, parseInt(((0) || "").toString(), 10), false);
                    Event2 = subsequenceFromStartLast(getAttr(Muell_JSON, (String(i) + '.event')), idZeichenLoeschen);
                  
                    setStateDelayed((['0_userdata.0.Abfallkalender.', parseFloat(i) + 1, '.event'].join('')), Event2, false, parseInt(((0) || "").toString(), 10), false);
                    console.log('Event2 = ' + Event2);
                    console.log('ID = ' + idRestmuellName);
                    console.log('ID = ' + idBioabfaelleName);
                    console.log('ID = ' + idPappePapierName);
                    console.log('ID = ' + idWertstoffName);
                    if (Event2 == idRestmuellName) {
                        Color = 33840;
                        console.log ('Rest = true');
                    } else if (Event2 == idBioabfaelleName) {
                        Color = 2016;
                        console.log ('Bio = true');
                    } else if (Event2 == idPappePapierName) {
                        Color = 31;
                        console.log ('Papier = true');
                    } else if (Event2 == idWertstoffName) {
                        Color = 65504;
                        console.log ('Wert = true');
                    }
                    setStateDelayed((['0_userdata.0.Abfallkalender.', parseFloat(i) + 1, '.color'].join('')), Color, false, parseInt(((0) || "").toString(), 10), false);
                }
                });
                
                

                Ich hoffe, dass es nun richtig ist.
                Gruß Matthias

                T 1 Reply Last reply Reply Quote 0
                • T
                  TT-Tom @msuilmann last edited by TT-Tom

                  @msuilmann
                  Setze bitte mal hinter der Variable noch ein % zum Beispiel, ich glaube da ist ein Leerzeichen noch dran.

                   console.log('Event2 = %' + Event2 +  '%' )
                  
                  M 1 Reply Last reply Reply Quote 0
                  • M
                    msuilmann @TT-Tom last edited by

                    @tt-tom said in nspanel script: state im alias bleibt 0:

                    console.log('Event2 = %' + Event2 + '%' )

                    Du hast recht, der emsländische Abfallkalender hat als Besonderheit ein Leerzeichen hinter dem Namen 🙄 🙄
                    Oh Mann, Danke für den Hinweis, da wäre ich NIE drauf gekommen!

                    Beste Grüße Matthias

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      TT-Tom @msuilmann last edited by

                      @msuilmann
                      mir ist damals auch der gleich Fehler passiert, darum hatte ich so eine Vorahnung. Schön wenn es jetzt läuft.

                      M 1 Reply Last reply Reply Quote 0
                      • M
                        msuilmann @TT-Tom last edited by

                        @tt-tom

                        hier nochmal das Ergebnis vom log:

                        javascript.0
                        2023-04-03 21:30:03.740	info	script.js.NSPanel.Muell_JS: Bio = true
                        
                        javascript.0
                        2023-04-03 21:30:03.740	info	script.js.NSPanel.Muell_JS: Event2 = %Bioabfallbehaelter %
                        
                        javascript.0
                        2023-04-03 21:30:03.739	info	script.js.NSPanel.Muell_JS: Wert = true
                        
                        javascript.0
                        2023-04-03 21:30:03.739	info	script.js.NSPanel.Muell_JS: Event2 = %Wertstoffbehaelter %
                        
                        javascript.0
                        2023-04-03 21:30:03.738	info	script.js.NSPanel.Muell_JS: Rest = true
                        
                        javascript.0
                        2023-04-03 21:30:03.738	info	script.js.NSPanel.Muell_JS: Event2 = %Restabfallbehaelter %
                        
                        javascript.0
                        2023-04-03 21:30:03.737	info	script.js.NSPanel.Muell_JS: Papier = true
                        
                        javascript.0
                        2023-04-03 21:30:03.735	info	script.js.NSPanel.Muell_JS: Event2 = %Papierbehaelter %
                        
                        1 Reply Last reply Reply Quote 1
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        848
                        Online

                        31.7k
                        Users

                        79.9k
                        Topics

                        1.3m
                        Posts

                        2
                        10
                        308
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo