HTTPSRV: Unterschied zwischen den Versionen

Aus FHEMWiki
(War eine gewünschte Seite. Hab sie angelegt.)
 
Keine Bearbeitungszusammenfassung
 
Zeile 37: Zeile 37:


== Links ==
== Links ==
== Fallstricke ==
[[HttpUtils]], das für das Handling der HTTP-Requests zuständig ist, liefert nur eine Handvoll Dateitypen zuverlässig mit dem richtigen Content-Type-Header aus. Das sind aktuell folgende:
{|
!Extension
!MIME-Type
|-
| bmp || image/bmp
|-
| css || text/css
|-
| gif || image/gif
|-
| html || text/html
|-
| ico || image/x-icon
|-
| jpg || image/jpeg
|-
| js || text/javascript
|-
| mp4 || video/mp4
|-
| pdf || application/pdf
|-
| png || image/png
|-
| svg || image/svg+xml
|-
| txt || text/plain
|-
| mp3 || audio/mpeg
|}
Andere Dateitypen werden mit einem Content-Type-Header ausgeliefert, der sich aus der Dateierweiterung (z.B. <code>.doc</code>) und dem Präfix <code>text/</code> ergibt, hier als <code>text/doc</code>.


[[Kategorie:NeedsEditing]]
[[Kategorie:NeedsEditing]]

Aktuelle Version vom 27. Juli 2018, 08:40 Uhr

HTTPSRV
Zweck / Funktion
Stellt einen minimalen Webserver zur Verfügung
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Support (Forum) Frontends
Modulname 02_HTTPSRV.pm
Ersteller Neubert (Forum )
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


HTTPSRV ist eine Erweiterung von FHEMWEB und stellt einen minimalen Webserver zur Verfügung, der Dateien aus einem zu definierenden Verzeichnis ausliefern kann. Wahlweise akzeptiert er auch QueryStrings um seine eigenen Readings zu setzen.

Voraussetzungen

Da es sich - wie erwähnt - bei HTTPSRV um eine Erweiterung von FHEMWEB handelt, muss auf jeden Fall vor der Verwendung ein FHEMWEB-Device definiert werden.

Anwendung

Define

Ein Aufruf in der Kommandozeile von FHEM von

define <name> HTTPSRV <infix> <directory> <friendlyname>

legt ein neues HTTPSRV-Device an. Wobei

  • name ein beliebiger Name für das Device ist, wie es später in FHEM angezeigt wird.
  • infix eine beliebige Pfad-Erweiterung der FHEMWEB-Basis-URL ist.
  • directory der absolute Pfad zu dem auszuliefernden Verzeichnis ist.
  • friendlyname der Name, der in der Seitenleiste von FHEM angezeigt wird, ist.

Beispiele

define myJSFrontend HTTPSRV jsf /usr/share/jsfrontend My little frontend

Stellt die URL http://hostname:8083/fhem/jsf zur Verfügung, unter der die Dateien aus dem Verzeichnis /usr/share/jsfrontend ausgeliefert werden. Der neue Link in der FHEM-Seitenleiste mit dem Titel My little frontend führt genau zu dieser URL.


define kindleweb HTTPSRV kindle /opt/fhem/kindle Kindle Web
attr kindleweb readings KindleBatt

Erzeugt die URL http://hostname:8083/fhem/fhem/kindle unter der Dateien aus dem Verzeichnis /opt/fhem/kindle angezeigt werden. Zusätzlich wird bei diesem HTTPSRV-Device noch erlaubt, mithilfe eines QueryStrings (z.B.: ?KindleBatt=43) ein Reading KindleBatt anzulegen.

Attribute

  • directoryindex: Wird die URL ohne Angabe eines Dateinamen aufgerufen (z.B. http://hostname:8083/fhem/jsf), wird die in diesem Attribut festgelegte Datei geladen. Der Standard-Wert ist index.html.
  • readings: Eine Komma-getrennte Liste aus Reading-Namen. Wenn der Aufruf der URL mit einem Querystring endet (z.B.: http://hostname:8083/fhem/jsf?KindleBatt=43) und das Reading (KindleBatt) in dieser Liste vorkommt, wird - sofern noch nicht vorhanden - ein neues Device-Reading angelegt und mit dem Wert aus dem Querystring befüllt.

Anwendungsbeispiele

Links

Fallstricke

HttpUtils, das für das Handling der HTTP-Requests zuständig ist, liefert nur eine Handvoll Dateitypen zuverlässig mit dem richtigen Content-Type-Header aus. Das sind aktuell folgende:

Extension MIME-Type
bmp image/bmp
css text/css
gif image/gif
html text/html
ico image/x-icon
jpg image/jpeg
js text/javascript
mp4 video/mp4
pdf application/pdf
png image/png
svg image/svg+xml
txt text/plain
mp3 audio/mpeg

Andere Dateitypen werden mit einem Content-Type-Header ausgeliefert, der sich aus der Dateierweiterung (z.B. .doc) und dem Präfix text/ ergibt, hier als text/doc.