Sven Rautenberg: Temperaturverlauf/Pushchart mit eingeschränktem embedded Server

Beitrag lesen

Moin!

ich habe einen embedded Webserver mit dem ich einen gemessenen Temperaturverlauf grafisch darstellen will.

Der Webserver kann nun leider nicht wie ein "richtiger" Server große Dateien in einzelne Pakete splitten und mit der sequencenr. abschicken, sondern nur ein einziges Paket mit der TCP-typischen Daten-Nutzlast von ~1,5Kb je request des Clients.

Das ist schlecht. Selbst wenn man serverseitig nur absolutes Minimal-HTTP spricht, gehen doch mindestens mal so 100 Byte für einen anständigen HTTP-Header drauf und lassen somit nur noch knapp 1400 Byte für Nutzdaten. Ich glaube kaum, dass man mit so wenig Nutzdaten eine vollständig eigenständige Weboberfläche zaubern kann.

Der Grund hierfür sind die begrenzten Ressourcen des Mikrocontrollers, der Stack soll möglichst wenig Platz einnehmen.

Wenn man den Äußerungen von fd0 (http://www.lochraster.org/) Glauben schenkt, dann ist so ein Problem zwar da, aber nicht unlösbar. Er behauptet nämlich, dass man mit Microcontrollern tatsächlich TCP/IP und HTTP machen kann. Seine Taktik für sein Etherrape: Der Webserver reicht große statische Seitenstrukturen nur durch, die in einem Flash-ROM gespeichert sind (die sind logischerweise u.U. größer, als ein Ethernet-Frame), und alles dynamische (wie z.B. Meßwerte) wird per Ajax ausgeliefert und vom Client verarbeitet/animiert/dargestellt.

Meine Frage lautet nun, mit welcher Programmiertechnik ich diese Beschränkung  aushebeln kann und möglichst ansehnliche Verläufe erstelle.

Die einzige mir bekannte Möglichkeit sind Frames. Wird eine Seite aufgerufen, sendet der Client jeweils eine Anfrage für jeden fehlenden Frame, die der Controller auswerten kann und daraufhin weitere Daten nachschiebt.

Das kleinere Problem dürfte wohl sein, dein Embedded-Device dazu zu überreden, größere Ressourcen auszuliefern. Das größere Problem ist, clientseitig die ganze Arbeit mit Javascript zu leisten, zu der das Device nur statische Inhalte sowie per Ajax dynamisch Meßwerte hinzufügt.

Die schlauere, aber natürlich deutlich abhängigere Methode ist, das Device von einem zweiten, leistungsfähigeren Server aus abzufragen, und dort dann die ganze Arbeit zu erledigen.

Denn das Generieren von netten Grafiken mittels Javascript ist auch nicht so simpel - vor allem, wenn dein persönlicher Wissensstand bei Frames stehengeblieben ist. :)

- Sven Rautenberg

--
"Love your nation - respect the others."