Raspberry Projekt: 1-Wire Sensor mit Datenbank

3. März 2013 at 19:32
Print Friendly, PDF & Email

Mein erstes Projekt mit dem Raspberry und Python:

Die Temperaturen von mehreren Sensoren soll in eine Datenbank geschrieben werden.Da mein raspberry headless läuft (also ohne Bildschirm, Tastatur) sollen die Daten über einen WEB-Server präsentiert werden.

Die Anregung für dies Projekt habe ich hier gefunden:
http://www.forum-raspberrypi.de/Thread-keine-ausgabe-auf-webpage-mit-linux

Voraussetzung:

  1. Webserver
  2. PhP5
  3. MySQL Datenbank
  4. phpMyAdmin
  5. Für die Grafik: JPGRAPH
  6. Ich emppfehle MobaXterm für den Zugriff von Windows auf den raspberry
    wesentlich komfortabler als Putty
  7. 1-Wire Sensoren

Die Software wurde in Python geschrieben.
In dem Paket avrio sind folgende Dateien enthalten:

  • avrio.py                     Das Hauptprogram
  • avrio_database.py   Ein Modul mit den Funktionen für die Datenbank
  • avrio_html.py           Ein modul, um eine HTML Datei zu erzeugen
  • avr-graph.php          Ein PHP-Script, welches, den Temperaturverlauf als Grafik zeigt
  • avrio-wrtiedb.sh      Des kleines shell script, welches von cron aufgerufen wird

Wenn avrio.py das erste mal gestartet wird, werden die Parameter abgefragt und eine Konfigurationsdatei erzeugt (avrio-config.txt).
Z.b. User/Pw für MySQL und die Datenbank-Parameter.
Anschließend erzeugt das Program die Datenbank und die Datenbank-Tabelle.
Die bei der Installation angeschlossenen 1-Wire Sensoren werden automatisch erkannt und in die Konfigurations-Datei geschrieben.

Mit einem Editor (z.B. nano) erfolgt in der Datei die Zuordnung zu den Datenbankfeldern.

Als nächstes wird das Hauptprogram gestartet, welches ohne die Angabe von Parametern die Sensoren ausliest und die Daten in die Datenbank schreibt:

> python avrio.py

Die Daten können auf mehrere Arten angezeigt werden:

Über die Kommandozeile die letzten 3 Einträge aufrufen
> python avrio.py -r 3

Über den Webserver kann man eine Seite aufrufen, die das Program erzeugt:

> python avrio.py -w
Dann im Browser: http://192.168.178.60/avrweb/avr-single.html

Über den Webserver kann man eine Seite aufrufen, die eine Grafik erzeugt:

http://192.168.178.60/avrweb/avr-graph.php