Ankündigung

Einklappen
Keine Ankündigung bisher.

Webseite parsen - Wie geht das mit Edomi?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #46
    Hallo André,
    das sieht schon mal ganz gut aus (muss nur mal schneller kalt werden hier!!!).
    DANKE DIR für den Tipp!!!

    Kommentar


      #47
      Das Abfrageintervall würde ich auf 30 Minuten oder so setzen - dürfte genügen. Statt des Telegrammgenerators kannst du auch einfach ein System KO (Trigger) verwenden.

      Die Länge der Bezeichnung eines Ausgangs ist arg begrenzt, das Motto daher: Kurz fassen Eine exakte Zeichenanzahl kann ich dir nicht nennen, es handelt sich ja um eine Proportionalschrift...
      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

      Kommentar


        #48
        Ahhh... bringt mich schon mal weiter, na ja bis auf kurz fassen.......
        Muss ich mir Kurzbezeichnungen überlegen..
        DANKE!!!

        Kommentar


          #49
          Ursprünglich wollte ich garkeine Namen für die Ausgänge implementieren - dafür ist schließlich die Hilfe zum LBS gedacht (A1: bla, A2: blub, ...).
          EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

          Kommentar


            #50
            Guten Morgen,

            habe mal weiter die Webseite analysiert und komme zu einen Problem:
            Wie werte ich etwas aus wenn ich keine Definierten „Abschluss“ im String habe:
            Bei den ersten Werten suchte er nach dem C am Ende.
            Bei der Werten:
            - Wert: Persönliches Wohlbefinden, Antwort: hohe Wärmebelastung (26), denke ich könnte ich die \) nehmen,
            aber vorher escapen.

            - Wert: Wettervorhersage: Antwort: regnerisch, bzw. veränderlich, hier wollte ich über das .*?gif.*? gehen,
            aber finde kein Ende bei regnerisch.
            Muss man ggf. die ganzen Zeichen davor zählen (mit Leerzeichen) um da hinzukommen?

            - Wettervorhersage VantagePro: wäre das selbe.

            Vielen DANK vorab!!!
            Wetterseite:
            Wettterseite.JPG
            Quellcode:
            Wettterseite Quellcode.JPG
            LBS (was ich bisher gemacht habe):
            LBS.JPG

            Kommentar


              #51
              Wie wärs mit html Tags Zählen bzw. auswerten. Oder auch Klammern zählen.....ist natürlich alles ein bißchen umständlich. Aber würde gehen.
              Geniale Menschen sind selten ordentlich, ordentliche selten genial. (Albert Einstein)

              Kommentar


                #52
                Zitat von tunneltruppe Beitrag anzeigen
                [h=4]Wie werte ich etwas aus wenn ich keine Definierten „Abschluss“ im String habe...
                Irgendeinen Abschuss gibt es immer
                Du koenntest zB den abschliessenden font-Tag nehmen - geht evtl auch einfacher, aber das hatte mich grad so angesprungen. Das saehe dann zB so aus:
                PHP-Code:
                preg_match("#Wohlbefinden.*?</font>.*?([^>]+)</font>#s",$src,$matches) && print $matches[1]; 
                bzw analog zur Vorhersage:
                PHP-Code:
                preg_match("#Wettervorhersage.*?</font>.*?([^>]+)</font>#s",$src,$matches) && print $matches[1]; 
                Alle Angaben ohne Gewaehr

                Kommentar


                  #53
                  DANKE Michael!!!
                  Ich hatte natürlich nicht mit der # gearbeitet!!!
                  Das war der erste Fehler und dann [^>]+)< war der zweite!!
                  Da Fehlt halt mir a) die Erfahrung und b) der „Blick“ danach!!!
                  Aber, ich über schönnn weiter!!!

                  P.S. Hast Du ggf. noch einmal zwei Gedankengänge für mich übrig?

                  A) Bzw. der Umlaute in der Auswertung (ä/ö) Hat das was mit der Codierung zu tun?
                  Ich denke das bekommt man nicht weg!?

                  B) Wie Du schon geschrieben hast der unsauberen „Webseite und dem “°“,
                  da bekomme ich jetzt das ? rein (siehe Post 42 hier im Beitrag)
                  Also schönen Abend….
                  Wetterstation_2016.05.31.jpg

                  Kommentar


                    #54
                    Ich vermute es hilft wenn du die Sonderzeichen mit str_replace ersetzt, z. B. das Grad-Zeichen so:
                    PHP-Code:
                    str_replace('°''&deg;',$variable
                    Eine Liste mit Ersetzungen findest du z. B. hier, musst du mal probieren ob dich das weiter bringt.

                    Kommentar


                      #55
                      Zitat von tunneltruppe Beitrag anzeigen
                      A) Bzw. der Umlaute in der Auswertung (ä/ö) Hat das was mit der Codierung zu tun?
                      Ich denke das bekommt man nicht weg!?

                      B) Wie Du schon geschrieben hast der unsauberen „Webseite und dem “°“,
                      da bekomme ich jetzt das ? rein (siehe Post 42 hier im Beitrag)
                      Ja, das hat mit der Kodierung zu tun, die Webseite liefert iso-8859-1.
                      Und doch, das bekommt man weg: Du musst einfach ein htmlentities() ueber das Ergebnis laufen lassen, also quasi so:
                      PHP-Code:
                      preg_match("#Wohlbefinden.*?</font>.*?([^>]+)</font>#s",$src,$matches) && print htmlentities($matches[1]); 
                      Wichtig aber, dassu das nicht mit dem Webseitenquelltext tust sondern nur mit dem Ergebnis des preg_match!

                      Alternativ kannst Du (dann auch bereits beim Quelltext) utf8_encode benutzen um von iso-8859 nach UTF-8 zu konvertieren. Ich weiss nicht 100%ig wie Edomi dazu steht wenn Du UTF-8 aus einem LBS rauswirfst, aber nen Versuch wird es wert sein

                      Kommentar


                        #56
                        Zitat von wintermute Beitrag anzeigen

                        Ja, das hat mit der Kodierung zu tun, die Webseite liefert iso-8859-1.
                        Und doch, das bekommt man weg: Du musst einfach ein htmlentities() ueber das Ergebnis laufen lassen, also quasi so:
                        PHP-Code:
                        preg_match("#Wohlbefinden.*?</font>.*?([^>]+)</font>#s",$src,$matches) && print htmlentities($matches[1]); 
                        Wichtig aber, dassu das nicht mit dem Webseitenquelltext tust sondern nur mit dem Ergebnis des preg_match!

                        Alternativ kannst Du (dann auch bereits beim Quelltext) utf8_encode benutzen um von iso-8859 nach UTF-8 zu konvertieren. Ich weiss nicht 100%ig wie Edomi dazu steht wenn Du UTF-8 aus einem LBS rauswirfst, aber nen Versuch wird es wert sein
                        Hallo Michael,
                        bin gerade dabei Deinen Befehl umzusetzen, leider ohne Erfolg!!
                        LBS:
                        htmlentities_2.jpg

                        Edomi Logikeditor:
                        Logik html.jpg

                        WOhlbefinden.jpg

                        Wenn ich das recht verstehe, dann ist ja die Webseite in:

                        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> kodiert.

                        Ich muss aber die "Webseite" in UTF-8 haben:
                        UFT-8.jpg

                        Leider finde ich nicht den Befehl "htmlentities" nicht sooo wie ich es mir erklären kann:
                        htmlentities_erklärung.jpg

                        Weißt Du was ich hier falsch deute??
                        DANKE DIR!!!

                        Kommentar


                          #57
                          Ich weiß nicht ob es hilft, aber du könntest versuchen die Website nach UTF zu konvertieren mit
                          PHP-Code:
                          utf8_encode($data

                          Kommentar


                            #58
                            Zitat von panzaeron Beitrag anzeigen
                            PHP-Code:
                            utf8_encode($data
                            Sach ich doch

                            Kommentar


                              #59
                              Uffff... Ihr seit gut!!!
                              Bin gerade mal froh die Werte auszulesen und ein ö so wech zubekommen, so dass
                              die Auswertung geht!!!
                              Also muss ich ja den Befehl in die ###[EXEC]### bekommen
                              und die Seite:
                              $src=file_get_contents("http://www.wetterstation-hannover.de/html/current.html");
                              ja (denke ich) in utf8_encode($data); übergeben!

                              So geht es leider nicht:

                              UFT-8_2.jpg

                              DANKE vorab!!!



                              Kommentar


                                #60
                                Versuch es mal so:
                                PHP-Code:
                                $src=utf8_encode(file_get_contents("http://www.wetterstation-hannover.de/html/current.html")); 
                                Edit:
                                Gerade noch gesehen und besser gelöst: Du erstellst einen neue UTF-8 Version von file_get_contents, welche die Konvertierung durchführt:
                                PHP-Code:
                                function file_get_contents_utf8($fn) { 
                                     
                                $content file_get_contents($fn); 
                                      return 
                                mb_convert_encoding($content'UTF-8'
                                          
                                mb_detect_encoding($content'UTF-8, ISO-8859-1'true)); 

                                Also am Ende des EXEC-Teils fügst du die neue Funktion ein und rufst diese dann wie folgt auf:

                                PHP-Code:
                                $src=file_get_contents_utf8("http://www.wetterstation-hannover.de/html/current.html"); 
                                Das Beispiel stammt von hier.
                                Zuletzt geändert von panzaeron; 01.06.2016, 21:48.

                                Kommentar

                                Lädt...
                                X