Webseite mit Wago 841 auslesen?

Hallo,

hat schonmal jemand mit einer 841er direkt eine externe Webseite per HTTP abgeholt und verarbeitet?
…und zufällig Beispielcode zur Hand?

Gruss
Chris

Hi,
etwas in dieser Richtung will ich auch noch realisieren. Schau Dir mal die Wago-2Pass-Umgebung an. Da sollte alles drin stecken was Du brauchst.

Grüße
Cali

Hi Cali,

„Wago-2Pass-Umgebung“ ?
Kannst Du da etwas genauer sein? selbst google hilft mir da nicht weiter

Danke
Chris

Hallo,

mit Wago To-Pass kann man beispielsweise ein PHP-Skript aufrufen (HTTP-Post-Request) welches dann Daten in eine MySQL-Datenbank einträgt. Als Antwort bekommt man vom Skript ein HTTP-Post-Response welcher dann vom Controller wieder ausgewertet werden kann.

Jedoch glaube ich nicht, dass diese Bibliothek zum Parsen/Auslesen von beliebigen Webseiten verwendet werden kann.
Hier mal die Beschreibung zur LibToPass Bibliothek: WagoLibToPass_01.lib

Viele Grüße
Roland

Ah Ok ToPass. Kleiner aber feiner Unterschied :wink:

Hab mir mal die Lib angeschaut. So richtig flexible sieht mir das nicht aus.
Einzig der Request kann halbwegs parametrisiert werden. Bei der response siehts mau aus…

Mal weiter forschen.

Gruss
Chris

Hallo,

der Response ist eigentlich nicht das Problem. Das Ergebnis wird unter „sStatus“ geliefert. Das Problem bei dieser Bibliothek ist, dass die aufgerufene Seite (Skript) den Request unterstützen und die gesamte Antwort in einen String (max 255 Zeichen) passen muss.
Theoretisch könntest Du damit einen Request mit der zu parsenden URL an ein PHP-Skript schicken, dann mit PHP die Seite auswerten und das berechnete Ergebnis als Response wieder zurück zum Controller senden.

Vielleicht gibt es ja irgendwo noch eine andere Bibliothek die das direkt unterstützt. Bisher hab ich aber noch nichts in der Richtung gefunden - hatte aber auch noch keinen Bedarf dafür… :wink:

Viele Grüße
Roland

Na ja, wie gesagt den Aufruf sehe ich da nicht als Problem, da ich ja mehr oder minder eine beliebige URl angeben kann.

Aber welche Webseite hat nur 255 Zeichen? Und ein „zwischen-PHP“ bringts auch nicht da ich ja dann noch ein drittes „Teil“ brauche und nicht direkt den embedded webserver meiner Messtation auslesen kann (übrigens ein IPWE1)

Ich spiel grad mit der SysLibEthernet. Das sollte eigentlich gehen. HTTP ist (zumindest die für diesen Zweck abgespeckten Bedarf) nicht so kompliziert. Und die TCP Verbindung kann die lib.

schaut mal hier:
CoDeSys :: Thema anzeigen - WAGO 750-841 Website auslesen

Grüße
Cali

Den Thread hab ich auch schon gesehen. Leider kein Sample-Code oder Lösung beschrieben :frowning:

Hallo Cali,

dort wird auch nur geschrieben, dass es klappt wenn die Datei vorher per FTP auf dem Controller gespeichert wird. (Was aber im Fall von cat nichts bringt und Dateizugriffe auf dem Controller auch naja…„unschön“ sind.)
Die eigentliche Anfrage mit dem HTTP Request blieb leider ungelöst.

Viele Grüße
Roland

Hallo Kollegen,

ich befinde mich auf einer Schulung und kann leider nicht ausführlich schreiben. Schade das meine Posts nicht weiterhelfen. Evt ist die Wago dafür einfach nicht geeignet. Was willst Du denn genau auslesen? Bei mir geht es um Wetterprognosen. Ich kann mir vorstellen das über einen Webservice zu realisieren, ähnlich dem TO-PASS Beispiel. Dann verarbeite ich den Response und bekomme bei 256 Zeichen keine Probleme.
Welchen Vorschlag habt Ihr? Evt kann man die Seite fortwährend in einen Ringbuffer einlesen, bis man auf einen Suchbegriff stößt.

Grüße
Cali

Nachdem ichs jetzt endlich hinbekommen habe, hier die Info, falls noch jemand es braucht:

Es gibt eine Beta-Lib von Wago die HTTP macht. Zu finden hier: CoDeSys :: Thema anzeigen - Daten in MySQL-Datenbank einfügen

Damit gehts dann recht einfach - eigentlich.
Aber leider nicht direkt mit dem IPWE, den der hat die Eigenschaft die TCP Packets derart zu fragmentieren (teilweise nur 4 bytes pro datagram!), dass die Wago damit nicht klarkommt. Über den Umweg über einen Apache klappts dann, aber ist halt nicht so wie ich mir das ursprünglich gedacht habe. Aber gut.

Hi Cat,

wenn ich den Thread nun richtig verstanden habe war mein Tip ToPass dann doch die Lösung? Oder wie hast Du es nun realisiert?

Grüße
Cali

Hi Cali,

nein kein ToPass. ToPass ist recht limitiert im Vergleich zu der anderen Lib die ich verwende. dort kannst Du beliebige URL Requests (Ich glaube nur GET;kein POST; aber das reicht ja meist) absetzen und kannst v.a. umfangreiche Rückgaben auswerten (also ganze Webseiten parsen).

Ist aslo irgendwo in der Mitte zwischen ToPass und „rohem“ TCP_CLIENT

Gruss
Chris

Das hört sich doch nicht schlecht an. Stell doch mal Deine Lösung vor. Was machst Du denn?

Also eigentlich war die Idee folgende:
Mit dem IPWE Wetterdatenempfänger lassen sich recht preisgünstig (5 Euro pro Sensor + 60 (?) für den Empfänger) Temperatur- und Feuchtedaten innen und aussen erfassen (bis zu 8 Stück). Der IPWE stellt diese Daten per verkrüppeltem Telnet (gab hier auch schon mal nen Thread dazu) oder per HTTP als Webseite zur Verfügung.
Nun war also die Idee naheliegend die Wago diese Daten anzapfen zu lassen, um damit die steuerung zu optimieren (Heizung, Entfeuchtung, Lüftung).

Und genau das hab ich gebaut. Allerding -wie erwähnt - mit noch einem Relay dazwischen weils direkt so gar nicht wollte. Leider.

Ok, das ist eine interessante Möglichkeit. Überhaupt die Möglichkeit beliebige WebInterfaces auszulesen. Aber was ist der Grund das Du über einen Apache gehst? By the way, ich lese 1-Wire Sensoren mit der Wago aus. Evt wäre das was für Dich.

Dass mit Deinen 1-wire Sensoren ist mir bekannt. Wir haben da ja schon mal diskutiert drüber bzgl. der seriellen Schnittstelle der Wago. Aber die Funklösung schien mir irgendwie schneller zu realisieren. Auch was die Platzierung der Aussensensoren etc betrifft.

Der Grund den Apache zwischenzuschalten ist die Eigenart des IPWE Webservers sehr fragmentierte TCP Pakete auf die reise zu schicken. Zumindest vermute ich das. Ausserdem fehlen einige Details im HTTP Header - was ggf. zu verschmerzen wäre aber die Sache nicht einfacher macht.

Da ich den ersten Punkt nicht lösen konnte hab ich einen bereits laufenden Apache dafür hergenomen quasi als Proxy zu arbeiten. D.h. die Wago ruft ein Skript auf dem Apache auf, dass seinerseits die Webseite des IPWE aufruft und die Ergebnisse zurückreicht. Damit ist dann der „low level“ so sauber (die Pakete normal-gross) dass die HTTP Lib das verarbeitet bekommt.