|
Webserver-Software
Der Webserver ist es ein experimentelles Projekt. Es soll zeigen, was mit einem einfachen Controller und einer alten Netzwerkkarte noch geht. In der Version V1.40 des AVR-Webserver sind eine Menge neuer Funktionen implementiert worden. Einige Hinweise gleich vorab: Die Quellen sind für einen ATMEGA644 ausgelegt. Die aktuelle Version von PonyProg V2.06f beta hat leider noch keine Unterstützung für den MEGA644. In der Zip-Datei findet man ein Verzeichnis 'files_sd_card'.
Die Quellen findet man im Downloadbereich... Konfiguration per Datei auf der SD-KarteBis auf wenige Ausnahmen kann die Konfiguration per Textdatei (Name: SERVER.CFG) auf der SD-Karte eingestellt werden. Die Parameter sind mit Kommentaren versehen und eigentlich selbsterklärend. Aus diesem Grund erspare ich mir hier eine detailierte Beschreibung. So kann man z.B. auch die Kameraunterstützung einfach deaktivieren. Hier mal eine Beispieldatei: Wichtig: Die IP-Adressen müssen immer 3stellig sein - also 192.168.000.081 und nicht 192.168.0.81 Parameter sind meist 4stellig. Ein entsprechender Hinweis befindet sich auch immer im Kommentar.
NTPDer Webserver kann sich die aktuelle Uhrzeit von einem Zeitserver aus dem Internet holen. Hinweis: Die interne Uhr im Webserver beginnt bei Programmstart mit 00:00 Uhr 01.01.1900. Hier mal ein Screenshot der seriellen Ausgabe:
Zur Erklärung: Der Webserver wurde ohne SD-Karte gestartet. Nach 3 erfolglosen Versuchen, die SD-Karte zu finden, startet das Programm trotzdem. Zum Schluss kommt die Meldung, dass zur IP-Adresse des NTP-Server (192.168.1.88) keine ensprechende MAC-Adresse aufgelöst werden konnte, d.h. es ist z.Z. kein Rechner mit der IP erreichbar. Der Mailserver (SMTP) ist im Beispiel oben übrigends GMX.
Hier nochmal ein Screenshot mit eingesteckter SD-Karte: Bei Start wurde die SD-Karte und das Konfigurationsfile (server.cfg) gefunden und geladen. Zum Schluss sieht man, dass per ARP-Request jetzt auch eine MAC-Adresse von NTP-Server gefunden wurde. In der letzten Zeile sieht man die Antwort vom NTP-Server.
WebseitenDie interne Webseite im Flash des Mikrocontrollers ist über 'index.htm' erreichbar. Es gibt eine Besonderheit: Dateien auf der SD-Karte mit der Endung '.asp' werden speziell interpretiert. Damit ist es möglich, direkt auf einen RAM-Bereich im Mikrocontroller lesend und schreibend zuzugreifen. Dies erleichtert die Übergabe von Parametern vom Browser und das Darstellen von aktuellen Werten des Mikrocontrollers. Diese Funktion ist im wesentlichen von Mark Haemmerling erstellt worden und nur geringfügig verändert worden. Eine detailierte Beschreibung muss noch erstellt werden. Hier mal ein Screenshot der Beispieldatei: Diese speziellen Tag beginnen und enden immer mit `. (rechts oben neben Backspace) wx:Format oder bx.y:true:false x=Index Format = Formatstring für printf Beispiel 1: Im HTML-Code sieht das dann so aus: das bedeutet: W0 = Word Index 0 Für den Fall, dass im Index 0 der Wert 6751 steht, ergibt
Beispiel 2: b9.1 = Index 9 Bit 1 wenn das Bit = 1, gebe "red.gif" aus, Für den Fall, dass das Bit9.1 = 1 ist, wird an den Browser folgendes gesendet: <img src="red.gif"> Am besten einfach mal die Beispieldatei genau anschauen, dann sollte die Funktionsweise klarer werden.
Kamerafunktionen / FAT16 mit SchreibunterstützungDas FAT-System wurde von Stephan Busker (http://www.mikro-control.de) um entsprechende Schreibfunktionen erweitert. Anmerkung:
Speichern des Kamerabildes auf die SD-Karte Man kann in einem bestimmten Zeitintervall ein Bild der Kamera auf die SD-Karte speichern. Das Zeitintervall (in Minuten) kann in der Konfigurationsdatei (server.cfg) eingestellt werden. Eine Zeit von 0000 deaktiviert das Intervallspeichern.
Externer Trigger für die Kamera Alternativ kann man auch das Speichern durch ein externes Signal (z.B. einem Türkontakt oder Bewegungsmelder) auslösen. Als Parameter sind Portpin, Logik (High - oder Lowaktiv) und die minimale Zeit zwischen 2 Triggerereignissen einstellbar. Die erforderlichen Optionen sind: # State (HIGH or LOW) # min. Zeit zw. 2 Trigger # Portpin für ext. Trigger FTP-FunktionNeben dem Speichern auf die SD-Karte, sind ausserdem die Funktionen für einen FTP-Client implementiert worden. Jetzt kann man die Bilder der Kamera auf einen FTP-Server übertragen. Die FTP-Funktion ist für das Intervallspeichern und für den externen Trigger möglich. Die Optionen für die FTP-Dateiübertragung sind: # FTP-Login (je max. 8 Zeichen) # Bilder auf FTP-Server übertragen? Mail-FunktionDer Webserver kann jetzt getriggert E-Mails verschicken. Die Textvorlagen werden auf der SD-Karte als Dateien hinterlegt: MAIL-01.txt, MAIL-02.txt usw. In der Demodatei INDEX.ASP kann man z.B. die Mails manuell auslösen. Die grundsätzliche Funktionen sind auch von Mark Haemmerling und wurden von mir angepasst bzw. erweitert (z.B. AUTH-Login) Es wäre vorstellbar, z.B. in Abhängigkeit von Portpins verschiedene Statusmail zu verschicken. Die entsprechenden Optionen in der Konfigurationsdatei sind: # Mail senden aktivieren? Ob AUTH_LOGIN aktiviert werden muss, hängt vom jeweiligen Mailserver ab. RouterunterstützungEs können jetzt IP-Adressen im lokalen Netz oder im Internet angegeben werden. Voraussetzung für externe IPs ist eine entsprechende Festlegung der Router-IP-Adresse. Grundsätzlich wird noch dem Programmstart versucht, die MAC-Adressen zu den festgelegten IP-Adressen zu bestimmen. Die serielle Ausgabe des Webserver leistet bei der Fehlersuche gute Dienst.
Sonstige ErweiterungenNeben den bereits vorgestellen Erweiterungen sind eine Menge Details angepasst worden. Ein ARP-Request ist hinzugefügt worden, um die passenden MAC-Adressen zu den IP-Adressen bestimmen zu können.
TODONachfolgend sind noch einige Punkte aufgeführt, die man noch implentieren/testen/erweitern könnte. Verwertbarer Quellcode, d.h. am besten mit möglichst minimaler Ergänzung der Funktionen, ist immer willkommen. In der Vergangenheit sind schon immer tolle Erweiterungen entwickelt worden. Leider sind dies aber dann sehr spezielle Projekte, Ich habe mit der Version V1.40 versucht, die unterschiedliche Erweiterungen wieder zusammen zu führen. Hier nun eine lockere Liste mit Ideen:
| |
© H.Buss - I.Busker - 1999-2024 |