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

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

    Einen Kommentar schreiben:


  • gaert
    antwortet
    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...

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Du setzt setLogicElementStatus nicht mehr auf 0, daher geht er vermutlich nur beim allerersten Start in den Teil wo das EXEC gestartet wird.

    Mach mal am Ende des EXEC ein

    PHP-Code:
      setLogicElementStatus($id,0); 

    Einen Kommentar schreiben:


  • tunneltruppe
    antwortet
    Hallo Christian,
    danke für den Tipp.
    Auf wieviel Minuten soll man am besten das stellen?
    Wetter ist ja nicht sooo wichtig? 5- 10 min?
    Noch mal eine Frage zu den LBS. Bzw. den Text im z.B. Ausgang.
    LBS_242_3.jpg
    Der wird ja bei mir?!?! immer abgeschnitten. Habe ich etwas überlesen wie lang der nur sein darf??

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Zu Problem 2: Unter Umständen mag der Ziel-Server deine Abfragen im 6-Sekunden-Takt nicht? Viele Dienste dieser Art merken sich die IP-Adresse und lassen nur ein bestimmtes Abfrage-Intervall zu.

    Einen Kommentar schreiben:


  • tunneltruppe
    antwortet
    Erstmal DANKE ins Forum und DANKE Michael für die gute Unterstützung!!
    Denn, mein erster ###[EXEC]### Baustein läuft, wenn auch mit
    einigen geklauten Eintragungen und nicht sooo richtig!!

    Nun habe ich noch zu zwei Problemen ein paar Fragen:

    Problem 1:
    Ich denke das Problem hat Michael schon angesprochen:
    Ich zitiere:
    (das ist genau genommen unsauber programmiert, liegt aber daran, dass die
    Webseite ein falsch kodiertes °-Symbol zurückliefert)

    Die Ergebnisse werden, z:b. E2=21,6?C, mit dem ? für das “ ° “ angezeigt?!?!?!?.
    Nun die Fragen dazu:
    1) Kann man das ° Zeichen im String, bei einer unsauberen Webseite überhaupt
    reinbekommen?
    2) Wenn man die Einheit bei einer unsauberen Webseite nicht bekommt, kann man
    dann im LBS eine Einheit „dazu Dichten“?

    Problem 2:
    Ich frage den Baustein zwar zyklisch ab, aber die Werte weichen von der Webseite ab.
    Nur wenn ich das Projekt neu Einspiele werden aktualisiert.
    Was habe ich da wohl falsch gemacht??
    LBS_242_1.jpg
    Also DANKE ERSTMAL bis hierhin!!
    Gruß Marcus
    LBS_242_2.jpg

    Einen Kommentar schreiben:


  • benji
    antwortet
    läuft so. Danke

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    <besserwissermodus>
    Zitat von panzaeron Beitrag anzeigen
    PHP-Code:
    if (preg_match("/>AUSSENTEMPERATUR<.*?>([0-9\.,]+)\s+.C</s",$src,$matches)) { 
    </besserwissermodus>
    Hinter dem \s sollte ein "quantfier" stehen der angibt wie oft der/die/das Zeichen vorkommen mag.... "+" steht hier "fuer ein oder oefter". Wegen der Eindeutigkeit und so...

    Einen Kommentar schreiben:


  • panzaeron
    antwortet
    Starwarsfan war schneller und hat recht, dein + bezieht sich auf die Zeichengruppe vorher und das Leerzeichen fehlt. Vorschlag von mir allerdings ebenfalls ohne Test (und ohne Einheit):

    PHP-Code:
    if (preg_match("/>AUSSENTEMPERATUR<.*?>([0-9\.,]+)\s.C</s",$src,$matches)) { 
    Zuletzt geändert von panzaeron; 29.05.2016, 09:15.

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Hi

    Ohne es ausprobiert zu haben: In der RegEx fehlt " °", Du erwartest das "C" als zweites Zeichen nach einer Ziffer, es ist aber das dritte.

    Einen Kommentar schreiben:


  • benji
    antwortet
    Hi, ich wollte mich jetzt auch mal mit Regexp beschäftigen und ein paar Sachen umstellen.

    ich wollte folgenden Code parsen:

    PHP-Code:
        <div class="span-11 append-1" style="float:left"><table class="info"><tr><th colspan="2" class="round-top">RAUMTEMPERATUR</th></tr>  <tr class="even">
        <
    td class="key">SOLLTEMPERATUR HK 1</td>
        <
    td class="value">19,0 °C</td>
      </
    tr>
    </
    table></div><div class="span-11 prepend-1" style="float:right"><table class="info"><tr><th colspan="2" class="round-top">HEIZUNG</th></tr>  <tr class="even">
        <
    td class="key">AUSSENTEMPERATUR</td>
        <
    td class="value">14,7 °C</td>
      </
    tr
    dazu habe ich folgendes mal als test gemacht:

    PHP-Code:
    <?php
    $src
    =file_get_contents("http://192.168.84.155/?s=1,0");
    if (
    preg_match("/AUSSENTEMPERATUR.*?([0-9\.,]+.C)/s",$src,$matches)) {
      print 
    $matches[1];
    }

    ?>

    Ausgabe bleibt allerdings leer, sieht jemand wo mein Fehler liegt???

    Gruß


    Einen Kommentar schreiben:


  • hhhc
    antwortet
    Ich habe neulich auch eine Logic (allerdings in Python für Smarthome.py) entwickelt. Ich habe mir dazu den relevanten Quelltext aus der Website kopiert und mittels der Seite https://regex101.com erstmal die Regexp erstellt. Der Rest ist dann meistens ein Kinderspiel.

    Einen Kommentar schreiben:


  • panzaeron
    antwortet
    In meinem VLC LBS parse ich auch eine XML-Antwort, das ist in PHP mit SimpleXMLElement::xpath recht einfach.
    Und um den gewünschten XPath-Ausdruck zu bekommen, verwende ich in Chrome das XPath Helper Plugin und wie die XPath-Syntax aufgebaut ist, ist hier ganz gut beschrieben.

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Zitat von NexusCore Beitrag anzeigen
    In meinem Fall ist es keine generische Webseite, ich bekomme über ne API folgende xml Struktur zurück
    Also wenn da eh XML zurueckgeworfen wird, dann wuerde ich unbedingt das XML in ein Array umwandeln und direkt auswerten anstatt drin rumzusuchen. Das ist einfacherer und sichererererer, besonders gegen Aenderungen in der API.

    Einen Kommentar schreiben:

Lädt...
X