Tino

Alles hier wird auf meiner Privaten Seite dargestellt.

Sensoren HC-SR04, DS18B20, DHT22

Für das Modul „Informatik-Projekt“ sollte eine Sensorstation mithilfe des Raspberry Pi entwickelt werden. Hierfür sollen die Sensoren nach einer Beschreibung an die GPIO-Schnittstelle angeschlossen werden und ausgelesen werden.

Die Sensorstation wurde mit Python entwickelt und baut auf das Paket Tkinter für die Grafische Oberfläche auf. In dieser Oberfläche können dann die Sensoren DS18B20, DHT22 und HC-SR04 ausgewählt werden.

Im Fenster kann dann die GPIO-Nummer und das Auslese-Intervall festgelegt werden. Einige Sensoren benötigen eine Installation der Sensoren. Auch diese kann im Fenster vorgenommen werden. Die Sensoren können manuell oder automatisiert (per Cronjob) ausgelesen werden. Alle Daten werden in einer SQLite-Datenbank gespeichert. Die Daten sind zudem als CSV-Datei exportierbar. Speziell für Webanwendungen kann auch ein Webservice gestartet werden, welcher die Daten als JSON-Dateien zur Verfügung stellt.

Dokumentation: https://github.com/ErasSoft/RaspberryPi-Sensorstation/blob/master/datasheet/Entwicklerdokumentation.pdf

Das ganze Projekt ist auf GitHub verfügbar: https://github.com/ErasSoft/RaspberryPi-Sensorstation

Das bereits erwähnte Projekt rund um GPSLogger und MAP Webinterface ist nun als Projekt für die Hochschule anerkannt worden und erlaubt mir im Rahmen eines Moduls eine Entwickler- und Anwenderdokumentation zu schreiben, indem noch präzisier auf das Projekt und dem Webinterface eingegangen werden kann. Ziel ist es das ganze zu Dokumentieren und einen lauffähigen Prototypen zu erstellen, der schon weitgehend fertig ist. Fehlt also nur noch die Dokumentation und die eventuelle Einbindung in das Hochschulnetzwerk. Weiteres wird noch mit meinem Betreuer abgesprochen.

Momentan bin ich mit einem Projekt beschäftigt, welches ein GPS-Tracker beinhaltet. Die App die ich dazu nutze nennt sich GPSLogger und ist im Google Play Store kostenlos zu finden. Diese App loggt automatisch in eingestellten Zeitintervall die Position und dokumentiert diese in unterschiedlichen Formaten, ich benutze dafür Klartext. Weiterhin werden diese auch in einem bestimmten Zeitintervall auf meinem Server via FTP hochgeladen oder durch Aufruf eines Links via HTTP eingetragen. Jeden Tag entsteht eine neue Textdatei, die hochgeladen wird.
Auf meinem Webspace befindet sich ein eigenes selbstprogrammiertes Webinterface, welches diese Textdateien auswertet und anzeigt. Für die Ausgabe der Daten wird die Google Maps Karte oder eine Liste verwendet. Weiterhin wird durch Reverse Geocoding mittels JSON durch den Google Dienst, die Korrdinaten in Adresse umgewandelt. Dadurch können die Adressen in der Liste angezeigt werden und auch mittels Suche alle Ergebnisse angezeigt werden mit dem eingegebenen Suchbegriff. Zum Beispiel kann dadurch ausgegeben werden, wann man sich an einem bestimmten Ort befand. Für das Reverse Geocoding wird der Dienst cronjob.de genutzt. Es gibt mehrere Möglichkeiten sich einzuloggen. Einmal gibt es das Master Passwort, dadurch wird der Zugang ohne Probleme hergestellt. Das Master Passwort wird danach in das Tagespasswort umgewandelt. Jeden Tag gibt es ein neues Tagespasswort. Dieses ist zum Schutz da und kann auch verschickt werden. Wurde ein Alarm ausgelöst, dann gibt es ein weiteres Passwort mit dem man sich einloggen kann, dieses ist solange gültig, bis die entsprechende entstandene Datei wieder gelöscht wird. Weitere Funktionen sind versteckt eingebaut. Wie Beispielweise eine Alarm Funktion. Diese löst sich nach X Tagen ohne neue Daten aus und sendet ggf. eine E-Mail mit den letzten Adressdaten an ausgewählte E-Mail Adressen. Sowie ein Link mit den Zugang zum Webinterface. Bei Bedarf ist auch die Versendung von SMS Benachrichtigungen möglich. Dafür ist nur ein Konto mit Guthaben bei sms-expert.de nötig. Weiterhin gibt es eine sogenannte GreenZone, sobald man den Radius des Kreises der GreenZone verlässt kann man ein Ereignis auslösen. Zum Beispiel eine E-Mail oder SMS. Diese Funktion dient dazu um herauszufinden, ob man ein Bestimmtes Gebiet verlassen hat.

Ich bin ein Fan von Automatisierungssoftware, von daher haben nun alle meine PCs eine selbstprogrammierte Batch Datei im Autostart zu liegen. Diese Batch Datei wird bei jedem Start ausgeführt und loggt das Datum, Uhrzeit, Computername, Benutzername, Private IP-Adresse, Externe IP-Adresse, Netzwerkverbindung, Laufwerke und schreibt sie lokal in eine Text Datei. Sobald versucht wird die externe IP zu ermitteln, durch den Zugriff auf eine bestimmte Seite auf meiner Homepage, wird gleichzeitig ein Eintrag auf dem Server mit allen diesen Daten erstellt und loggt damit alle PCs also zentral nochmal. Damit hat man den vollen Überblick über die aktivitäten der PCs, welche diese Batch Datei im Autostart haben. Das Tablet (Android) wird mithilfe einer App geloggt.

Zurzeit schaue ich mich nach neuem im Internet um und bin dabei auf paar interessante Dinge gestoßen. Zum einen das Chrome OS Betriebssystem. Dieses besteht aus dem Linux-Kernel und soll optimiert für das schnelle Booten und dem einfachen Internet Zugang sein. Startetn lässt es sich entweder als Live-CD oder vom USB-Stick. Ich habe mir das Image auf den USB-Stick „gebrannt“ und von dort gestartet, dadurch können Einstellungen auch gespeichert werden. Der Start ging schnell und unkompliziert. Mit dabei ist sogar das WINE Paket, dadurch können .exe Dateien ausgeführt und installiert werden. Mit dabei natürlich Chromium, der Chrome Browser und zentraler Bestandteil des Chrome OS. Zusätzlich einige wenige hilfreiche Programme wie GIMP und LibreOffice. Die Oberfläche ist sehr stark an Windows angepasst. Für Windows Nutzer also ein Vorteil.
Das zweite ist der Chromecast Stick, welcher wahrscheinlich ab März 2014 in Deutschland erscheinen soll. Dieser überträgt zum Beispiel die YouTube Dateninhalte direkt vom Router auf dem Stick. Gesteuert kann mittels Smartphone oder Tablet werden. Eine recht interessante Idee und auf jeden Fall einen Blick Wert. Sobald dieser in Deutschland erhältlich ist werde ich mir einen definitiv holen.