Forschung

Beiträge zu aktuellen Themen

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

In diesem Tutorial erkläre ich euch Schritt für Schritt wie ihr eine eigene Suchmaschine aufbauen könnt. Dafür benutzte ich die Linux-Distribution Debian 8.

1. Zuerst müssen die Pakete (Solr 4.10.4 und Nutch 1.9-bin) heruntergeladen und entpackt werden
– unzip solr
– unzip apache-nutch

2. Danach muss die Schema-Datei anpasst werden
– SOLR: schema.xml umbenennen zu schema.xml.org
– NUTCH: schema-solr4.xml nach solr/example/solr/collection1/conf und umbennenen in schema.xml
– Zeile einfügen in der neuen schema.xml-Datei: field name=“_version_“ type=“long“ indexed=“true“ stored=“true“/

3. Dann die Einstellungen in nutch-site.xml verändern
<property>
<name>http.agent.name</name>
<value>Nutch Web-Crawler</value>
</property>

<property>
<name>fetcher.server.delay</name>
<value>0.5</value>
</property>
<property>
<name>http.timeout</name>
<value>30000</value>
</property>
<property>
<name>http.content.limit</name>
<value>131072</value>
</property>

4. Seed-Liste erstellen
– Erstellen eines Ordnes „urls“ und seed.txt im Verzeichnis (Nutch/conf)
– URLs eintragen pro Zeile eine URL: http://erassoft.de

5. Domain Filter einstellen in regex-urlfilter.xml
– Nur diese Domain und alle Subdomains crawlen:
+^http://|https://[a-z0-9]*\.*erassoft.d­e/
– Deaktivieren dieser Zeile, damit URLs mit ? und = in der URL nicht geblockt werden – Notwendig für URLs mit datei.php?id=blabla
#-[?*!@=]

6. Umgebungsvariablen anpassen zur JAVA Installation – Java Umgebungsvariablen
– env
– export JAVA_HOME=/usr/lib/jvm/default-java

7. Solr und Nutch starten
– bin/solr start
– bin/crawl urls erassoft http://localhost:8983/solr/ 999

8. Nach Webseiten suchen
– Öffnen der URL http://localhost:8983/solr
– In collection1 und Query nach Webseiten suchen

Und schon ist die eigene Suchmaschine Einsetzbar. DIese dient hauptsächlich für Entwickler einer eigenen Professionellen und unabhängigen Suchmaschine. Es gibt noch wesentlich einfachere Suchmaschinen, die eingesetzt werden können. Mehr dazu kommt demnächst.

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.