Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Webseite parsen ?

    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

    Webseite parsen ?

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

      Hallo.

      Ich habe hier eine lokale Webseite die Schaltzustände anzeigt. (das ist die Webseite meiner Einbruchmeldeanlage)

      Leider gibt es noch keinen Adapter um mit der Alarmanlag über ein Protokoll zu kommunizieren. https://github.com/ioBroker/AdapterRequests/issues/309

      Kann man nicht die Zustände von der Webseite aus in Datenpunkte umwandeln indem man die Webseite alle paar Sekunden abfragt?

      Danke! 🙂

      Roelli.

      Hier ist der Seitenquelltext, aus dem ich selbtverständlich nicht schlau werde:

      <html>
      <head>
      <body bgcolor="#EFEFEF" text="black" link="blue" vlink="purple" alink="red">
      <script type="text/javascript">
      
      function init_tab()
      {
      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
      }
      else
      {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.open("GET","input_emz.xml",false);
      xmlhttp.send();
      xmlDoc=xmlhttp.responseXML;
      
      document.write("<table border='1'>");
      var x=xmlDoc.getElementsByTagName("Info");
      poll=x[0].getElementsByTagName("Poll")[0].childNodes[0].nodeValue;
      
        document.write("<title>"+x[0].getElementsByTagName('Headline')[0].childNodes[0].nodeValue+"</title>");
        document.write("<tr><td colspan='6' align='center'>");
        document.write(x[0].getElementsByTagName("Headline")[0].childNodes[0].nodeValue);
        document.write("</td></tr>");
        
        document.write("<tr><td width='300'>");
        document.write(x[0].getElementsByTagName("Column1")[0].childNodes[0].nodeValue);
        document.write("</td><td width='80'>");
        document.write(x[0].getElementsByTagName("Column2")[0].childNodes[0].nodeValue);
        document.write("</td><td>");
        document.write(x[0].getElementsByTagName("Column3")[0].childNodes[0].nodeValue);
        document.write("</td><td width='100'>");
        document.write(x[0].getElementsByTagName("Column4")[0].childNodes[0].nodeValue);
        document.write("</td><td align='center' width='50'>");
        document.write(x[0].getElementsByTagName("Column5")[0].childNodes[0].nodeValue);
        document.write("</td></tr>");
      
      var y=xmlDoc.getElementsByTagName("Input");
      for (i=0;i<y.length;i++)
        {
        document.write("<tr><td>");
        document.write("<div id='text"+i+"'> </div>");  
        document.write("</td><td>");
        document.write("<div id='zustand"+i+"'> </div>");
        document.write("</td><td align='center'>");  
        document.write("<img src='red-on.gif' alt='red-on.gif'>");
        document.write("</td><td>");
        document.write("<div id='ph_zustand"+i+"'> </div>");
        document.write("</td><td align='center'>");
        document.write(y[i].attributes[0].nodeValue);
        document.write("</td></tr>");
        }
      document.write("</table>");
      
      
      RedOnBild = new Image();
      RedOnBild.src = "red-on.gif";
      RedOffBild = new Image();
      RedOffBild.src = "red-off.gif";
      
      refresh();
      }
      
      function refresh()
      {
        xmlhttp.open("GET","input_emz.xml",false);
        xmlhttp.send();
        xmlDoc=xmlhttp.responseXML; 
        var z=xmlDoc.getElementsByTagName("Input");
      
        for (i=0;i<z.length;i++)
        {
      	if (document.getElementById('text'+i).innerHTML != z[i].getElementsByTagName("Text")[0].childNodes[0].nodeValue)
      	   document.getElementById('text'+i).innerHTML=z[i].getElementsByTagName("Text")[0].childNodes[0].nodeValue;  
      	if (document.getElementById('zustand'+i).innerHTML != z[i].getElementsByTagName("Condition")[0].childNodes[0].nodeValue)
      	   document.getElementById('zustand'+i).innerHTML=z[i].getElementsByTagName("Condition")[0].childNodes[0].nodeValue;  
      	if (document.getElementById('ph_zustand'+i).innerHTML != z[i].getElementsByTagName("PH_Condition")[0].childNodes[0].nodeValue)
      	   document.getElementById('ph_zustand'+i).innerHTML=z[i].getElementsByTagName("PH_Condition")[0].childNodes[0].nodeValue;  
      
      	if (z[i].getElementsByTagName("Led")[0].childNodes[0].nodeValue == "RED_ON")
      	   if (document.images[i].src != RedOnBild.src) 
      	     document.images[i].src = RedOnBild.src;
      	if (z[i].getElementsByTagName("Led")[0].childNodes[0].nodeValue == "RED_OFF")
      	   if (document.images[i].src != RedOffBild.src) 
      	     document.images[i].src = RedOffBild.src		 
        }
        window.setTimeout("refresh()", poll);
      }
      
      init_tab();
      
      </script>
      
      
      </head>
      
      <body>
      
      
      </body>
      </html>
      
      js903801 created this issue in ioBroker/AdapterRequests

      closed VDS 2465 Adapter für Einburchmeldeanlagen #309

      J 1 Reply Last reply Reply Quote 0
      • J
        Ju5t1n @Roelli last edited by

        @Roelli
        Ich habe die [http://deine-ip:port/input_emz.xml] direkt mit dem Parser geöffnet.
        674200ef-b4ed-4386-988a-985d76ca1eff-image.png
        Über das RegEx-Feld prüfe ich, ob der entsprechende Zustand in der input_emz.xml enthalten ist.
        bbcf5a37-af34-4f02-a032-bb892aa28997-image.png
        Das ganze lass ich im 5 Sekunden Takt laufen.

        R 1 Reply Last reply Reply Quote 0
        • R
          Roelli @Ju5t1n last edited by

          @Ju5t1n
          Mega!
          Habe mal Deinen Code bei mir ausprobiert, funzt aber noch nicht so ganz. Der Zustand ändert sich nicht - egal ob die "Led rot ist oder nicht".
          Kann man vermutlich auch besser testen wenn man auch mal den Wert der Webseite ändern kann.
          Hast Du Bock auf Teamviewer? Ich zahl nen Fuffi pro Stunde mit Paypal - dann könnten wir mal probieren. Vielleicht klappts ja irgendwie.

          J 1 Reply Last reply Reply Quote 0
          • J
            Ju5t1n @Roelli last edited by

            @Roelli
            😁 Das Geld lass mal stecken. Teamviewer können wir aber gerne mal machen.
            Die Werte in der Webseite ändern sich, wenn du deine Türen/Fenster öffnest oder schließt.
            Bei mir dauert es immer ein paar Sekunden, bis die Änderung auf dem WebGui von der EMA erscheint.
            Also mit ein wenig Verzögerung musst du schon leben.

            R 1 Reply Last reply Reply Quote 0
            • R
              Roelli @Ju5t1n last edited by

              @Ju5t1n
              Bei mir erscheint beim "Testtext" plötzlich der Seitenquelltext. Ich würde sagen ich mache gefühlt relativ viel falsch! 🙂
              Wann haste mal Zeit? 👼

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @Roelli last edited by

                @Roelli sagte in Webseite parsen ?:

                Bei mir erscheint beim "Testtext" plötzlich der Seitenquelltext.

                das soll er auch, wenn der Aufruf korrekt ist.
                Spätestens nach dem Drücken des "play"-Buttons

                R 1 Reply Last reply Reply Quote 0
                • R
                  Roelli @Homoran last edited by

                  @Homoran said in Webseite parsen ?:

                  @Roelli sagte in Webseite parsen ?:

                  Bei mir erscheint beim "Testtext" plötzlich der Seitenquelltext.

                  das soll er auch, wenn der Aufruf korrekt ist.
                  Spätestens nach dem Drücken des "play"-Buttons

                  Interessant!
                  Allerdings ändert sich am Datenpunkt: nix

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @Roelli last edited by

                    @Roelli ich habe mir den "Quelltext" nicht genau angesehen. kann mir aber bei einer Alarmanlage gut vorstellen, dass diese nicht einfach von extern gesteuert werden kann.

                    R 1 Reply Last reply Reply Quote 0
                    • R
                      Roelli @Homoran last edited by

                      @Homoran

                      Bei der Alarmanlage gibt's 100 Eingänge (=100 Meldergruppen)
                      und 100 Ausänge (womit man von extern irgendwas in der Alarmanlage schalten kann.

                      Die Alarmanlage macht lokal eine Webseite.
                      Ich dachte.. Iobroker checkt dann im lokalen Netzwerk die Werte der Webseite und wenn sich was ändert - dann ändert sich der Datenpunkt in Iobroker und ich kann damit dann weiterarbeiten.

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @Roelli last edited by

                        @Roelli also nur reagieren? nicht da etwas ändern!
                        das sollte gehen, wenn die Änderungen auch im Quelltext erscheinen und nicht im Hintergrund dynamisch erstellt werden.

                        R 1 Reply Last reply Reply Quote 0
                        • R
                          Roelli @Homoran last edited by

                          @Homoran
                          Joa. Auf die Ausgänge der Alarmanlage soll nur reagiert werden.
                          Die Eingänge der Alarmanlage sollen aber auch schalten. (Von Iobroker zur Alarmanlage)

                          Für mich sieht's eher nicht so aus als wenn sich im Quelltext was ändert wenn sich ein Wert der Alarmanlage ändert. Zumindest kann ich keine 100 einzelne Zustände erkennen.
                          Aber... in Sachen HTML bin ich eh auf Hilfe angewiesen.
                          Eine Lösung dazu findet man eher nicht im Internet. Das ist eher etwas für jemanden der sich sowieso mit sowas auskennt. 😉

                          Homoran 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @Roelli last edited by

                            @Roelli sagte in Webseite parsen ?:

                            in Sachen HTML bin ich eh auf Hilfe angewiesen.

                            da sind wir dann ja schon zwei 😉

                            für mich sieht das so aus als ob das ganze per xml dynamisch erzeugt wird, also Werte auf die reagiert wird nicht mittels Parser zu bekommen sind

                            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

                            689
                            Online

                            31.9k
                            Users

                            80.1k
                            Topics

                            1.3m
                            Posts

                            parser ema alarmanlage
                            3
                            12
                            902
                            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