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

                            909
                            Online

                            31.9k
                            Users

                            80.2k
                            Topics

                            1.3m
                            Posts

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