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

    #61

    ICH HAU mich WECH!!! Es GEHT!!! ES GEHTT!!!!
    DANKE!!!!!!!!!!!!!!!!!
    Vielen vielen DANK MÄNNERS!!! Ohne euch hätte ich das nie hinbekommen!!!!!!
    P.S wenn Ihr mal in Hannover seit kommt aufen Bier, oder mehr vorbei!!!
    Gruß Marcus!!!!
    UFT-8_3.jpg

    Kommentar


      #62
      Zitat von tunneltruppe Beitrag anzeigen

      ICH HAU mich WECH!!! Es GEHT!!! ES GEHTT!!!!
      DANKE!!!!!!!!!!!!!!!!!
      Vielen vielen DANK MÄNNERS!!! Ohne euch hätte ich das nie hinbekommen!!!!!!
      P.S wenn Ihr mal in Hannover seit kommt aufen Bier, oder mehr vorbei!!!
      Gruß Marcus!!!!
      [ATTACH=CONFIG]n954299[/ATTACH]
      Nachtrag: Beide Versionen getestet und gehen!!! DANKE DANKE!!!

      Kommentar


        #63
        Freut mich das es jetzt funktioniert
        ​​

        Kommentar


          #64
          Zum Glück muss man sich ja hier nicht über den Nutzen und die Sinnhaftigkeit
          seines Treiben rechtfertigen!!!
          Nachdem ich 87 Werte der Webseite im LBS ausgewertet habe und diese in der Visu
          dargestellt habe, kann ich nun den LBS abharken!!!
          Habe viel gelernt über den PHP Befehl „preg_match“ und wie ich einen Quellcode
          auswerte.
          Probleme für mich bleibet jedoch: Die Icons!! Habe mir schon einige gekauft und einige
          dann in Word „zusammengebaut“, aber schön finde ich das noch nicht!!!
          Ich hätte gerne eine Linie der Icons drin, aber tu mich schwer mit .png Icons!!
          Aber wird schon noch….
          Also DANKE für die Hilfe zum Erstellen der Visuseite!!!
          Anbei nun einmal die Unter- Visuseite
          Gruß Marcus
          Wetter Hannover Visu.jpg

          Kommentar


            #65
            Guten Abend,
            ich versuche gerade in EDOMI die Fehler gegen null zu bekommen.
            Nun muss ich sehen, dass mein LBS ..242 auch einen Fehlereintrag macht.
            Leider bin ich ja nicht soooo gut im Thema PHP drin.
            Hier der Eintrag des Fehlers in Edomi:
            Log aus edomi.jpg
            Noch ein Fehler dazu gekommen:
            Log aus edomi_2.jpg

            Der Baustein im Edomi Ordner sieht so aus:
            Baustein aufbau.jpg

            Nun wie gesagt weiß ich nicht was für ein Fehler in der Zeile 7 sein soll.
            Kann mir jemand sagen was ich hier falsch (zusammengeklaut) habe?
            DANKE vor ab!!!
            19000242_lbs.pdf
            P.S. .pdf in php ändern!!
            Angehängte Dateien
            Zuletzt geändert von tunneltruppe; 11.07.2016, 22:05.

            Kommentar


              #66
              Fehler 1: du hast keine Funktion debug() definiert rufst diese aber in Zeile 225 auf.
              Fehler 2: Vermutlich liefert der Aufruf von

              PHP-Code:
              preg_match("#aktueller Tag.*?</td>.*?([^>]+)</font>#s",$src,$matches) && print $matches[1];                            //A28= Niederschlag aktueller Tag
              setLogicLinkAusgang($id,28,$matches[1]); 
              kein Array in $matches zurück. Daher liefert dann die Nutzung von $matches[1] einen Fehler.

              Kommentar


                #67
                Zitat von jonofe Beitrag anzeigen
                Fehler 1: du hast keine Funktion debug() definiert rufst diese aber in Zeile 225 auf.
                Fehler 2: Vermutlich liefert der Aufruf von

                PHP-Code:
                preg_match("#aktueller Tag.*?</td>.*?([^>]+)</font>#s",$src,$matches) && print $matches[1]; //A28= Niederschlag aktueller Tag
                setLogicLinkAusgang($id,28,$matches[1]); 
                kein Array in $matches zurück. Daher liefert dann die Nutzung von $matches[1] einen Fehler.
                Moin André,
                DANKE DIR!!!
                Fehler 1:
                Ahh gut, dann nehme ich die Zeile raus: //$DEBUG && debug($id,"Baustein startet");

                Fehler 2:
                Kommt der Fehler immer dann, wenn die Webseite nichts liefert? Weil ich auch ansich die anderen
                Ausgänge so auch ausgewertet habe. Also ein "sporadischer" Fehler? (den der Fehler kommt nicht immer).

                DANKE DIR!!!!!

                Kommentar


                  #68
                  ich würde einfach auch das setLogicLinkAusgang mit dem && verbinden. Dann wird der Ausgang auch nur gesetzt, wenn prge_match ein Ergebnis liefert. Das print brauchst du nicht, denn wo sollte edomi das ausgeben? Wenn

                  Also so: (am besten dann bei allen Abfragen so machen)

                  PHP-Code:
                  preg_match("#aktueller Tag.*?</td>.*?([^>]+)</font>#s",$src,$matches) && setLogicLinkAusgang($id,28,$matches[1]); 
                  Falls du natürlich am Ausgang signalisieren willst, dass etwas schief gelaufen ist, müsste das so aussehen:

                  PHP-Code:
                  if (preg_match("#aktueller Tag.*?</td>.*?([^>]+)</font>#s",$src,$matches)) setLogicLinkAusgang($id,28,$matches[1]);
                  else 
                  setLogicLinkAusgang($id,28,'FEHLER'); 

                  Kommentar


                    #69
                    Zitat von jonofe Beitrag anzeigen
                    ich würde einfach auch das setLogicLinkAusgang mit dem && verbinden. Dann wird der Ausgang auch nur gesetzt, wenn prge_match ein Ergebnis liefert. Das print brauchst du nicht, denn wo sollte edomi das ausgeben? Wenn

                    Also so: (am besten dann bei allen Abfragen so machen)

                    PHP-Code:
                    preg_match("#aktueller Tag.*?</td>.*?([^>]+)</font>#s",$src,$matches) && setLogicLinkAusgang($id,28,$matches[1]); 
                    Falls du natürlich am Ausgang signalisieren willst, dass etwas schief gelaufen ist, müsste das so aussehen:

                    PHP-Code:
                    if (preg_match("#aktueller Tag.*?</td>.*?([^>]+)</font>#s",$src,$matches)) setLogicLinkAusgang($id,28,$matches[1]);
                    else 
                    setLogicLinkAusgang($id,28,'FEHLER'); 
                    Ach André!!
                    Wenn ich Dich nicht hätte!! DANKE DIR für die Erklärung!!!!
                    Hmmmm... bei den Wetterdaten denke ist es nicht soooo wichtig,
                    eine Fehlerauswertung zu bekommen (sieht man ja eh gleich, dass da kein Wert
                    in der Visu steht!!).
                    Ich werde den LBS so umbau wie in Deinem Beispiel 1!!!
                    ...spiele heute Abend mal rum......

                    Kommentar


                      #70
                      Ich muss den alten Thraed nochmal hochholen, irgendwie hab' ich's noch nicht gerallt...
                      Ich möchte aus dieser html-Seite die Warmwasser-Temperatur, also im Beispiel 52,31 rausholen:
                      Code:
                      <!DOCTYPE HTML>
                      <html>
                      <head><meta http-equiv=refresh content=15></head><body bgcolor=33363B><center><h1><font face=Ubuntu color=FFFFFF>Aussen-Temperatur:
                      7.50
                       &deg;C
                      <br>
                      Warmwasser-Temperatur:
                      52.31
                      &deg;C</font></h1></center></body></html>
                      Das versuche ich mit:
                      PHP-Code:
                      <?php
                      $src
                      =file_get_contents("http://192.168.11.225/index.html");
                      if (
                      preg_match("/Warmwasser.*?([0-9\.,]+)/s",$src,$matches)) {
                        print 
                      $matches;
                      }
                      ?>
                      Die Ausgabe des Scriptes ist aber:
                      Code:
                      Array
                      Ich sehe den Fehler nicht...

                      Edit:
                      Kaum habe ich die Post abgeschickt sehe ich's...
                      Code:
                      print $matches[MARKIEREN][1][/MARKIEREN];
                      Zuletzt geändert von NorbertB; 28.12.2018, 20:57. Grund: Fehler gefunden.

                      Kommentar


                        #71
                        Versuch doch mal ein    print matches[1]  
                        Zuletzt geändert von vento66; 28.12.2018, 21:00.

                        Kommentar


                          #72
                          Hm..., jetzt müsste ich es nurnoch hinbekommen, das Ganze in einen LBS zu verpacken.
                          Ich versuche es so:
                          Code:
                          ###[DEF]###
                          [name        = Temperatur aus Webseite]
                          
                          [e#1        = Trigger]
                          [e#2        = URL]
                          
                          [a#1        =Temperatur]
                          
                          ###[/DEF]###
                          
                          
                          ###[HELP]###
                          
                          ###[/HELP]###
                          
                          
                          ###[LBS]###
                          <?
                          function LB_LBSID($id) {
                              callLogicFunctionExec(LBSID,$id);
                          }
                          ?>
                          ###[/LBS]###
                          
                          
                          ###[EXEC]###
                          <?
                          require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
                          
                          sql_connect();
                          
                              $_buffer = "";
                          
                          if ($E=getLogicEingangDataAll($id)) {
                          
                              function HomepageLaden($url, $postdata)
                                  {
                                  $agent = "Chrome v1.0 :)";
                                  $header[] = "Accept: text/vnd.wap.wml,*.*";
                                  $ch = curl_init($url);
                          
                                  if ($ch)
                                      {
                                      curl_setopt($ch,    CURLOPT_RETURNTRANSFER, 1);
                                      curl_setopt($ch,    CURLOPT_USERAGENT, $agent);
                                      curl_setopt($ch,    CURLOPT_HTTPHEADER, $header);
                                      curl_setopt($ch,    CURLOPT_FOLLOWLOCATION, 1);
                          
                                      if (isset($postdata))
                                          {
                                          curl_setopt($ch,    CURLOPT_POST, 1);
                                          curl_setopt($ch,    CURLOPT_POSTFIELDS, $postdata);
                                          }
                          
                                      $tmp = curl_exec ($ch);
                                      curl_close ($ch);
                                      }
                          
                                  if (preg_match("/Aussen-Temperatur:.*?([0-9\.,]+)/s",$tmp,$string))
                                      {
                                      preg_match($regexp, $tmp, $string);
                                      setLogicLinkAusgang($id,1,$string[1]);
                                      }
                              }
                          }
                          sql_disconnect();
                          ?>
                          ###[/EXEC]###

                          Leider bleibt die Ausgabe leer:

                          Screenshot.PNG

                          Kommentar


                            #73
                            Ich sehe da mehere Probleme:

                            1. Du definierst eine function, die aber nie aufgerufen wird.
                            2. Die Variable $regexp kommt aus dem Nichts und wird in einem preg_match verwendet. Sie müsste vorher mal irgendwo initialisiert werden.
                            3. $postdata wird nicht verwendet, da ein HTTP-GET gemacht wird.

                            Vorschlag:

                            1. Die function() entfernen.
                            2. Wofür wird das zweite preg_match() gemacht? Aus meiner Sicht müsste das Ergebnis schon aus dem ersten preg_match kommen, oder? => Zweites preg_match() entfernen.
                            3. Postdata Bereich löschen

                            PHP-Code:
                            ###[DEF]###
                            [name        = Temperatur aus Webseite]

                            [e#1        = Trigger]
                            [e#2        = URL]

                            [a#1        =Temperatur]

                            ###[/DEF]###


                            ###[HELP]###

                            ###[/HELP]###


                            ###[LBS]###
                            <?
                            function LB_LBSID($id) {
                                callLogicFunctionExec(LBSID,$id);
                            }
                            ?>
                            ###[/LBS]###


                            ###[EXEC]###
                            <?
                            require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");

                            sql_connect();

                            if ($E=logic_getInputs($id)) {
                               $agent = "Chrome v1.0 :)";
                               $header[] = "Accept: text/vnd.wap.wml,*.*";

                               $ch = curl_init($url);

                               if ($ch)
                               {
                                  curl_setopt($ch,    CURLOPT_RETURNTRANSFER, 1);
                                  curl_setopt($ch,    CURLOPT_USERAGENT, $agent);
                                  curl_setopt($ch,    CURLOPT_HTTPHEADER, $header);
                                  curl_setopt($ch,    CURLOPT_FOLLOWLOCATION, 1);
                                  $tmp = curl_exec ($ch);
                                  curl_close ($ch);
                                  if (preg_match("/Aussen-Temperatur:.*?([0-9\.,]+)/s",$tmp,$string))
                                        logic_setOutput($id,1,$string[1]);
                                  else
                                     logic_setOutput($id,1,'not found');
                               }
                               else 
                                  logic_setOutput($id,1,'curl error');
                            }

                            sql_disconnect();

                            ?>
                            ###[/EXEC]###

                            Kommentar


                              #74
                              Vielen Dank für die Hinweise, ich habe die Sachen zusammenkopiert und versucht anzupassen.
                              Der LBS von Dir tut's aber leider auch noch nicht, ich bekomme "not found" als output, obwohl die Syntax des preg_match stimmen sollte.
                              Dieses Script gibt den gewünschten Wert zurück:
                              Code:
                              <?php
                              $src=file_get_contents("http://192.168.11.225/index.html");
                              if (preg_match("/Aussen-Temperatur:.*?([0-9\.,]+)/s",$src,$matches)) {
                                print $matches[1];
                              }
                              ?>
                              Ausserdem bekomme ich einen Eintrag im error.log: Undefined variable: url

                              Kommentar


                                #75
                                Weil du in der Variable   $url  noch die URL angeben musst   $url = 'http://192.168.11.225/index.html'  

                                Kommentar

                                Lädt...
                                X