Arduino Forum

International => Deutsch => Topic started by: COOL on Oct 21, 2012, 01:51 pm

Title: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 21, 2012, 01:51 pm
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:
<tr><td>Sensor 6</td><td>Nebengebaeude</td><td align="right">13,8</td><td align="left">&deg;C</td><td>13,6 / 13,8</td></tr>
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
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: behbeh on Oct 21, 2012, 04:22 pm
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
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: udoklein on Oct 21, 2012, 04:29 pm
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.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 21, 2012, 04:46 pm
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
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 21, 2012, 05:27 pm
Hallo Bernd,
vielleicht kannst du das für dich "umschreiben"

Gruß Gerd
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: uwefed on Oct 21, 2012, 06:55 pm
Hallo Gerd

Das was Du uns zitiert hast ist eine Zeile einer Tabelle.
<tr>
   <td>Sensor 6</td>
   <td>Nebengebaeude</td>
   <td align="right">13,8</td>
   <td align="left">&deg;C</td>
   <td>13,6 / 13,8</td>
</tr>

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
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 21, 2012, 07:10 pm
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
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: BerndJM on Oct 21, 2012, 07:22 pm
Hi,
Quote
Wie kann ich den Usernamen und das Kennwort übermittel ?

Gegenfrage:
Wie nimmt der Webserver die Zugangsdaten entgegen?

Grüßle Bernd
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: marcusw on Oct 21, 2012, 07:26 pm
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?
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 21, 2012, 07:47 pm
Hallo Marcus,
die "User:Passwort@domain"- Variante habe ich mir auch schon abgeschminkt. Aber bei einem einfachen Test, z.B.
Quote
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
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: -Holger- on Oct 21, 2012, 08:00 pm
Hi,

Wenn du nicht ewig die Theorie lesen möchtest (AFAIK http://www.faqs.org/rfcs/rfc2617.html#b), dann würde ich einfach mal mit Wireshark schauen, wie dein Browser die Seite abruft.
Das kannste dann ja nachbauen.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 21, 2012, 08:03 pm
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
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: marcusw on Oct 21, 2012, 08:05 pm
Wie Holger bereits sagte, lass wireshark mitlaufen und schau, wie es dein Browser macht...
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 21, 2012, 08:08 pm
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
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: marcusw on Oct 21, 2012, 08:10 pm
http://php.net/manual/de/features.http-auth.php
http://forums.phpfreaks.com/topic/56536-htaccess-auth-headers/

da steht, was du als header senden musst.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 21, 2012, 08:18 pm
..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
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: marcusw on Oct 21, 2012, 08:19 pm
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.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: marcusw on Oct 21, 2012, 08:35 pm
Problem gelöst:

http://www.functions-online.com/base64_encode.html

Einfach Benutzername:Passwort bei $data eintragen und den rückgabestring abschreiben.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 21, 2012, 09:02 pm
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
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: marcusw on Oct 21, 2012, 09:07 pm
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 <hier die base64-summe aus nutzername:Passwort>" mitgibts
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: mkl0815 on Oct 22, 2012, 09:06 am
Wer ein "unixoides" Betriebssystem hat (Linux, MacOS etc.) kann auch einfach auf der Kommandozeile folgendes eigeben:
Quote

echo "username:geheim" | md5sum

Das liefert dann den gewünschten MD5-Hash.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: da2001 on Oct 22, 2012, 02:07 pm
Wenn Du irgendwo Webspace mit PHP zur Verfügung hast, würde ich damit die Daten verarbeiten.
Einfacher Aufruf per cURL und dann nur die Temperatur für das Arduino ausgeben. Wäre für mich als Arduino Anfänger der einfachste Weg :)
Helfe Dir gerne bei der Umsetzung in PHP
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 22, 2012, 02:21 pm
Hallo zusammen,
hat mich ein paar Stunden gekostet, um den ganzen hilfreichen Hinweisen nachzugehen. Teilweise habe ich es nicht verstanden und habe überwiegend Schiffbruch erlitten. Letzt und endlich habe ich es doch ein wenig anders gemacht und habe ERFOLGE gehabt, die leider nicht ständig von Dauer sind.
Was ganz sicher ist, dass man den USER-Namen und das PASSWORT durch einen " : " trennen muss und dies dann einer Base64-Wandlung unterziehen muss !
Es gibt in der Bibliothek eine Base64-Aplikation, jedoch weiss ich diese nicht anzuwenden und habe  "USER-Namen:PASSWORT" hier gewandelt:
http://patshaping.de/projekte/kleinkram/base64.php (http://patshaping.de/projekte/kleinkram/base64.php)

Nun zum Script:
Quote
/*
modifizierter WebClient aus Arduino 1.0.1

*/

#include <SPI.h>
#include <Ethernet.h>
//#include <Base64.h>
#define LOGIN ("YWRtaW46YmxhYmxhYmxh.") //Base64 kodiert USERNAME:PASSWORT unter http://patshaping.de/projekte/kleinkram/base64.php
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(99,99,99,99); // Webserver-IP eintragen

//(Port 80 ist für HTTP):
EthernetClient client;

void setup() {
  Serial.begin(9600);
   while (!Serial) {
    ; // warte bis serieller Port verbunden ist
  }

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    for(;;)
      ;
  }
  delay(1000);
  Serial.println("verbinde, bitte warten...");
  if (client.connect(server, 80)) {
    Serial.println("verbunden");
//client.print("Authorization: Basic ");
client.print(LOGIN);
   //client.println("GET /search?q=Sensor 6 HTTP/1.0");
    client.println();
  }
  else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }
  if (!client.connected()) {
    Serial.println();
    Serial.println("Verbindung getrennt");
    client.stop();
    for(;;)
      ;
  }
}


Das Ergebnis ist verblüffend und zugleich eigenartig. Ohne Änderungen am Script erhalte ich folgende Antworten :
Die beste -
Quote
verbinde, bitte warten...
verbunden
Document follows
Server: AVR_WEB_Switch
Content-Type: text/html

ext/html


<html><head><meta http-equiv="refresh" content="30" text/html; charset=iso-8859-1">
<title>AVR NET IO</title>
<style type="text/css">
.fett {font-weight: bold; margin-top:15px;}
td { cellpadding: 2px; }
body { font-family: arial;  font-size: 1.0 em; color: #000000; background-color: rgb(255, 255, 204)}
h1 {text-align: center; font-weight: bold; color: white; font-size: 1.2 em}
</style>
</head><body><center>
<table style="width: 600px; text-align: left; background-color: rgb(153, 153, 255);" cellpadding="5">
<tr><td><h1>HOME 1 WEBSERVER</h1>
<table style="width: 100%; font-weight: bold;">
<tr><td>Serverzeit: 12:32</td><td style="text-align: right;">Pagecounter: 231</td></tr></table>
</td></tr></table>
<div class="fett">Status PORTA:</div>
<table style="width: 600px; text-align: left; background-color: rgb(255, 255, 153);" border="0">
<tr><td>dig. Eingang</td><td style="width:35px;">auf/zu</td><td align="center">analog. Eingang</td><td>Wert (0-1023)</td></tr>
<tr><td>A0_Fenster_1</td><td style="background-color: rgb(153, 0, 0);"></td><td align="center">AD-A4</td><td>1018</td></tr>
<tr><td>A1_Fenster_2</td><td style="background-color: rgb(153, 0, 0);"></td><td align="center">AD-A5</td><td>1017</td></tr>
<tr><td>A2_</td><td style="background-color: rgb(153, 0, 0);"></td><td align="center">AD-A6</td><td>1018    LDR</td></tr>
<tr><td>A3_</td><td style="background-color: rgb(153, 0, 0);"></td><td align="center">AD-A7</td><td>(8xDS1820)</td></tr>
</table>
<div class="fett">1-Wire-Temperatursensoren:</div>
<table style="width: 600px; text-align: left; background-color: rgb(255, 255, 102);" border="0">
<tr><td>1-Wire</td><td>Ort</td><td align="right">Wert</td><td align="left">Einheit</td><td>Min/Max(Tag)</td></tr>
<tr><td>Sensor 0</td><td>Esszimmer</td><td align="right">15,9</td><td align="left">&deg;C</td><td>15,6 / 16,0</td></tr>
<tr><td>Sensor 1</td><td>Keller</td><td align="right">16,3</td><td align="left">&deg;C</td><td>16,3 / 16,4</td></tr>
<tr><td>Sensor 2</td><td>Kuehlkörper</td><td align="right">33,7</td><td align="left">&deg;C</td><td>33,6 / 33,8</td></tr>
<tr><td>Sensor 3</td><td>Pumpe RL</td><td align="right">15,0</td><td align="left">&deg;C</td><td>14,9 / 15,1</td></tr>
<tr><td>Sensor 4</td><td>Pumpe VL</td><td align="right">15,1</td><td align="left">&deg;C</td><td>15,0 / 15,1</td></tr>
<tr><td>Sensor 5</td><td>Brauchwasser</td><td align="right">15,5</td><td align="left">&deg;C</td><td>15,5 / 15,6</td></tr>
<tr><td>Sensor 6</td><td>Nebengebaeude</td><td align="right">14,1</td><td align="left">&deg;C</td><td>13,9 / 14,1</td></tr>   //Diese Zeile interessiert mich !
<tr><td>Sensor 7</td><td>Solar-Speicher</td><td align="right">45,9</td><td align="left">&deg;C</td><td>11,0 / 48,9</td></tr>
</table>
<div class="fett">Schaltanweisungen:</div>
<table style="width: 600px; text-align: left; background-color: rgb(255, 204, 51);" border="0">
<tr><td><form name="form1" method="post" action=" ">
<table style="width: 100%; text-align: left;" border="0">
<tr><td><input type="checkbox" name="OUT" value="X" > Automatik<hr></td><td>0<hr></td><td>(ein/aus) <hr></td></tr>
<tr><td><input type="checkbox" name="OUT" value="A"> C0_Relais_1</td><td>  Heizung</td><td>ein/aus</td></tr>
<tr><td><input type="checkbox" name="OUT" value="B"> C1_Relais_2</td><td>  Anpassung Fühler-Heizung</td><td>ein/aus</td></tr>
<tr><td><input type="checkbox" name="OUT" value="C"> C2_Relais_3</td><td></td><td></td></tr>
<tr><td><input type="checkbox" name="OUT" value="D"> C3_Relais_4</td><td></td><td></td></tr>
<tr><td><input type="checkbox" name="OUT" value="E"> C4_Relais_5</td><td><input type="checkbox" name="OUT" value="i">- / +<input type="checkbox" name="OUT" value="j"> ab 15 &deg;C Differenz ein</td><td>-> Sensor 3,4</td></tr>
<tr><td><input type="checkbox" name="OUT" value="F"> C5_Relais_6</td><td></td><td></td></tr>
<tr><td><input type="checkbox" name="OUT" value="G"> C6_Relais_7</td><td>  Lüfter</td><td>im Server</td></tr>
<tr><td><input type="checkbox" name="OUT" value="H"> C7_Relais_8</td><td>  Tor</td><td>auf/zu</td></tr>
</table>
<hr><p align="center"><input type="submit" name="SUB" value="Senden"></p></form>
</td></tr></table>
<br><div class="fett">Lokale Wetterinformationen: </div><a href=http://www.wetter24.de/nc/de/home/wetter/weltwetter/ortewetter.html?cityID=49X1610&type=98>-> www.wetter24.de</a>
<br><hr>
<div>PORTB -> ENC28J60<br>PORTD -> LCDisplay</div>
<br>
<div>WEBSERVER Home 1 </div>
</span></body></html>

Verbindung getrennt


Es kann aber auch so aussehen:
Quote
verbinde, bitte warten...
verbunden

Verbindung getrennt



WARUM......??
Wie dem auch sei.

Wie bekomme ich jetzt die Rückmeldung aus der markierten Zeile oben
<tr><td>Sensor 6</td><td>Nebengebaeude</td><td align="right">14,1</td><td align="left">&deg;C</td><td>13,9 / 14,1</td></tr>
Ich möchte gerne die 14,1° später auf meinem Display, bzw seriellem Monitor sehen.

Mit dem Browser sieht es so aus, siehe Bild.
Kann mir jemand mal bitte die Syntax geben, damit ich nur die 14,1° sehe und nicht das ganz Listing
Eventuell so " client.println("GET /search?q=Sensor 6 HTTP/1.0"); " und dann ?

Gruß Gerd

Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: mkl0815 on Oct 22, 2012, 02:32 pm
Schau Dir mal http://www.arduino.cc/playground/Code/TextFinder (http://www.arduino.cc/playground/Code/TextFinder) an. Damit kannst Du z.B. nach dem String Nebengebaeude</td><td align="right"> suchen und die danach folgende Float Zahl parsen lassen. Dann hast Du den Wert gleich.
Alternativ kannst Du auch die Ausgabe vom Webserver in einem input-Puffer einlesen und in dem nach dem String "Nebengebaeude" suchen. Wenn Du die Stelle gefunden hast, steht Deine Temperatur mit einem Offset von 35 an der gefundenen Stelle.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 22, 2012, 02:55 pm
Hallo mkl0815,
der Tip ist nicht schlecht. Wenn ich die Beispiele aufrufe kommen immer Fehlermeldungen, so z.B. beim Sketch "SerialReceive.pde" kommt die Meldung
"Textfinder" does not name a type" und "TextFinder finder( client);" wird hinterlegt

Gruß Gerd
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: mkl0815 on Oct 22, 2012, 03:08 pm
Evtl. muss die Lib noch auf die neue IDE umgestellt werden. Ist ne Weile her, das ich den Textfinder benutzt habe.
Schau Dir mal den "top-Post" von Uwe bezüglich IDE 1.0 an.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: udoklein on Oct 22, 2012, 07:20 pm
@gerd: die Antwort war schon für Dich bestimmt. Bei Deiner Sorte Probleme mußt Du ***zuerst*** die Debuginstrumentierung in den Griff kriegen, ansonsten kannst Du bis zum St. Nimmerleinstag suchen. Und wie gesagt, ich empfehle Fiddler, den halte ich für bequemer zu bedienen wie Wireshark. Wireshark nimmt man nur dann wenn sonst wirklich fast nichts mehr geht.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 22, 2012, 07:41 pm
Hallo Udo,
danke für den Hinweis. Leider gibt es Fiddler nicht für Mac-Systeme. Ich gehe mal davon aus, dass du den HTML-Bereich meinst. Ich glaube, dass dieses blöde Verhalten zurückzuführen ist auf das Ethernet-Board, was ja schon zuvor Probleme bereitete. Schätze aber, dass ich durch Neukauf eines neuen Arduino dies aus der Welt räumen kann.
Grössere Probleme habe ich mit dem Auslesen eines Wertes wie zuvor beschrieben.

Gruß Gerd
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: mkl0815 on Oct 22, 2012, 08:12 pm
Aber Wireshark gibt's für den Mac und "tcpdump" is eh drauf.
Ein beherztes "sudo su -" gefolgt von einem "tcpdump -i en0 -nn -v -A host WEBSERVERNAME" und einem Browseraufruf liefert schon jede Menge nützliche Infos.
Wireshark hat dafür die schöne Möglichkeit den TCP-Stram komplett aufzudröseln und die Request und Antwort des Server anzuschauen.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 22, 2012, 11:10 pm
...habe mir heute ein neuen MEGA2560 bestellt, weil ich unterschiedliche Fehlermeldungen habe, um zumindest ein fehlerhaftes Board auszuschliessen.
Ich werde mir mal die Tools reinziehen, glaube aber nicht, dass ich dadurch einkreisen kann, weil ich unterschiedliche sich wiederholende Ergebnisse habe, ohne etwas zu machen.
Erst einmal DANKE
Kann man auch zum Ziel kommen, wenn man diese Zeile "  client.println("GET /search?q=Sensor 6 HTTP/1.0");  " ergänzt ?

Gruß Gerd
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: udoklein on Oct 23, 2012, 05:32 pm
Wenn Fiddler wegen Mac nicht geht, dann eben den hier: https://www.owasp.org/index.php/Webscarab. Zur Not kann man auch auf dem Mac eine Windows VM laufen lassen und dort den Fiddler installieren.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: qualidat on Oct 23, 2012, 08:21 pm
Du könntest einen anderen Webserver (zu dem du uneingeschränkten Zugang hast) mit PHP dafür benutzen, mit wesentlich mehr Power und den erforderlichen Routinen für Benutzername und Passwort, die Werte auszulesen. Dann stellst du sie quasi minimalistisch und somit Arduino-gerecht zum Download bereit ...
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: udoklein on Oct 23, 2012, 08:26 pm
Dann könnte er auch gleich anstelle des Arduinos eine Maschine mit etwas mehr Leistungsfähigkeit nehmen und das Problem wäre gelöst. Ich bin ja schon immer der Meinung, daß der Arduino für http untermotorisiert ist. Klar kann man auch an einen Smart eine LKW Anhängerkupplung schrauben. Und man kann damit auch einen 20t Anhänger ziehen. Ob es sinnvoll ist...

Aber wir sind hier ja im Arduino Forum ;)
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: mkl0815 on Oct 23, 2012, 08:36 pm
Moment mal, der Arduino soll ja nicht als Webserver dienen, sondern nur eine TCP-Verbindung aufbauen und die wesentlichen 4 oder 5 Bytes aus dem TCP-Stream lesen. Dafür ist der Arduino sicher nicht untermotorisiert.
Zur Zeit gibt es ja nur noch zwei Probleme, die sicher lösbar sind.

1) Die HTTP-Abfrage stabil zu bekommen, was meiner Meinung nach eher nach einem Problem auf der Gegenseite aussieht, denn der TCP-Connect scheint laut Debugausgabe ja zu klappen.
2) Möglichst einfach / simple die gewünschte Temperatur aus dem HTML-Text zu fischen. Das ist nur geschicktes Durchforsten eines char* buffers und auf jeden Fall was für den Arduino.

Den Arduino als Webserver zu betreiben, da schliesse ich mich Udos Meinung an, das können andere Systeme besser. Der Due wäre ja schon deutlich besser geeignet, zumal der COrtex M3 schon eine Ethernetschnittstelle integriert hat, auch wenn die beim Due noch nicht nach aussen gelegt ist. Ich denke das wird sich bei weiteren Modellen sicher bald ändern.

Mario.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: udoklein on Oct 23, 2012, 08:41 pm
Das habe ich schon so gemeint. Weder als Client noch als Server brauchbar. Noch dazu wo es in der Preisklasse schon stärkere Teile gibt. Aber wenn Du darauf bestehst sowas per Arduino zu machen werde ich Dich sicher nicht aufhalten ;)
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 23, 2012, 11:26 pm
Der Arduino oder das Arduino-Board hat und soll für mich nur eine "kleine" Aufgabe erfüllen. Ich möchte gerne in einem entfernten Gebäude, was nicht immer bewohnt wird, gerne wissen, welche Temperatur  in einem Raum ist. Für das Gebäude habe ich mal einen AVR-Webserver gebaut, der gewisse Daten auf einer Website darstellt.
Das reicht auch vollkommen aus, nur muss ich dazu den PC anmachen, was ja eigentlich auch nicht das Problem ist, aber warum nicht die bequeme Lösung mit Blickt auf ein Display.
Interessant ist sicherlich diese Sache auch für andere Personen, die beispielsweise immer über einen Börsenwert informiert sein wollen, oder , oder, oder.
Bei mir kommt noch erschwerend dazu (ich habe meine Probleme mit der Ethernetcard in einem anderen Thread beschrieben, dass Boards in gewisser Kombination so ihr eigenes Verhalten aufzeigen, daher habe ich mir erst einmal noch einen Arduino bestellt.
Im Augenblick habe ich mit der richtigen Syntax (heisst tatsächlich DIE Syntax) so meine Probleme, weil ich nirgendwo eine genaue Erklärung finde,
so teste ich mit "  client.println("GET /search?q=Keller+Ort&output=xml&client=test&site=operations HTTP/1.0");  " (ist das richtig "test&site" ?oder
"   client.println("GET /search?q=Sensor 6 HTTP/1.0"); " mit anderen Worten - ich weiss es nicht, wie es heissen muss.

Gruß Gerd

Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: mkl0815 on Oct 24, 2012, 04:33 am
Die Syntax für die Abfrage hat aber noch nichts mit dem Arduino zu tun. Die kannst Du auch im Browser testen. Wichtig ist, das Du z.B. keine Leerzeichen verwendest und die Zeichen entsprechend kodierst.
Siehe auch http://de.wikipedia.org/wiki/URL-Encoding (http://de.wikipedia.org/wiki/URL-Encoding)
Statt
Code: [Select]

client.println("GET /search?q=Sensor 6 HTTP/1.0");

also
Code: [Select]
client.println("GET /search?q=Sensor%206 HTTP/1.0");
Woher stammt denn der Code auf dem AVR-Webserver? Kann der denn tatsächlich solche Queries ausführen?
Wie gesagt, probiere das mit einem normalen Browser aus, bis Du eine URL hast, die Du direkt aufrufen kannst und die Dir die gewünschten Daten ausgibt. Sobald Du die hast, kannst Du die in den Arduino-Code in das "GET" einbauen.
Dann kommt der nächste Schritt, den einzelnen Wert aus dem HTML-Code zu lesen.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 24, 2012, 12:15 pm
Hallo Mario,
das hört sich alles so gut und zugleich kompliziert an. Die Hinweise sind sehr nützlich - schön wäre natürlich ein Beispiel mit einer beliebigen Seite, wo jeder ohne Passwort drauf zugreifen könnte und man einfach mal ein Beispiel kreiert, dann kann ich das auf meine Verhältnisse umschreiben.
Es laufen ja noch nicht einmal die Beispiele vom Finder, so wie zum Beispiel dieses Script (ich habe es auf den neuen Stand von 1.0.1 gebracht)
Quote

#
/*
  Web client

This sketch connects to a website (http://www.google.com)
using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13

created 18 Dec 2009
by David A. Mellis

*/

#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(173,194,35,159); // Google

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

TextFinder finder( client);

long hits; // the number of google hits

void setup() {
  // start the serial library:
  Serial.begin(9600);
  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  }
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
    hits = 0; // reset hit count
    if(finder.find("Results <b>")){   
      if(finder.find("of")){     
         hits = finder.getValue(',');
         Serial.print(hits);
         Serial.println(" hits");         
      }
    }
    if(hits == 0){
      Serial.println("No Google hits ");
    }
  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    for(;;)
      ;
  }
}
#


Hast Du denn nicht mal ein einfaches Beispiel, was man auch ausprobieren kann, um eine Zahl oder einen Text aus einer willkürlich gewählten Website, auszugeben ?
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: mkl0815 on Oct 24, 2012, 01:02 pm
Zwei Bitten.

1) Poste den Code bitte nicht als "Insert Quote", sondern mit dem "#" Tag links daneben. Dann wird der code auch vernünftig ausgegeben.
2) Der Sketch den Du gepostet hast, der scheint nicht zu machen was Du willst. Aber was macht er denn? Welche Ausgaben gibt es?

Mario.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 24, 2012, 02:13 pm
Hallo Mario,
habe mich schon gewundert, welche Raute-Zeichen du meinst, habe somit sie ins Script gebracht - habe jetzt aber verstanden.
Also jetzt noch einmal - es ist die Demodatei "SimpleClientWithFinder" nur auf 1.01 angepasst.

Code: [Select]
/*
  Web client

This sketch connects to a website (http://www.google.com)
using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13

created 18 Dec 2009
by David A. Mellis

*/

#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(173,194,35,159); // Google

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

TextFinder finder( client);

long hits; // the number of google hits

void setup() {
  // start the serial library:
  Serial.begin(9600);
  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  }
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
    hits = 0; // reset hit count
    if(finder.find("Results <b>")){   
      if(finder.find("of")){     
         hits = finder.getValue(',');
         Serial.print(hits);
         Serial.println(" hits");         
      }
    }
    if(hits == 0){
      Serial.println("No Google hits ");
    }
  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    for(;;)
      ;
  }
}


Das sollte auch bei dir funktionieren - Google wird nach Arduino abgefragt nur es kommen keine Ergebnisse

Auch seltsam verhält sich bei einem anderen Script diese Funktion

client.print(LOGIN);
client.println("GET /search?q=Keller HTTP/1.0");    //hier soll doch nach "Keller" gesucht werden
    client.println();
...
...
...
  if (client.available()) {   // wenn das zutrifft, wird das gespeichert
    char c = client.read();  // hier abgefragt
    Serial.print(c); //und hier alles ausgegeben
  }

...leider wird hier der GANZE HTML-Code der Seite ausgegeben

Gruß Gerd




Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: mkl0815 on Oct 24, 2012, 02:34 pm
Quote

client.print(LOGIN);
client.println("GET /search?q=Keller HTTP/1.0");    //hier soll doch nach "Keller" gesucht werden
    client.println();
...
...
...
  if (client.available()) {   // wenn das zutrifft, wird das gespeichert
    char c = client.read();  // hier abgefragt
    Serial.print(c); //und hier alles ausgegeben
  }

...leider wird hier der GANZE HTML-Code der Seite ausgegeben


Also,
das "/search?q=Keller" ist KEIN allgemeingültiges Verfahren. Das funktioniert bei Google, weil der Google-Webserver den URI Pfad "search" kennt und den Parameter "q" (aus dem q=...) auswerten kann.

Das hat aber nichts mit dem AVR-Webserver zu tun. Es hängt immer vom Webserver ab, der eine Seite ausliefert, auf welche Seiten und Parameter er reagiert.  Gibt es vom AVR-Webserver eine Doku was der genau beherrscht?

Das ist aber genau das was ich meine. Test die Aufrufe für den AVR-Server in einem Browser. Wenn Du etwas gefunden hast, das für Dich IM BROWSER funktioniert, dann kannst Du anfangen das auf den Arduino zu übernehmen.

Das die "Google-Hits" nicht funktionieren, liegt vermutlich daran, das google die Ausgabe in der HTML-Seite geändert hat. Der TextFinder sucht ja explizit nach dem String "Results <b>", nur wenn er das findet, sucht er nach den Nummer der Ergebnisse.
Wenn ich mit Google nach "arudino" suche, ist die Ausgabe aber "About 23,400,000 results" (englisch) oder "Ungefähr 23.400.000 Ergebnisse" (deutsch). Das ist wohl der Grund warum es nicht klappt.

Mario.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 24, 2012, 02:36 pm
Hallo Mario,
hab ich vergessen. Der Webserver ist die Hardware von Pollin AVR NET IO . Ich habe da einen 644 reingebröselt. Das Ding ist in C programmiert.
z.Z. sind 8 DS1820 & Co angeschlossen, weiter frei sind noch 3 Analog-Eingänge, weil einer für die DS1820 drauf ging, desweiteren habe ich 8 digitale Ein/Ausgänge verwendet
und z.Z. 4 Digitaleingänge noch frei.
Ich hatte auch schon mal eine Webcam seriell angebunden, aber eben nur eine, die klaut aber zu viele Ports.
Für das Board gibt es genügend Softwarevarianten, sogar auch mit Arduino-Betriebsystem.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: mkl0815 on Oct 24, 2012, 02:54 pm
Danke für die Info, aber die Hardware ist relativ wurscht :-)
Zumindest für Dein akutelles Problem. Wichtig ist die Software die auf dem NET-IO läuft und auf was genau der Webserver reagieren kann.
Ich vermute aber das ein "GET /search?q=IRGENDWAS" nicht funktionieren wird.
Hast Du evtl. die Sourcen für den Webserver auf dem NET-IO?
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: udoklein on Oct 25, 2012, 12:35 am
Quote

Interessant ist sicherlich diese Sache auch für andere Personen, die beispielsweise immer über einen Börsenwert informiert sein wollen, oder , oder, oder.


Du meinst für Leute die kein Smartphone haben UND in der Lage sind sowas zu programmieren UND für sowas einen Arduino nehmen würden?

Warum baust Du den Server nicht so um, daß er statt einer HTML Seite auf einer anderen URL direkt die Daten in einem passenden Format zurückliefert? So wie ich das verstehe hast Du ja volle Kontrolle über den Server, oder? Das würde das ganze Gefummel mit dem HTML parsen sofort unnötig machen.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 25, 2012, 10:33 am
Hallo Mario, hallo Udo,

@Mario,
ich werde mal meine Unterlagen durchforsten, ob ich den aktuellen Sourcecode auf dem Mac habe, weil er auf einem Windows-Rechner erstellt wurde, der sich in der "externen" Immobilie befindet.
@Udo.
du darfst es nicht wörtlich nehmen, was ich geschrieben habe, das war nur ein schnell herbeigezogenes Beispiel. Anwendungsmöglichkeiten gibt es wie Sand am Meer, wo man kein Smartphone für anschaltet und was also ständig dargestellt wird. Es ist und soll ein Hobby sein, damit man nicht im Alter im Kopf einrostet. Ich habe z.B. einen ATmega 128 damit beschäftigt, 16 Tempfühler mir auf einem grossen Display ständig anzuzeigen.
Du hast Recht, das Gefummel geht mir auf den Geist. Selbstverständlich kann ich das ändern, jedoch muss ich dann Vorort sein und den Prommer anstecken, um den Code zu ändern. Da ich, wenn ich überhaupt mal in der Immobilie bin, dann nur kurze Zeit und ich müsste einen Weg von 400km in Kauf nehmen. Da jetzt aber der Winter kommt, benötige ich einige Daten vom Haus, die ich stetig im Auge haben möchte, ohne PC oder Smartphone.

Gruß Gerd

Gruß Gerd
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 27, 2012, 08:55 pm
Kann mir jemand noch einmal unter die Arme greifen.
Ich habe es ein wenig anders gemacht und kann jetzt eine HTML-Seite ganz auslesen, könnte sie auch gegrenzen. Die Buchstaben und Zahlen kommen jetzt seriell hintereinander auf den Monitor. Wie kriege ich es hin, dass ich jetzt an einer beliebigen Stelle (muss natürlich ggf. mit Suchstring) die Werte in einer Reihe hintereinander angezeigt bekomme, besser wäre es, wenn man sagen würde, dass die nächsten 6 Zeichen nach "Sensor 1) dargestellt werden sollen.

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>
#include "LCD4884.h"
int inByte;

#define LOGIN ("YWRtaW46dGdjKEE67w==.") //Base64 kodiert USERNAME:PASSWORT
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(98,33,2,73); // Webserver
EthernetClient client;
TextFinder finder( client);
void setup() {
  Serial.begin(9600);
    lcd.LCD_init();       
    lcd.LCD_clear();
   while (!Serial) {
    ; // warte bis serieller Port verbunden ist
  }

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Ethernet-Fehler using DHCP");
    for(;;)
      ;
  }
  delay(1000);
  Serial.println("verbinde, bitte warten...");
  lcd.LCD_write_string(0, 0, "bitte warten", MENU_NORMAL);
  if (client.connect(server, 80)) {
    Serial.println("verbunden");
    lcd.LCD_write_string(3, 1, "verbunden", MENU_NORMAL);
client.print(LOGIN);
client.println("GET  HTTP/1.0");
    client.println();
  }
  else {
    Serial.println("Verbindung fehlerhaft");
  }
}

void loop()
{
  if (client.available()) {
    inByte = client.read();
    Serial.println(char (inByte));  //[color=blue]hier rauschen jetzt alle Zeichen der Seite bis zum Ende vorbei[/color]
lcd.LCD_write_string(0, 3, "Suchwert", MENU_HIGHLIGHT);
  if (!client.connected()) {
    Serial.println(100);
    Serial.println("Trennung.");
    lcd.LCD_write_string(0, 5, "Trennung!", MENU_NORMAL);
    client.stop();
    for(;;)
      ;
  }
}
}


Gruß Gerd
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 30, 2012, 07:44 pm
Hallo, wie ich vermute, fällt euch auch nichts weiter ein, um mir einen praktikablen Weg aufzuzeigen. Was man alles machen könnte, wurde mir ja nun gesagt, doch was hilft es, wenn ich es nicht verstehe, obwohl es eigentlich sehr einfach sein müsste, wenn man nur 3-4 Zeichen aus einem TCP-String braucht.
Wir ihr ja mitbekommen habt, habe ich mit dem letzten Script die komplette Seite auslesen können. Jetzt möchte ich nur noch diesen (rot gekennzeichneten) Bereich auf einem Display darstellen.

Ausschnitt aus der Wiedergabe nach dem Listing
<tr><td>Sensor 4</td><td>Pumpe VL</td><td align="right">12,5</td><td align="left">&deg;C</td><td>12,4 / 12,6</td></tr>
<tr><td>Sensor 5</td><td>Brauchwasser</td><td align="right">12,9</td><td align="left">&deg;C</td><td>12,8 / 13,0</td></tr>
<tr><td>Sensor 6</td><td>Nebengebaeude</td><td align="right">8,9</td><td align="left">&deg;C</td><td>8,8 / 9,2</td></tr>

Dieser Wert ändert sich immer. Wie kann ich ihn im Rhythmus von ca. 1min auf dem Display darstellen.

Kann niemand helfen ??

Gruß und Dank
Gerd
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: mkl0815 on Oct 31, 2012, 05:59 pm
Hallo Gerd,

immer langsam, das wird schon. Mich wundert momentan, aber, das Du plötzlich Sensor 5 (Brauchwasser) haben willst, ich dachte bisher gibg es um das Nebengebäude, Sensor 6? Nicht das es einen großen Unterschied macht.
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Oct 31, 2012, 06:46 pm
Hallo Mario,
du hast recht, habe mich vertippt. Ist aber im Grunde egal, ob vom Sensor 6 oder 5 der Wert gesucht werden soll, es kommt aufs Gleiche raus. Ich habe schon so viel gelesen und ausprobiert, jedoch ohne Erfolg. Ich finde auch keinen Vergleich im Netz, wo ich mir das ggf. umsetzen kann. Das beste wäre schon, wenn jemand mir die fehlenden Zeilen einfach mal ins Script reinsetzt, das ist dann konstruktiv und ich könnte es mir nach meinen Bedürfnissen abändern. Die lieben Hinweis, was und wie ich es machen könnte helfen mir im Augenblick nicht viel weiter, weil ich es z.Z nicht raffe - wie der Spruch mit dem Wald und den Bäumen.

Gruß Gerd
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: uwefed on Oct 31, 2012, 11:25 pm
Der Vorschlag von Udo eine eigene Seite nur fürs Datenübertragen zu erstellen, wo die Werte unformatiert ohne Beiwerk übertragen werden und so einfacher zu übernehmen sind hast Du nicht in Betracht gezogen oder habe ich da Deine Antwort übersehen?
Grüße Uwe 
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ? geschafft !
Post by: COOL on Nov 01, 2012, 02:17 pm
Hallo Uwe,
den Vorschlag von Udo habe ich nicht angenommen, weil man es nicht braucht und es einfacher geht.
Ich kann nur sagen, die "Schweizer" haben es drauf. Im internationalen Forum hat @pylon mit 4 Zeilen das ganze Problem geklärt. DANKE @pylon.

Code: [Select]
finder.find("Pumpe VL");
finder.find("right\">);
value = finder.getValue();
finder.find(",");
afterpoint = finder.getValue();


Ich möchte es euch nicht vorenthalten, wie einfach es letzt endlich ist. Mit ein paar kleinen Abänderungen werden die Werte vor und nach dem Komma dann angezeigt.
Weitere Kosmetik bekomme ich hoffentlich alleine hin.

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>
int inByte;
int value;
int Zahl1;
int Zahl2;
#define LOGIN ("YWRdkW4c2FkVjaG56SSzw==.") //Base64 kodiert USERNAME:PASSWORT
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(95,33,3,26); // Webserver
EthernetClient client;
TextFinder finder( client);
void setup() {
  Serial.begin(9600);
   while (!Serial) {
    ; // warte bis serieller Port verbunden ist
  }

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Ethernet-Fehler using DHCP");
    for(;;)
      ;
  }
  delay(1000);
  Serial.println("verbinde, bitte warten...");
  if (client.connect(server, 80)) {
    Serial.println("verbunden");
client.print(LOGIN);
client.println("GET  HTTP/1.0");
    client.println();
    finder.find("Nebengebaeude");//kann beliebige Reihe sein
finder.find("right\">");
value = finder.getValue();
finder.find("<");// ist Zahl vor Komma
Zahl1 = finder.getValue();
finder.find(",");// ist Zahl hinter Komma
Zahl2 = finder.getValue();

Serial.print("die Temperatur = ");
Serial.print(Zahl1);
Serial.print(",");
Serial.print(Zahl2);
Serial.println(" Grad");
  }
  else {
    Serial.println("Verbindung fehlerhaft");
  }
}

void loop()
{
  }


Allen herzlichen Dank für die Unterstützung.

Gruß Gerd
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: uwefed on Nov 01, 2012, 06:41 pm
Trisonic schreibt hier:
http://arduino.cc/forum/index.php/topic,126166.msg949772.html#msg949772
er hätte sich mit dem/n Autor/ren der TextFinder gesprochen und diese hätten ihm gesagt, daß eine verbesserte Version der Bibiothek im Core des Arduino IDE ab 1.0 eingeflossen ist. Er bemängelt aber gleichzeitig, daß die Funktionen der Stream Bibiothek schlecht bis gar nicht dokumentiert sind.

Grüße Uwe
Title: Re: Wie bestimmten Wert von einer Webseite auslesen und darstellen ?
Post by: COOL on Nov 01, 2012, 09:46 pm
Danke Uwe,
werde mal mir das durchlesen und meine Versuche machen.
Zur Zeit läuft alles nach mehreren Stunden problemlos. Ich habe das Script schon weitgehend erweitert und bin jetzt dabei eine Variante zu finden, um ohne IP auf den Server zu kommen, weil bei diesem Server alle 24 Std die IP geändert wird. Ebenso soll eine Menüführung mehrere Temp-Fühler auswählen lassen.

Gruß
Gerd