Forum: Mikrocontroller und Digitale Elektronik Wie können Web-Sites mit dem ETH_M32_EX aufrufen?


von krepperm (Gast)


Lesenswert?

Vielleicht kann mir hier jemand helfen.

Ich verwende den AVR Web-Server ETH_M32_EX von Ulrich Radig und möchte 
gerne Web-Sites von anderen Servern damit aufrufen.
Ich habe dazu das Beispiel für die Wetterdaten verwendet nur leider ohne 
Erfolg.

Vielleicht hat jemand von euch die selbe Ideee gehabt und es auch schon 
verwirklicht. Mir wäre damit sehr geholfen.

Als Stack verwende ich die neueste Version 1.2.5


Danke

Markus

von Markus K. (krepperm)


Lesenswert?

Dummer Fehler:

Die Überschrift sollte lauten:

Wie können Web-Sites mit dem ETH_M32_EX aufgerufen werden?

von Ben _. (burning_silicon)


Lesenswert?

ich glaube nicht, daß der der zur verfügung stehende RAM-speicher dieses 
webservers dafür ausreicht, eine normale HTTP seite aus dem WWW 
aufzunehmen. gerade mal geschaut, rechte maustaste auf die seite auf der 
ich gerade tippe sind schon 32kbyte. wird also recht schwer weil du 
einen teil der seite schon wieder wegschmeißen mußt bevor sie 
vollständig geladen ist.

gehen sollte es aber, du mußt dem ziel-server nur die anfrage schicken 
und dann bekommst du auch das was du haben willst zurück. mit PHP könnte 
ich es, aber AVR-C ist noch nicht so mein ding obwohl ich auch gerne mal 
mit so einem AVR-webserver rumspielen möchte. gibts die sources dafür 
auch in assembler?

von Weingut P. (weinbauer)


Lesenswert?

du musst die erzeugten websites nur parsen per php ... schau mal da z.B.

http://www.it-academy.cc/article/722/PHP:+Fremde+Webseiten+parsen+auslesen.html

und per dyn-dns und portforwarding halt deine avr-anwendung von außen 
zugänglich machen ... keine großé Sache

edit: gerade gesehen, du wills das parsen mit dem avr machen ... boa ey 
... übel.
geht wol eher per telnet evtl.

von Markus K. (krepperm)


Lesenswert?

Mir schon klar, daß ich die Seite nicht im AVR speichern kann, da ist 
der Speicher auf jedem Fall zu klein.
Es gibt aber auch Seiten die einem Wetterinformationen und oder so manch 
Anderes senden, das auch einem Display angezeigt werden kann. Anderes 
Bsp. wäre du überträgst Daten auf einen PHP-Server und diese werden in 
eine Datenbank geschrieben. Aus diesem Grund die Frage.

Zu deiner Frage: Die Software gibt es für dieses Board nur in C.

von Ben _. (burning_silicon)


Lesenswert?

lol

AVR webserver mit PHP... HER DAMIT!! will ich auch

von Markus K. (krepperm)


Lesenswert?

wenn ich die Seite richtig aufrufen kann, dann kannst den Source haben. 
Das Board kannst unter www.ulrich.radig.de kaufen.

von Ben _. (burning_silicon)


Lesenswert?

naja den sourcecode zu dem board kriegt man ja problemlos auch von 
dieser seite, aber in C fällt mir halt die weiterentwicklung schwer. :-/

cool wäre für mich so ein system wo ein controller den webserver macht 
und daten von einem anderen controller ins netz stellen kann bzw. 
daten/anfragen aus dem netz an diesen zweiten controller weiterleiten 
kann. optimal sowas wie ein I2C web-interface...

von Sascha W. (sascha-w)


Lesenswert?

@Markus

Hallo,

die Wetterroutine in Uli's Stack ist noch eher im Teststadium. Hab das 
Problem aber vor kurzem schom mal erläutert und meine Variante die ich 
in ASM am laufen habe so einigermassen nach C umgesetzt.

http://embdev.net/topic/186248#new

der Stack ist dort jetzt so angepasst, das es läuft - was du mit den 
Daten machst ist dann deine Sache.

In meinem eigenen Server speichere ich die Daten erst mal auf SD-Karte.

Sascha

von Markus K. (krepperm)


Lesenswert?

Danke Sascha für deine Antwort.

Ich werde es dieses Wochenende ausprobieren und lasse es dir wissen wie 
es gelaufen ist.


lg Markus

von poppeyeo (Gast)


Lesenswert?

Webserver kommunizieren über HTTP und das basiert wiederum auf dem 
TCP/IP Protokoll



Im Grunde musst du nur eine TCP verbindung zu deinem Wetterserver 
aufbauen (port 80) und eine Zeichenfolge schicken:

GET /wetter/vorhersage.html\r\n\n\n
^ so oder ähnlich

Die meisten server sollten dann antworten(sie schicken also TCP pakete 
zurück) mit sowas:


HTTP/1.0 200 OK
Date : Sat, 15 Jan 2000 14:37:12 GMT
Server : Microsoft-IIS/2.0
Content-Type : text/HTML
Content-Length : 1245
Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT

Anschliessend käme dann im Klartext der Inhalt der Seite:
<html>
<title> mikrocontroller.net </title>
...
Das Wetter für Berlin..
adsfasdfadsf
asdfasdf
blabla
...
</html>



Der Trick ist der: kümmer dich nicht um den ersten Teil der Nachricht, 
sondern durchsuche einfach alle DatenPaktete, die dir der Server 
zurückschickt, nach der Information, die du suchst.
Oftmals stehen ja spezielle html-Befehle vor wichtigen Punkten
zB

<font size=10>Das WEtter wird morgen sonnig</font>

In c müsste es doch die funktion "strcmp" geben, um eine Zeichenkette in 
einer anderen zu finden.... damit könntest du jetzt die eingehenden 
Pakete nach <font size=10> durchsuchen und damit würdest du 
höchstwahrscheinlich die position von deinem gesuchten string "Das 
Wetter wird morgen sonnig......" geliefert bekommen.


Wenn du glück hast, gehts ganz einfach. Ein Problem sehe ich aber jetzt 
schon: Da die Nachrichten vom Server in Pakete von der Länge 1500byte 
oder so ähnlich unterteilt sind, kanns sein, dass die Erkennungsmarke, 
nach der du suchst, in der Mitte zerschnitten ist, strcmp findet sie 
dann ja nicht mehr... aber das muss garnicht passieren....

von Ben _. (burning_silicon)


Lesenswert?

lol

sich drauf verlassen daß das nicht passiert. <slap>
schon mal was von murphys law gehört? was schief gehen kann geht mit 
sicherheit schief!
oder wenn es mehrere möglichkeiten gibt eine sache zu erledigen und eine 
davon in einer gigantischen katastrophe endet wird es irgendwer genau so 
machen!

also mußt du in der gestückelten übertragung nach irgendwelchen 
endmarken suchen wie z.b. den zeilenende-markierungen (\n), aber die 
werden auch nicht immer in vollem umfang genutzt. du kannst auch 
probieren offene tags (<blah... ohne >) an den anfang des nächsten 
stückchens mitzunehmen.

habe nun auch so einen mini-webserver, cooles teil! werde aber mal einen 
eigenen thread dazu aufmachen damit ich den hier nicht zumülle.

von Marcus B. (raketenfred)


Lesenswert?

Als Tipp: der Atmegfa32 schafft es ziemlich sicher nicht, da sollte 
schon der 644 her der wenigstens für die wetter seite genug speicher 
bereit hat

von poopy (Gast)


Lesenswert?

Markus Krepper schrieb:
> Ich werde es dieses Wochenende ausprobieren und lasse es dir wissen wie
> es gelaufen ist.

warten wir mal ab, was er dazu zu sagen hat

von Ben _. (burning_silicon)


Lesenswert?

auf dem board was ich habe ist ein 644 drauf, er kann den atmega32 also 
ganz einfach ersetzen wenn er nicht reicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.