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 und zeige mal, was in den parser.0 datenpunkten steht - ist da schon de fehler vom parsen ? "null" ist ein "fehler" und bedeutet nicht 0

      den müßte man dann noch abfangen im script

      A 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @liv-in-sky last edited by

        @liv-in-sky sagte in Adapter - Parser soll Wartezeiten auslesen:

        da müßte 0 stehen

        unendlich wäre sinnvoller 😉

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

          @Homoran unendlich oder "not available"

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

            @liv-in-sky
            Wenn es in Zahlen ausgedrückt werden soll ist bei geschlossen die Wartezeit unendlich oder pragmatich 999(9999) je nach anzahl der Stellen

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

              @Homoran jo - da hast du wohl recht

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

                @liv-in-sky

                parser.PNG

                Das "Null" steht drin weil die Bahn heute nicht geloggt wird kp.
                Sie erscheint auch nicht auf der Homepage , wenn ich z.b. einen
                falschen Link eingebe kommt ebenfalls "Null"

                Dachte man kann beim parser bei Ersatz eine Ersatzzahl definieren
                aber das funktioniert nicht.

                Grüße Alex

                liv-in-sky 1 Reply Last reply Reply Quote 0
                • 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
                                            • First post
                                              Last post

                                            Support us

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

                                            895
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

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