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

      @Alexxx2005 soll den eine solche "null"-bahn überhaupt in der tabelle erscheinben oder soll sie mit einem bestimmten wert bzw. bild erscheinen 🔐 oder🔒 oder ⏳ oder r♾️ siehe https://emojipedia.org/objects/

      poste noch das script

      A 1 Reply Last reply Reply Quote 0
      • 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

                                    860
                                    Online

                                    31.9k
                                    Users

                                    80.2k
                                    Topics

                                    1.3m
                                    Posts

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