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.
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.
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.
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 ?
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.
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 :))
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.
..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.
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.
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.
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