Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst] Adapter - Parser / Wartezeiten auslesen

    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

    [gelöst] Adapter - Parser / Wartezeiten auslesen

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      Alexxx2005 @liv-in-sky last edited by Homoran

      @liv-in-sky also am besten wäre das Locked Symbol 🔒 wahrscheinlich ist die Bahn dann defekt oder über Winterzeit geschlossen...

      var cacheSelector = $('state[id=parser.0.*]');
      var cacheSelector = $('[id=parser.0.*]');
      schedule( "*/03 * * * * *",  function () {   
      var sortArr=[];
      var htmlString ="<table><tr><td>Bahn   </td><td>Wartezeit   </td><td>   </td></tr>";
      //console.log(cacheSelector);
      var counter =0;
      cacheSelector.each(function(id, i) {
      counter = counter+1
      var devicename = getObject(id).common.name;
      var ip = id.replace(/_/g, ".");
      var ip = ip.replace(/parser.0./g, "");
      // log(id + " : " + devicename + " : " + ip );
      var devicenameName=devicename;
      devicename="Park.Wartezeit"+counter.toString()+".BahnName";
      createState(devicename, 'empty', { name: 'Name der Bahn', desc: '', type: 'string', role: '',read: true, write: true });
      setStateDelayed(devicename, devicenameName, 800);
      devicename="Park.Wartezeit"+counter.toString()+".Bahn";
      setStateDelayed(devicename, ip, 800);
      createState('empty', { name: 'Bahn', desc: '', type: 'string', role: '',read: true, write: true });
      var wert2 = getState(id).val;
      var wert1 = getState(id).val;
      if (wert2) wert2 = "✅";
      if (!wert2) wert2= "❌";
      let help = [ip,wert1,wert2];
      sortArr.push(help);
      //log(sortArr[0]);
      });
      function numSort(a, b) { 
        return parseInt(b[1]) - parseInt(a[1]);
      } 
      sortArr.sort(numSort);
             for (var i=0; i<sortArr.length;i++) {
                 htmlString=htmlString+"<tr><td>" + sortArr[i][0] + "   </td><td>" + sortArr[i][1] + "   </td><td>" + sortArr[i][2] +  "</td></tr>";
             }      
      //htmlString=htmlString.concat("<tr><td>" + devicenameName + "   </td><td>" + ip + "   </td><td>" + wert1 + "</td></tr>");
      //log(counter);
      createState('Park.StringHTML', 0, {name: 'StringHTML', desc: '', type: 'string', role: '',read: true, write: true });
      createState('Park.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Geräte', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
      setStateDelayed('Park.Anzahl', counter, 800);
      setStateDelayed('Park.StringHTML', htmlString.concat("</table>"), 800);
      });
      

      liv-in-sky 1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @Alexxx2005 last edited by liv-in-sky

        @Alexxx2005 ich schau mal - bitte poste scripts im code tag

        Image 2.png

        1 Reply Last reply Reply Quote 0
        • A
          Alexxx2005 last edited by

          Ah so ist's richtig 🙂

          var cacheSelector = $('state[id=parser.0.*]');
          var cacheSelector = $('[id=parser.0.*]');
          schedule( "*/03 * * * * *",  function () {   
          var sortArr=[];
          var htmlString ="<table><tr><td>Bahn   </td><td>Wartezeit   </td><td>   </td></tr>";
          //console.log(cacheSelector);
          var counter =0;
          cacheSelector.each(function(id, i) {
          counter = counter+1
          var devicename = getObject(id).common.name;
          var ip = id.replace(/_/g, ".");
          var ip = ip.replace(/parser.0./g, "");
          // log(id + " : " + devicename + " : " + ip );
          var devicenameName=devicename;
          devicename="Park.Wartezeit"+counter.toString()+".BahnName";
          createState(devicename, 'empty', { name: 'Name der Bahn', desc: '', type: 'string', role: '',read: true, write: true });
          setStateDelayed(devicename, devicenameName, 800);
          devicename="Park.Wartezeit"+counter.toString()+".Bahn";
          setStateDelayed(devicename, ip, 800);
          createState('empty', { name: 'Bahn', desc: '', type: 'string', role: '',read: true, write: true });
          var wert2 = getState(id).val;
          var wert1 = getState(id).val;
          if (wert2) wert2 = "✅";
          if (!wert2) wert2= "❌";
          let help = [ip,wert1,wert2];
          sortArr.push(help);
          //log(sortArr[0]);
          });
          function numSort(a, b) { 
           return parseInt(b[1]) - parseInt(a[1]);
          } 
          sortArr.sort(numSort);
                for (var i=0; i<sortArr.length;i++) {
                    htmlString=htmlString+"<tr><td>" + sortArr[i][0] + "   </td><td>" + sortArr[i][1] + "   </td><td>" + sortArr[i][2] +  "</td></tr>";
                }      
          //htmlString=htmlString.concat("<tr><td>" + devicenameName + "   </td><td>" + ip + "   </td><td>" + wert1 + "</td></tr>");
          //log(counter);
          createState('Park.StringHTML', 0, {name: 'StringHTML', desc: '', type: 'string', role: '',read: true, write: true });
          createState('Park.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Geräte', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
          setStateDelayed('Park.Anzahl', counter, 800);
          setStateDelayed('Park.StringHTML', htmlString.concat("</table>"), 800);
          });
          

          liv-in-sky 1 Reply Last reply Reply Quote 1
          • liv-in-sky
            liv-in-sky @Alexxx2005 last edited by liv-in-sky

            @Alexxx2005

            ok neuer test

            
            
            schedule( "*/20 * * * * *", function () {
            var cacheSelector = $('[id=parser.0.*]');
            var sortArr=[];
            var htmlString ="<table><tr><td>Bahn </td><td>Wartezeit </td><td> </td><td>&ensp;&ensp;&ensp;</td><td>Bahn &ensp;&ensp;&ensp;</td><td>Wartezeit </td><td> </td></tr>";/*+
                                   "<tr>&ensp;<td></td><td></td><td></td><td></td><td></td><td></td></tr>" */;
            //console.log(cacheSelector);
            var counter =0;
            
            cacheSelector.each(function(id, i) {
            
            counter = counter+1
            
            var devicename = getObject(id).common.name;
            
            var ip = id.replace(/_/g, ".");
            
            var ip = ip.replace(/parser.0./g, "");
            
            
            var ip = id.replace(/_/g, ".");
            var ip = ip.replace(/parser.0./g, "");
            // log(id + " : " + devicename + " : " + ip );
            var devicenameName=devicename;
            
            devicename="Park.Wartezeit"+counter.toString()+".BahnName";
            createState(devicename, 'empty', { name: 'Name der Bahn', desc: '', type: 'string', role: '',read: true, write: true });
            setStateDelayed(devicename, devicenameName, 800);
            devicename="Park.Wartezeit"+counter.toString()+".Bahn";
            setStateDelayed(devicename, ip, 800);
            createState(devicename,'empty', { name: 'Bahn', desc: '', type: 'string', role: '',read: true, write: true });
            var wert1;
            var wert2;
            if ( getState(id).val==null) {wert1= "🔒"; wert2="999999";} 
            else {
                 
                 var wert2 = getState(id).val;
                 var wert1 = getState(id).val;
                 if (wert1) wert1 = "✅";
                 if (!wert1) wert1= "❌";
            }
            let help = [ip,wert2,wert1];
            sortArr.push(help);
            
            });
            function numSort(a, b) {
            return parseInt(a[1]) - parseInt(b[1]);
            }
            sortArr.sort(numSort);
            for (var i=0; i<sortArr.length;i++) {   
               if (sortArr[i][1]!="999999") {
               if(i%2==0) {htmlString=htmlString+"<tr><td>" + sortArr[i][0] + "</td><td>&ensp;&ensp;&ensp;" + sortArr[i][1] + "&ensp;&ensp;&ensp;</td><td>" + sortArr[i][2]+"&ensp;&ensp;&ensp;"+"<td>&ensp;&ensp;&ensp;</td>" ;}// +"</td>"         + " <td>"        + " </td><td>"   + "</td></tr>";}
               else{htmlString=htmlString+      "<td>" + sortArr[i][0]  + " </td><td>&ensp;&ensp;&ensp;"   + sortArr[i][1]  + "&ensp;&ensp;&ensp;</td><td>"   + sortArr[i][2] + "</td></tr>"}}
               else{
                   if(i%2==0) {htmlString=htmlString+"<tr><td>" + sortArr[i][0] + "</td><td>&ensp;&ensp;&ensp;" + "out" + "&ensp;&ensp;&ensp;</td><td>" + sortArr[i][2]+"&ensp;&ensp;&ensp;" ;}// +"</td>"         + " <td>"        + " </td><td>"   + "</td></tr>";}
               else{htmlString=htmlString+      "<td>" + sortArr[i][0]  + " </td><td>&ensp;&ensp;&ensp;"   + "out"  + "&ensp;&ensp;&ensp;</td><td>"   + sortArr[i][2] + "</td></tr>"}
            
               }
            
            }
            //htmlString=htmlString.concat("<tr><td>" + devicenameName + " </td><td>" + ip + " </td><td>" + wert1 + "</td></tr>");
            //log(counter);
            createState('Park.StringHTML', 0, {name: 'StringHTML', desc: '', type: 'string', role: '',read: true, write: true });
            createState('Park.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Geräte', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
            setStateDelayed('Park.Anzahl', counter, 800);
            setStateDelayed('Park.StringHTML', htmlString.concat("</table>"), 800);
            });
            

            ich habe mal versucht, das ganze in 2 tabellen nebeneinander darzustellen - weiß nicht ob das gefällt ?

            test3.gif

            A 1 Reply Last reply Reply Quote 0
            • A
              Alexxx2005 @liv-in-sky last edited by

              @liv-in-sky

              doch das ist super , sieht gut aus. Es zeigt bei mir nur die oberen drei rechten Spalten zu weit links an , es da noch ein kleiner Bug im "htmlstring" oder warum zeigt es die drei markierten Bahnen so an ?

              Bug.PNG

              Grüße Alex

              Homoran liv-in-sky 3 Replies Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @Alexxx2005 last edited by

                @Alexxx2005 sagte in Adapter - Parser soll Wartezeiten auslesen:

                Es zeigt bei mir nur die oberen drei rechten Spalten zu weit links an

                ich tippe darauf, dass es an dem Schloss - icon, resp. der dazugehörigen Formatierung liegt

                1 Reply Last reply Reply Quote 0
                • liv-in-sky
                  liv-in-sky @Alexxx2005 last edited by

                  @Alexxx2005 ich überprüfe nochmal - falls du was am script geändert hast, bitte wieder posten, damit ich damit arbeiten kann, sonst musst du wieder nachträglich ändern

                  nur zur sicherheit - die werte stimmen alle ? es geht nur um die formatierung ?

                  1 Reply Last reply Reply Quote 0
                  • liv-in-sky
                    liv-in-sky @Alexxx2005 last edited by liv-in-sky

                    @Alexxx2005 du kannst mal zum test das schloss mit einem haken austauschen und nachsehen, ob das problem bleibt - somit könnten wir das icon ausschließem ( @Homoran )

                    A 1 Reply Last reply Reply Quote 0
                    • A
                      Alexxx2005 @liv-in-sky last edited by Alexxx2005

                      @Homoran

                      beim Haken oder X ist es gleich

                      bug2.PNG

                      @liv-in-sky

                      im Skript habe ich nur bei Zeile 54/55 das Wort "out" entfernt

                      Zeile54.PNG

                      und die Sortierung (b und a) in Zeile 46 sonst ist alles genau gleich wie das
                      wo du gepostet hast 🙂

                      Grüße Alex

                      liv-in-sky 2 Replies Last reply Reply Quote 0
                      • liv-in-sky
                        liv-in-sky @Alexxx2005 last edited by

                        @Alexxx2005ok - teste gerade - komme schon auf die spur 🙂

                        A 1 Reply Last reply Reply Quote 0
                        • A
                          Alexxx2005 @liv-in-sky last edited by

                          @liv-in-sky

                          ja das denke ich mir , habe nun die Tage auch einiges gelernt, hilft mir dann auch wieder wo anders...

                          1 Reply Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky @Alexxx2005 last edited by

                            @Alexxx2005 tausche mal diesen block aus:

                            sortArr.sort(numSort);
                            for (var i=0; i<sortArr.length;i++) {   
                               if (sortArr[i][1]!="999999") {
                               if(i%2==0)     {htmlString=htmlString+"<tr><td>" + sortArr[i][0] + "</td><td>&ensp;&ensp;&ensp;" + sortArr[i][1] + "&ensp;&ensp;&ensp;</td><td>" + sortArr[i][2]+"&ensp;&ensp;&ensp;"+"<td>&ensp;&ensp;&ensp;</td>" ;}// +"</td>"         + " <td>"        + " </td><td>"   + "</td></tr>";}
                               else{htmlString=htmlString+      "<td>" + sortArr[i][0]  + " </td><td>&ensp;&ensp;&ensp;"   + sortArr[i][1]  + "&ensp;&ensp;&ensp;</td><td>"   + sortArr[i][2] + "</td></tr>"}}
                               else{
                                   if(i%2==0) {htmlString=htmlString+"<tr><td>" + sortArr[i][0] + "</td><td>&ensp;&ensp;&ensp;" + "" + "&ensp;&ensp;&ensp;</td><td>" + sortArr[i][2]+"&ensp;&ensp;&ensp;"+"<td>&ensp;&ensp;&ensp;" ;}// +"</td>"         + " <td>"        + " </td><td>"   + "</td></tr>";}
                               else{htmlString=htmlString+      "<td>"+ sortArr[i][0]  + " </td><td>&ensp;&ensp;&ensp;"   + ""  + "&ensp;&ensp;&ensp;</td><td>"   + sortArr[i][2] + "</td></tr>"}
                            
                               }
                            

                            A 1 Reply Last reply Reply Quote 1
                            • A
                              Alexxx2005 @liv-in-sky last edited by

                              @liv-in-sky

                              That's it 👏

                              Somit wäre es komplett :

                              schedule( "*/20 * * * * *", function () {
                              var cacheSelector = $('[id=parser.0.*]');
                              var sortArr=[];
                              var htmlString ="<table><tr><td>Bahn </td><td>Wartezeit </td><td> </td><td>&ensp;&ensp;&ensp;</td><td>Bahn &ensp;&ensp;&ensp;</td><td>Wartezeit </td><td> </td></tr>";/*+
                                                    "<tr>&ensp;<td></td><td></td><td></td><td></td><td></td><td></td></tr>" */;
                              //console.log(cacheSelector);
                              var counter =0;
                              
                              cacheSelector.each(function(id, i) {
                              
                              counter = counter+1
                              
                              var devicename = getObject(id).common.name;
                              
                              var ip = id.replace(/_/g, ".");
                              
                              var ip = ip.replace(/parser.0./g, "");
                              
                              
                              var ip = id.replace(/_/g, ".");
                              var ip = ip.replace(/parser.0./g, "");
                              // log(id + " : " + devicename + " : " + ip );
                              var devicenameName=devicename;
                              
                              devicename="Park.Wartezeit"+counter.toString()+".BahnName";
                              createState(devicename, 'empty', { name: 'Name der Bahn', desc: '', type: 'string', role: '',read: true, write: true });
                              setStateDelayed(devicename, devicenameName, 800);
                              devicename="Park.Wartezeit"+counter.toString()+".Bahn";
                              setStateDelayed(devicename, ip, 800);
                              createState(devicename,'empty', { name: 'Bahn', desc: '', type: 'string', role: '',read: true, write: true });
                              var wert1;
                              var wert2;
                              if ( getState(id).val==null) {wert1= "🔒"; wert2="999999";} 
                              else {
                                  
                                  var wert2 = getState(id).val;
                                  var wert1 = getState(id).val;
                                  if (wert1) wert1 = "✅";
                                  if (!wert1) wert1= "❌";
                              }
                              let help = [ip,wert2,wert1];
                              sortArr.push(help);
                              
                              });
                              function numSort(a, b) {
                              return parseInt(b[1]) - parseInt(a[1]);
                              }
                              sortArr.sort(numSort);
                              for (var i=0; i<sortArr.length;i++) {   
                                if (sortArr[i][1]!="999999") {
                                if(i%2==0)     {htmlString=htmlString+"<tr><td>" + sortArr[i][0] + "</td><td>&ensp;&ensp;&ensp;" + sortArr[i][1] + "&ensp;&ensp;&ensp;</td><td>" + sortArr[i][2]+"&ensp;&ensp;&ensp;"+"<td>&ensp;&ensp;&ensp;</td>" ;}// +"</td>"         + " <td>"        + " </td><td>"   + "</td></tr>";}
                                else{htmlString=htmlString+      "<td>" + sortArr[i][0]  + " </td><td>&ensp;&ensp;&ensp;"   + sortArr[i][1]  + "&ensp;&ensp;&ensp;</td><td>"   + sortArr[i][2] + "</td></tr>"}}
                                else{
                                    if(i%2==0) {htmlString=htmlString+"<tr><td>" + sortArr[i][0] + "</td><td>&ensp;&ensp;&ensp;" + "" + "&ensp;&ensp;&ensp;</td><td>" + sortArr[i][2]+"&ensp;&ensp;&ensp;"+"<td>&ensp;&ensp;&ensp;" ;}// +"</td>"         + " <td>"        + " </td><td>"   + "</td></tr>";}
                                else{htmlString=htmlString+      "<td>"+ sortArr[i][0]  + " </td><td>&ensp;&ensp;&ensp;"   + ""  + "&ensp;&ensp;&ensp;</td><td>"   + sortArr[i][2] + "</td></tr>"}
                              
                                }
                              }
                              //htmlString=htmlString.concat("<tr><td>" + devicenameName + " </td><td>" + ip + " </td><td>" + wert1 + "</td></tr>");
                              //log(counter);
                              createState('Park.StringHTML', 0, {name: 'StringHTML', desc: '', type: 'string', role: '',read: true, write: true });
                              createState('Park.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Geräte', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
                              setStateDelayed('Park.Anzahl', counter, 800);
                              setStateDelayed('Park.StringHTML', htmlString.concat("</table>"), 800);
                              });
                              

                              Danke nochmal für alles !

                              liv-in-sky 1 Reply Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky @Alexxx2005 last edited by

                                @Alexxx2005 gerne

                                schau mal in meine signatur - zum thread beenden

                                1 Reply Last reply Reply Quote 0
                                • A
                                  Alexxx2005 @Homoran last edited by Alexxx2005

                                  @Homoran said in [gelöst] Adapter - Parser / Wartezeiten auslesen:

                                  Badge[^>]>(\d)

                                  Wenn ich "Heute geöffnet" auslesen möchte wie springe ich in eine Zweite Gruppe ?

                                  Heute bis[^>]*>(\d*:)
                                  

                                  ergibt "19" aber wie komme ich dann auf 19:00 ?

                                  gibt es dazu eine Doku ?

                                  Grüße Alex

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate
                                  FAQ Cloud / IOT
                                  HowTo: Node.js-Update
                                  HowTo: Backup/Restore
                                  Downloads
                                  BLOG

                                  475
                                  Online

                                  31.9k
                                  Users

                                  80.2k
                                  Topics

                                  1.3m
                                  Posts

                                  parser adapter
                                  5
                                  53
                                  2149
                                  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