Webserver

Der myEthernet Webserver

Die Firmware des myEthernets enthält die Software des embedded Webservers. Er unterstützt das Senden von Dateien an Rechner im LAN und WAN sowie das Übertragen und Setzen von Zuständen, Werten, Konfigurationen des myEthernets.
Einstellungen des Webservers

Der Webserver muss eine eindeutige und noch nicht verwendete Adresse im Netzwerk besitzen. Die Einstellungen dafür werden in der Datei "config.cfg" auf der MicroSD-Karte gespeichert. Die Datei "config.cfg" muss sich im Wurzelverzeichnis befinden. Beim Einschalten des myEthernets wird diese Datei ausgelesen und alle Einstellungen daraus übernommen.

Beispiel config.cfg:

# das ist ein Kommentar
; das ist auch ein Kommentar
#IP-Adresse
ip=192.168.20.98
#Subnetzmaske
ipMask=255.255.255.0
#Webserverport
port=80
#Mac-Adresse
macAddr=2.0.0.2.8.100
twiMode=m24c
twiAddr=0xB0
sharedRamSize=128
sharedEepromSize=128

Sollte keine config.cfg existieren oder keine MicroSD-Karte eingelegt sein, dann werden folgende Standardeinstellungen aktiviert:
IP-Adresse: 192.168.20.96
Webserver-Port: 80
Subnet-Maske: 255.255.255.0
Mac-Adresse: 2.0.0.2.8.100

Ersetzungen:

Mit dem embedded Webserver des myEthernets sind vielfältige Auswertungen möglich. Dabei wird eine eigene Kommando- und Ersetzungssyntax verwendet. Mit Anwendung dieser Befehle können Sie Abfragen von aktuellen Werten an einem, mehreren oder allen Pins vornehmen. Des Weiteren werden aktuelle Pin-Konfigurationen und alle Möglichkeiten zur Pin-Einstellung ausgegeben.
Ersetzungen werden nur in htm-Dateien durchgeführt und können dort in jeglicher Kombination von JavaScript oder HTML-Elementen verwendet und platziert werden.
Achtung: Wollen Sie das Gradzeichen ° ausgeben, dann verwenden Sie dazu das benannte Zeichen für HTML-eigene Zeichen °.

Syntax: °<Typ><Pin-Nr>~<Anzahl>~<Trennzeichen>~<Format>°

° ⇒ Begrenzungszeichen (Grad)
<Typ> ⇒ Wert bzw. Konfiguration abfragen
  • c ... aktuelle Konfiguration
  • C ... mögliche Konfiguration
  • v ... aktueller Wert
  • V ... aktueller Wert mehrerer fortlaufender Pins
<Pin-Nr> ⇒ *, 0...23, virtuell: 200-207, 210, 211, 1000...3999, 5000...7999
<Anzahl> ⇒ Anzahl fortlaufender Pins (physisch oder virtuell) - nur mit dem Typ "V"
<Trennzeichen> ⇒ Trennzeichen bei Abfrage vieler Pins - nur mit dem Typ "V"
<Format> ⇒ Formatierung der Ausgabe zB: "%d" "lm75"

Beispiel:
var ledGruen="°c20°"; gibt die aktuelle Konfiguration am Pin 20 aus und weist diese der Variable "ledGruen" im JavaScript einer HTML-Seite zu

<body>°v*°</body> gibt die Werte aller Pins beim Aufruf einer HTML-Seite aus
<body>°V200~2~&deg;C ~lm75°</body> gibt die Temperaturen der TWI-Sensoren an 200 und 201 mit Trennzeichen °C sowie Formatierung für LM75 beim Aufruf einer HTML-Seite aus
Zusätzliche Ersetzungen:
Neben den Abfragen zu den Pins sind auch Informationen über den embedded Webserver und seiner aktuelle Konfiguration auslesbar.
Syntax: °i<Parameter>°

° ⇒ Begrenzungszeichen (Grad)
i ⇒ Befehl zur Informationsabfrage
<Parameter> ⇒ Informationstyp
  • b ... Buildnummer der Firmware
  • h ... Hardwareinfo
  • i ... IP-Adresse
  • m ... Mac-Adresse (hexadezimale Ausgabe)
  • n ... Netzwerkmaske (Subnet)
  • p ... Webserver-Port
  • t ... Systemzeit seit Start (Sekunden)
  • v ... Version der Firmware
  • Cs ... Socket Anzahl
  • Cr ... Socket Empfänger Puffergröße - Receivebuffer
  • Cg ... GetRequest Puffergröße
  • Sr ... minimale Größe des freien Heapspeichers
  • Sh ... Größe des Heapspeicher
  • SU ... maximal benutzter Heapspeicher
  • Sf ... Summe des freier Heapspeicher
  • Su ... Summe des genutzten Heapspeicher
  • Sp ... Anzahl der Teile im Heapspeicher (Fragmente)
  • SS ... maximale Größe des genutzten Stackspeichers
Kommentare:
Syntax: °!<Kommentartext>°

° ⇒ Begrenzungszeichen (Grad)
! ⇒ Kennzeichen für Kommentare
Alle Texte innerhalb der Begrenzungszeichen werden entfernt.

Kommandos:

Die Kommandos sind Anweisungen für den Mikrocontroller des myEthernets, die eine Änderung eines bzw. vieler Pins zu veranlassen. Dabei kann die Wertausgabe sowie das Verhalten der Pins geregelt werden.
Im Gegensatz zu Ersetzungen wird ein Kommando über einen HTTP-Request veranlasst. Dies kann durch Eingabe in die Adresszeile eines Webbrowser oder per JavaScript durch Einsatz des XMLHttpRequest-Objektes geschehen.

Syntax: <Befehl>=°<Typ><Pin-Nr>~<Wert>°

<Befehl> ⇒ Kommando für myEthernet
  • myConfigCmd ... Konfiguration ändern
  • myChangeCmd ... Wertausgabe ändern
= ⇒ Befehlszuordnungszeichen
° ⇒ Begrenzungszeichen (Grad) mit Zeichencode «%B0»
<Typ> ⇒ Wert bzw. Konfiguration umstellen
  • c ... Konfiguration ändern
  • o ... Ausgabe ändern
<Pin-Nr> ⇒ 0...23, virtuell: 200,201...
~ = Wertzuordnungszeichen (Tilde) mit Zeichencode «%7E»
<Wert> ⇒ neuer Ausgabewert im Dezimal- oder Hexadezimalformat z.B.: 0x20

Beispiel:
http://192.168.20.98/?myConfigCmd=%B0c0%7E0x1%B0 Pin 0 auf Digital-Ouput stellen

http://192.168.20.98/?myChangeCmd=%B0o21%7E0%B0 rote LED am Pin 21 ausschalten

Wenn viele HTTP-Requests auf den selben Pin stattfinden, ist es notwendig einen zusätzlichen Parameter zu senden. Dieser ist für das Umgehen das Browsercaches notwendig. Das vorige Beispiel ändert sich in:

http://192.168.20.98/?myChangeCmd=%B0o21%7E0%B0&423801

Der blau dargestellte Zusatz ist ein zufälliger Wert und kann z. B. per JavaScript generiert werden.