Difference between revisions of "HTTPD"

From Ethersex_Wiki
Jump to: navigation, search
(transfered Page from old wiki)
 
m (Transfer image from old wiki)
 
(3 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Webserver auf dem ethersex ==
+
{{i18n|HTTPD}}
Der Webserver der in ethersex eingebaut ist kann von verschiedenen Orten die Daten lesen, die er ausliefern soll:
+
{{Module
 +
|NAME=HTTPD
 +
|MENUCONFIG={{Applications}}->HTTP Server->HTTPD
 +
|STATUS={{stable}}
 +
|PINNING=-
 +
|ECMD=-
 +
|CONTROL6=-
 +
|DEPENDS=?
 +
|REQUIRES=?
 +
|CODE=?
 +
}}
  
* 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.
+
==  Web server on the ethersex ==
 +
The built-in web server in [[Ethersex]] can read the files it should serve from various locations:
  
===  Konfiguration ===
+
* from an external dataflash
 +
* files stored in the flash memory of the MCU right after the firmware
 +
* run ECMD commands and serve the results (for AJAX)
  
 +
Any of these sources for data can be enabled independent of the others. The easiest option is to initially keep the files in the internal flash memory and to access dynamic content via the HTTP ECMD interface.
 +
 +
===  Configuration ===
 
<pre>
 
<pre>
 
General Setup  ---&gt;
 
General Setup  ---&gt;
Line 18: Line 31:
 
| |    [ ] EEPROM (24cxx) Raw Access    |   
 
| |    [ ] EEPROM (24cxx) Raw Access    |   
 
| |    [-] DC3840 Camera                |   
 
| |    [-] DC3840 Camera                |   
 
+
...
 
Applications  ---&gt;
 
Applications  ---&gt;
 
| |    [*] HTTP Server                  |   
 
| |    [*] HTTP Server                  |   
 
| |    [ ]  Basic Authentication        |   
 
| |    [ ]  Basic Authentication        |   
 
+
...
 
Applications ---&gt;  
 
Applications ---&gt;  
 
Etherrape Control Interface (ECMD) ---&gt;
 
Etherrape Control Interface (ECMD) ---&gt;
Line 28: Line 41:
 
</pre>
 
</pre>
  
=== Dateien einbinden ===
+
=== Embedding files ===
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.
+
If the option ''Supply Inline Files'' is enabled, all files stored in
 +
''vfs/embed/'' will be automatically packed with gzip and appended to the end
 +
of the firmware when building the image.
 +
Filenames remain unchanged, however the maximum length of filenames is 6
 +
characters.
  
=== Dateien mit dem C Preprocessor oder m4 vorverarbeiten ===
+
=== Preprocess files with the C preprocessor or m4 ===
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~.
+
To include files dependent on configuration options (or not) respectively
 +
including only parts, if a certain option is enabled, they can be preprocessed
 +
by cpp or m4, before the output is packed and appended to the firmware.
 +
For that, the file must end in .cpp or .m4. When using cpp, all defines from
 +
config.h/autoconf.h are accessible (e.g. ~np~ONEWIRE_SUPPORT~/np~).
 +
When using m4~np~ONEWIRE_SUPPORT turns into conf_ONEWIRE ~/np~.
  
=== Content Type der Dateien ===
+
=== Content type of the files ===
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:
+
Because the web server can not dynamically determine the content type, this
* S (z.B Sty.c): text/css
+
information needs to be supplied in advance.
* X (z.B Xow.ht): application/xhtml+xml;
+
The content type is determined by the first character of the file name:
* Ansonsten wird alles mit text/html ausgeliefert
+
* S (e.g. Sty.c): text/css
 +
* X (e.g. Xow.ht): application/xhtml+xml;
 +
* everything else is served as text/html
  
=== Dateien von SD-Card Aufrufen ===
+
=== Access files from the SD card ===
Damit Datein von einer SD-Card ausgeliefert werden, kopiert man diese einfach auf die SD-Card.
+
To serve files from an SD card, they are copied to the SD card.
Sie können dann im Browser über  folgende URL aufgerufen werden.(die IP, der Dateiname müssen natürlich geändert werden) <pre>http://192.168.23.244/Dateiname</pre>  
+
These can then be accessed by the browser via the following URL (IP and file
Wen die Datei in einem Ordner auf der SD-Card liegt ist kann sie über folgende URL aufgerufen werden.<pre>http://192.168.23.244/Ordnername/Dateiname</pre>
+
name must of course be changed) <pre>http://192.168.23.244/Filename</pre>
Die Länge des Dateinamens ist bei der SD-Card nicht auf 6 Zeichen begrenzt.
+
If the file is located in a folder on the SD card, it can be accessed via the
 +
following URL. <pre>http://192.168.23.244/Foldername/Filename</pre>
 +
The length of filenames is not limited to 6 characters with the SD card.
  
=== ECMD-Befehle per Hand auslösen (über http) ===
+
=== Manually triggering ECMD commands (via 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.
+
To query the IP via ECMD, the following URL (the IP must of course be changed)
 +
can be accessed with the browser, returning the output via HTTP.
  
 
<pre>http://192.168.23.244/ecmd?ip</pre>
 
<pre>http://192.168.23.244/ecmd?ip</pre>
  
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.
+
In order to use commands containing spaces, e.g. "1w list", the spaces must be
 +
replaced with "+" or "%20". The following command lists 1-wire sensors, if
 +
any are present:
  
 
<pre>http://192.168.23.244/ecmd?1w+list</pre>
 
<pre>http://192.168.23.244/ecmd?1w+list</pre>
  
oder
+
or
  
 
<pre>http://192.168.23.244/ecmd?1w%20list</pre>
 
<pre>http://192.168.23.244/ecmd?1w%20list</pre>
  
=== Startseite von Ethersex ===
+
=== Ethersex start page ===
  
Ist der Webserver einkompiliert sollte beim Aufruf von <nowiki>http://YOUR_ETHERSEX_IP/</nowiki> im Browser so eine Seite erscheinen:
+
If the web server is compiled in, when accessing
 +
<nowiki>http://YOUR_ETHERSEX_IP/</nowiki> the browser should show such a page:
  
[[Bild:Ethersex-screen-startseite.png|600px]]
+
[[File:Ethersex-screen-startseite.png|600px]]
  
 
===  Dataflash ===
 
===  Dataflash ===

Latest revision as of 22:25, 13 August 2014

HTTPD
Status
Stable
menuconfig Applications->HTTP Server->HTTPD
Pinning -
Ecmd -
Control6 -
Depends on  ?
Requires  ?
Code  ?


Web server on the ethersex

The built-in web server in Ethersex can read the files it should serve from various locations:

  • from an external dataflash
  • files stored in the flash memory of the MCU right after the firmware
  • run ECMD commands and serve the results (for AJAX)

Any of these sources for data can be enabled independent of the others. The easiest option is to initially keep the files in the internal flash memory and to access dynamic content via the HTTP ECMD interface.

Configuration

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                |

Embedding files

If the option Supply Inline Files is enabled, all files stored in vfs/embed/ will be automatically packed with gzip and appended to the end of the firmware when building the image. Filenames remain unchanged, however the maximum length of filenames is 6 characters.

Preprocess files with the C preprocessor or m4

To include files dependent on configuration options (or not) respectively including only parts, if a certain option is enabled, they can be preprocessed by cpp or m4, before the output is packed and appended to the firmware. For that, the file must end in .cpp or .m4. When using cpp, all defines from config.h/autoconf.h are accessible (e.g. ~np~ONEWIRE_SUPPORT~/np~). When using m4, ~np~ONEWIRE_SUPPORT turns into conf_ONEWIRE ~/np~.

Content type of the files

Because the web server can not dynamically determine the content type, this information needs to be supplied in advance. The content type is determined by the first character of the file name:

  • S (e.g. Sty.c): text/css
  • X (e.g. Xow.ht): application/xhtml+xml;
  • everything else is served as text/html

Access files from the SD card

To serve files from an SD card, they are copied to the SD card. These can then be accessed by the browser via the following URL (IP and file

name must of course be changed)
http://192.168.23.244/Filename

If the file is located in a folder on the SD card, it can be accessed via the

following URL.
http://192.168.23.244/Foldername/Filename

The length of filenames is not limited to 6 characters with the SD card.

Manually triggering ECMD commands (via HTTP)

To query the IP via ECMD, the following URL (the IP must of course be changed) can be accessed with the browser, returning the output via HTTP.

http://192.168.23.244/ecmd?ip

In order to use commands containing spaces, e.g. "1w list", the spaces must be replaced with "+" or "%20". The following command lists 1-wire sensors, if any are present:

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

or

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

Ethersex start page

If the web server is compiled in, when accessing http://YOUR_ETHERSEX_IP/ the browser should show such a page:

Ethersex-screen-startseite.png

Dataflash

TODO