Wie bestimmten Wert von einer Webseite auslesen und darstellen ?

Um nicht jedes mal den PC anschalten zu müssen, um einen Temperaturwert eines entfernten Webservers auszulesen, möchte ich einen bestimmten Wert auf einer Website auslesen. Ich selbst habe Zugang zum Server. Die betreffende Zeile im Source-HTML-Text lautet:
Sensor 6Nebengebaeude13,8°C13,6 / 13,8
Hier möchte ich gerne den Wert 13,8°, der sich stetig ändert auf dem LCD des Arduino darstellen.
Anbieten würde sich ja das Beispiel "WebClient", nur da geht es schon los. Wie übermittle ich den Benutzernamen und das Passwort und wie komme ich zu den "13,8°" ?
Hat jemand eine Idee oder schon ein ähnliches Projekt gestemmt ? Interessant wäre es auch, wenn man z.B. einen Börsenwert verfolgen möchte.
Jedoch für mich ist im Augenblick die Temperatur wichtiger.

Gruß Gerd

Hallo,
sowas ähnliches suche ich auch, um RSS-Feeds einzulesen und die Texte möchte ich auf eine große Led-Laufschrift anzeigen.
z.B von Elektor gibt es eine RSS Seite mir den neusten Meldungen...
Bernd

Schritt 1: http lernen und die entsprechenden Tools. Schau Dir die Webseite mal durch sowas wie Fiddler2 an. D.h. Fiddler2 starten und die Daten per Broswer abholen. Dann siehst Du schon wie das geht.

Hallo Udo,
diese Antwort bezieht sich doch auf die Frage von Bernd, löst jedoch nicht mein Problem. Hast du da auch noch was im Petto ?

Gruß Gerd

Hallo Bernd,
vielleicht kannst du das für dich "umschreiben"

Gruß Gerd

Hallo Gerd

Das was Du uns zitiert hast ist eine Zeile einer Tabelle.

Sensor 6 Nebengebaeude 13,8 °C 13,6 / 13,8

Am einfachsten Du suchst nach dem String "Sensor 6" und liest dann die Zeichen nach x Zeichen aus (offset 45 bis zum Position des ersten Zeichens der Temperatur) und dann alle Zeichen einlesen bis ein < kommt.

Grüße Uwe

Hallo Uwe,
das ist richtig, ich will einen Temperaturwert einer Tabelle aus einer HTML-Seite auslesen und habe hier nur die Zeile im Sourcecode dargestellt. Aber so weit komme ich garnicht, um hier ein wenig zu experimentieren. Als Ansatz wollte ich das Ethernetbeispiel (WebClient) nehmen, aber wie zuvor erwähnt hapert es an der Identifizierung, weil der Webserver Passwort geschützt ist.
In dem Beispiel wird eine IP verwendet. Ich könnte die Website auch als IP darstellen, jedoch könnte ich nicht wie hier im Beispiel "http://user:passwort@web-adresse.de" den User und das Passwort übermitteln. Wie kann ich den Usernamen und das Kennwort übermittel ?

Gruß Gerd

Hi,

Wie kann ich den Usernamen und das Kennwort übermittel ?

Gegenfrage:
Wie nimmt der Webserver die Zugangsdaten entgegen?

Grüßle Bernd

Wenn die Benutzerauthentifikation über htaccess abläuft, hast du schlechte chancen, da der Useragent die Art der Anmeldung (User:Passwort@domain) unterstützen muss - was der Arduino anscheinend nicht tut. Hier hilft dann nur noch eine eventuelle Headermanipulation. Wenn sie Datenbank- bzw. Programmgestützt ist, könnte man eventuell über eine bestehende API bzw. über einen GET-Request der die Formulardaten interpretiert arbeiten.

von welcher Seite möchtest du den etwas auslesen?

Hallo Marcus,
die "User:Passwort@domain"- Variante habe ich mir auch schon abgeschminkt. Aber bei einem einfachen Test, z.B.

if (client.connect(server, 80)) {
Serial.println("connected");
// Make a HTTP request:
client.println("GET /search?q=Sensor 6 HTTP/1.0");
client.println();
}

bekomme ich als Antwort:

connecting...
connected
HTTP/1.0 401 Unauthorized
Server: AVR_WEB_Switch
WWW-Authenticate: Basic realm="NeedPassword"
Content-Type: text/html

401 Unauthorized
disconnecting.

Eigentlich schon klar, weil die User- und Passwortabfrage nicht mit eingebunden war, aber wie mache ich das ??

Gruß
Gerd

Hi,

Wenn du nicht ewig die Theorie lesen möchtest (AFAIK RFC 2617 - HTTP Authentication: Basic and Digest Access Authenti (RFC2617)), dann würde ich einfach mal mit Wireshark schauen, wie dein Browser die Seite abruft.
Das kannste dann ja nachbauen.

Hallo Bernd,
habe dich ganz übersehen, sorry. Wie du etwas weiter unten siehst, komme ich schon auf den Webserver rauf, jedoch kann ich mich nicht identifizieren, weil ich nicht weiss, wie man User und Passwort übermittelt. Per Webbrowser natürlich nicht das Problem :))

Gruß Gerd

Wie Holger bereits sagte, lass wireshark mitlaufen und schau, wie es dein Browser macht...

Hallo Holger,
wie mein Browser die Webseite aufruft, weis ich. Es kann doch aber wirklich nicht schwierig sein, hier eine "Clientantwort" mit einzubinden, ohne sich mit Theorien zu beschäftigen. Ich bin leider zu blöd, um das alleine zu stemmen.

Gruß Gerd

http://php.net/manual/de/features.http-auth.php

da steht, was du als header senden musst.

..das hört sich gut an, muss ich mir erst einmal verinnerlichen. Beim groben Überfliegen des Links bin ich eher der Meinung, dass es die Serverseite betrifft, wie der zu reagieren hat, ich bin aber Client und war der Annahme, dass es vielleicht durch ein einfaches "client.print " zu lösen sei.
Werde erst mal lesen.

Gruß Gerd

http://www.webmaster-eye.de/fsockopen-mit-htaccess-Anmeldung.259.artikel.html

das müsste man auch auf den arduino ummünzen lassen

EDIT: das base64_encode stellt noch ein problem dar, das lässt sich allerdings mit einem PHP-Script oder ähnlichem lösen, dass einmal den String aus Name und Passwort generiert, den du dann hardcoded auf den Arduino übertragen kannst.

Problem gelöst:

Einfach Benutzername:Passwort bei $data eintragen und den rückgabestring abschreiben.

Hallo Marcus,
erst einmal Dank. Muss ich jetzt mal sehen, ob ich das gebacken kriege und wie ich das einbinde. Habe mich gerade mit dem PHP-Script beschäftigt und ne Menge Fehler geerntet.
Werde mal es am Morgen mit klarem Kopf nochmals in Angriff nehmen.

Gruß Gerd

Du musst natürlich statt den PHP-funktionen die Arduino-Äquivalente nehmen.
Also kein fsockopen, sondern client.connect, statt fputs client.println etc.

Es ging dir ja nur darum, wie du beim connect dem Server klarmachst, dass du ihm gerne ein Passwort mitteilen würdest. Das geht indem du ihm nach dem connect ein
"Authorization: Basic " mitgibts