HTTPD (Deutsch)

From Ethersex_Wiki
Jump to: navigation, search
HTTPD
Status
Stable
menuconfig Applications->HTTP Server->HTTPD
Pinning  ?
Ecmd  ?
Control6  ?
Depends on  ?
Requires  ?
Code  ?


Webserver auf dem ethersex

Der Webserver der in ethersex eingebaut ist kann von verschiedenen Orten die Daten lesen, die er ausliefern soll:

  • Aus einem externen Dataflash
  • Dateien die im Flash des Controllers nach der Firmware abgelegt sind
  • ECMD Befehle absetzen und die Resultate erhalten ( fuer Ajax )

Jede dieser Quellen fuer Daten kann unabhaenig von den anderen eingeschaltet werden. Die einfachste Variante ist wohl zu Beginn die Dateien im internen Flash zu halten und dynamische Inhalte ueber das Http ECMD Interface abzurufen.

Konfiguration

General Setup  --->
[*] VFS (Virtual File System) support  --->
| |     [ ] Atmel SPI Dataflash           |  
| |     [*] VFS File Inlining             |  
| |     [ ] SD/MMC-Card Access            |  
| |     [ ] EEPROM (24cxx) Raw Access     |  
| |     [-] DC3840 Camera                 |  
...
Applications  --->
| |     [*] HTTP Server                   |  
| |     [ ]   Basic Authentication        |  
...
Applications ---> 
Etherrape Control Interface (ECMD) --->
| | [*] ECMD support                |

Dateien einbinden

Falls die Option Supply Inline Files aktiviert ist, werden alle Dateien, die unter vfs/embed/ abgelegt sind, automatisch beim Erstellen des Images mit gzip gepackt und an das Ende der Firmware angehängt. Die Dateinamen bleiben dabei unverändert, jedoch muss beachtet werden, dass die maximale Länge der Dateinamen 6 Zeichen beträgt.

Dateien mit dem C Preprocessor oder m4 vorverarbeiten

Um Dateien abhängig von den Konfigurationsoptionen einzubinden (oder nicht) bzw. nur Teile mit einzubauen, wenn eine gewisse Option aktiviert ist, kann man diese durch cpp oder m4 vorverarbeiten lassen, bevor die Ausgabe gepackt und an die Firmware angefügt wird. Dazu muss die Datei auf .cpp bzw auf .m4 enden. Bei cpp sind alle defines aus der config.h/autoconf.h erreichbar (z. B. ~np~ONEWIRE_SUPPORT~/np~). Bei m4 wird aus ~np~ONEWIRE_SUPPORT conf_ONEWIRE ~/np~.

Content Type der Dateien

Da der Webserver den Content-Type nicht dynamisch erkennen kann, muss man ihm diese Informationen etwas vorkauen. Der Content-Type wird am ersten Buchstaben des Dateinamens festgemacht:

  • S (z.B Sty.c): text/css
  • X (z.B Xow.ht): application/xhtml+xml;
  • Ansonsten wird alles mit text/html ausgeliefert

Dateien von SD-Card Aufrufen

Damit Datein von einer SD-Card ausgeliefert werden, kopiert man diese einfach auf die SD-Card.

Sie können dann im Browser über folgende URL aufgerufen werden.(die IP, der Dateiname müssen natürlich geändert werden)
http://192.168.23.244/Dateiname
Wen die Datei in einem Ordner auf der SD-Card liegt ist kann sie über folgende URL aufgerufen werden.
http://192.168.23.244/Ordnername/Dateiname

Die Länge des Dateinamens ist bei der SD-Card nicht auf 6 Zeichen begrenzt.

ECMD-Befehle per Hand auslösen (über http)

Um die IP per ecmd abzufragen, kann man die folgende URL (die IP muss natürlich geändert werden) im Browser eingeben und man bekommt die Ausgabe per http zurück.

http://192.168.23.244/ecmd?ip

Möchte man Befehle verwenden, welche ein Leerzeichen beinhalten, wie z.B. "1w list", dann muss das Leerzeichen durch ein "+" bzw. "%20" ersetzt werden. Folgender Befehl listet angeschlossene 1-wire Sensoren auf, falls vorhanden.

http://192.168.23.244/ecmd?1w+list

oder

http://192.168.23.244/ecmd?1w%20list

Startseite von Ethersex

Ist der Webserver einkompiliert sollte beim Aufruf von http://YOUR_ETHERSEX_IP/ im Browser so eine Seite erscheinen:

Ethersex-screen-startseite.png

Dataflash

TODO