Spaceprojekte/A.W.E.S.O.M.E.

Aus Flipdot

< Spaceprojekte
Version vom 07:01, 12. Mai 2011 bei Helmut (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Automatic WEb "Space Open" Messaging Entity

Sobald der Hackerspace geöffnet ist, soll dies auf der Website zu sehen sein.

Lösung: Ein Arduino mit Webshield arbeitet als "seriell nach Web Interface" - ein über die serielle Schnittstelle eintreffender String wird ohne weiteres an eine feste URL als GET-Anfrage angehängt, die GET Parameter sind der Öffnungsstatus des Hackerspaces sowie diverse Messwerte.

Auf dem Webserver läuft ein PHP-Script (connect.php), das aus den per GET übergebenen Parametern eine Webseite aufbaut und in eine feste HTML-Seite (index.html) schreibt. Auf dieser Seite können z.B. Status-Icons in Abhängigkeit von den Parametern gesetzt werden.

Das Script connect.php kann auch emails von den Controllern verschicken. Dazu muss eine GET - Variable "mailto" übertragen werden. Subject und Bodytext stecken in weiteren Variablen.

Nach dem Controller-Reset und immer um Mitternacht holt sich der Controller vom Server die aktuelle Uhrzeit.

Als Rückkanal vom Web in den Hackerspace dient ein Webformular (cange.php). In dieses Formular können mehrere Zeilen Shell-Kommandos eingegeben werden, die von diesem Script in einer Datei (settings.txt) gespeichert werden. Beim nächsten Aufruf des connect-Sripts durch den Arduino baut das Script die settings.txt in die Antwort des Webservers an den Arduino ein.


Datei:Schematic.png


Der Arduino leitet die Antwort des Webservers zu seiner seriellen Schnittstelle. Für die universelle Benutzbarkeit des seriellen Arduino-Webinterfaces ist der Arduino mit einem Bluetooth-Modul ausgestattet. Über die BT-Schnittstelle können im Haus verteile AVR-Controller mit dem Arduino kommunizieren. Der lokale Controller baut die aus seinen Sensorgrößen und Variablen wie z.B. Uhrzeit die GET - Anfrage für die Senderichtung zum Server zusammen und wertet in der Gegenrichtung die Server-Antwort mit einem Parser aus, der AT-Kommandos wie ein Modem annimmt, und damit Portleitungen, PWM-Tastgrade usw. steuern kann.

Über BT können sich nacheinander verschiedene Controller mit dem Webinterface verbinden und ihre Daten ins Netz bringen. um möglichst wenige fehlschlagende Verbindungsanforderungen zu haben, weil gerade ein anderer Controller mit dem Webinterface kommuniziert, versucht jeder Controller in einem gewissen Minutenabstand eine Verbindung aufzubauen. Die Minutenabstände sind Primzahlen.

Security:

Das script change.php ist mit Basic HTTP Authentication gegen einen Zugriff geschützt. Die index.php, welche vom Controller aufgerufen wird, liegt in einem schwer zu erratenden Pfad. der Form /control/shewzdne87763265sghdte/index.php.

Dateien:


to do

  • missglückten bt verbindungsaufbau abfangen
  • debug output auf zweiter serieller schnittstelle einbauen
  • debug log auf dem webserver implementieren
  • abfrage von ports auf dem uC und anzeige auf der website via php modularisieren
  • anzeigen von grafiken auf der website via jpgraph implementieren (Google Charts)
  • ablegen von messwertreihen auf dem webserver und anzeige der letzten n realisieren