Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
DS18B20 – Temperaturdaten loggen und visualisieren
In diesem Projekt wird ein Temperatur-Logger mit dem digitalen 1-Wire-Sensor DS18B20 am Raspberry Pi realisiert. Ergänzend zur reinen Temperaturauslese werden Messwerte kontinuierlich in einer Textdatei protokolliert und aus diesen Daten automatisch ein Temperaturverlauf als Grafik erzeugt. Der Logger lässt sich über ein Kommandozeilen-Interface steuern und speichert Messdaten sowie Diagramm lokal oder zur Anzeige im Webserver-Verzeichnis.
Überblick
- Voraussetzungen
- Hardware
- Environment
- Programmstruktur anlegen
- Software
- Quellcode
- Testen
- Terminal
- Webseite
Details
Voraussetzungen
Nutzung lokal: Für die reine lokale Verwendung des Loggers sind keine weiteren Projekte erforderlich.
Nutzung mit Webausgabe: Hierfür muss zuvor das DokuWiki-Projekt zur Einrichtung des Webservers abgeschlossen worden sein. Idealerweise wurde auch das FastAPI-Projekt bereits durchgeführt.
Environment
Die Programmierung erfolgt nun immer mit der gewählten Umgebung!
source ~/devel/projects/course_env/bin/activate
Pakete & Bibliotheken installieren
Jetzt die ENV aktivieren (falls noch nicht geschehen) und dann erst installieren:
pip install matplotlib
Programmstruktur
(course_env) pi@raspi88:~/devel/projects/course_temp_curve $ tree . ├── data │ ├── temperature.png # wird automatisch erstellt │ └── temperature.txt # wird automatisch erstellt └── src ├── core │ ├── hardware.py # aus dem vorherigen Projekt! │ ├── __init__.py │ └── temperature_logger.py # Program └── temp_curve.py
Software
Im folgenden Abschnitt wird die vollständige Software zur Datenerfassung, Speicherung und grafischen Darstellung der Temperaturwerte beschrieben.
Quellcode
hardware.py
Die Datei hardware.py (API) bleibt unverändert und wird hier der Vollständigkeit halber erneut vollständig aufgeführt.
temperature_logger.py
In der Datei temperature_logger.py kann die Variable MODE die Werte local oder web annehmen.
- local Das erzeugte Bild wird im lokalen Projektverzeichnis gespeichert.
- web Das erzeugte Bild wird im Webverzeichnis gespeichert und kann über den Webserver angezeigt werden.
Die dafür notwendigen Voraussetzungen wurden bereits in einem vorherigen Projekt (DokuWiki) geschaffen: Der Benutzer pi ist Mitglied der Gruppe www-data. Dadurch besitzt er die erforderlichen Schreibrechte, um die Datei in das angegebene Webverzeichnis zu speichern.
Hauptprogramm
Das eigenständige Programm temp_curve.py dient als Kommandozeilen-Interface zur Steuerung des Temperatur-Loggers.
Es ermöglicht das Starten und Stoppen der Messung, das Setzen des Messintervalls sowie das Zurücksetzen der gespeicherten Daten.
data/temperature.txt geschrieben. Zusätzlich wird nach jeder Messung automatisch eine Grafik (data/temperature.png) erzeugt bzw. aktualisiert, die den Temperaturverlauf darstellt.
Testen
um das progam auf der konsole zu tsten
(course_env) pi@raspi88:~/devel/projects/course_temp_curve/src $ ls core temp_curve.py (course_env) pi@raspi88:~/devel/projects/course_temp_curve/src $ ./temp_curve.py Temperatur-Logger v1.0.0 Mit 'h' Hilfe anzeigen. > h VERFÜGBARE BEFEHLE ------------------ start | s Logger starten stop | p Logger stoppen reset | r Messwerte zurücksetzen interval <sek> | i <sek> Messintervall setzen status | t Status anzeigen help | h Diese Hilfe anzeigen quit | q Programm beenden >
hier felt ene beschire was zu sehen ist
dann bild anschein satz
(course_env) pi@raspi88:~/devel/projects/course_temp_curve/data $ ls temperature.png temperature.txt (course_env) pi@raspi88:~/devel/projects/course_temp_curve/data $ feh temperature.png </code ==== Terminal ==== ==== Webseite ==== In diesem Abschnitt wird die einfache HTML-Struktur beschrieben, mit der das Projekt über den Webbrowser erreichbar ist und der automatisch erzeugte Temperaturverlauf grafisch dargestellt wird. === index.html === Die Datei ''index.html'' dient als Startseite und enthält eine Übersicht der verfügbaren Projekte sowie einen Link zur Anzeige des Temperaturverlaufs. <code html index.html> <!DOCTYPE html> <html> <head> <title>Projekt Auswahl</title> </head> <body> <h1>Projekt Auswahl</h1> <ul> <li><a href="/wiki">DokuWiki</a></li> <li><a href="/led">LED Ampel</a></li> <li><a href="/temp">Temperatur</a></li> <li><a href="/temp_curve/temperature.html">Temperatur Verlauf</a></li> </ul> </body> </html>
temperature.html
Die Datei temperature.html zeigt das vom Logger erzeugte Bild temperature.png an und ermöglicht so die grafische Darstellung des aktuellen Temperaturverlaufs im Browser.
- temperature.html
<!DOCTYPE html> <html> <head> <title>Temperatur Verlauf</title> </head> <body> <h1>Temperatur Verlauf</h1> <p>Aktueller Temperaturverlauf:</p> <img src="temperature.png" alt="Temperaturverlauf"> <br><br> <a href="/">Zurück</a> </body> </html>
index.html und temperature.html müssen sich im Webverzeichnis /var/www/html/ bzw. im Unterordner /var/www/html/temp_curve/ befinden, damit sie vom Webserver korrekt ausgeliefert werden können.
