Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekt:python_ds18b20_logger

DS18B20 – Temperaturdaten loggen und visualisieren

☚ zurück

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 das Diagramm lokal oder zur Anzeige im Webserver-Verzeichnis.

Der Temperaturverlauf im Browser wird nur angezeigt, wenn zuvor das Programm temp_logger.py im Terminal gestartet und die Messung mit start begonnen wurde. In diesem Beispiel wurde die Messung noch nicht gestartet.

Überblick

  • Voraussetzungen
    • Hardware
    • Environment
    • Programmstruktur anlegen
  • Software
    • Quellcode
  • Testen
    • Terminal
    • Webseite

Details

Voraussetzungen

Das Projekt DS18B20 digitaler Temperatursensor muss vollständig durchgeführt sowie erfolgreich getestet worden sein, da derselbe Aufbau (Verkabelung und Hardware) weiterverwendet wird.

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

Aktiviere die Python-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_logger $ 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 
    └── temp_logger.py        # Hauptprogramm

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.

Quellcode: ''hardware.py''

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.
Hinweis

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.

Quellcode: ''temperature_logger.py''

Hauptprogramm

Das eigenständige Programm temp_logger.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.

Die eigentliche Messung läuft in einem Hintergrund-Thread. Dadurch bleibt die Kommandozeile reaktionsfähig und kann weiterhin Befehle entgegennehmen, während im Hintergrund kontinuierlich Temperaturwerte erfasst, gespeichert und grafisch ausgewertet werden.
Während der Laufzeit werden die erfassten Messwerte in die Datei data/temperature.txt geschrieben. Zusätzlich wird nach jeder Messung automatisch eine Grafik (data/temperature.png) erzeugt bzw. aktualisiert, die den Temperaturverlauf darstellt.

Quellcode ''temp_logger.py''

Testen

Das Programm kann sowohl lokal im Terminal als auch über den Webbrowser getestet werden. Für die Webausgabe gelten die im Abschnitt „Voraussetzungen“ beschriebenen Bedingungen.

Hinweis

Wird die Messung mit start begonnen, werden in regelmäßigen Abständen Temperaturwerte erfasst, die in der Datei (temperature.txt) gespeichert werden. Zusätzlich wird nach jeder Messung automatisch eine aktualisierte Grafik des Temperaturverlaufs erzeugt.

Die Erfassung erfolgt entsprechend dem eingestellten Messintervall, sodass neue Messwerte erst nach einigen Sekunden sichtbar werden. Das Programm führt die Messung kontinuierlich im Hintergrund aus, bis sie mit stop beendet oder das Programm mit exit geschlossen wird.

Vor dem Testen prüfen, welcher MODE in temperature_logger.py gesetzt ist:
  • local → Dateien werden im Projektordner data gespeichert.
  • web → Dateien werden im Webverzeichnis /var/www/html/temp_curve gespeichert und können im Browser angezeigt werden.

Für die Webausgabe muss MODE = „web“ gesetzt sein.

Terminal

Zur Überprüfung wird das Programm im Verzeichnis src gestartet:

chmod 755 temp_logger.py
./temp_logger.py
Beispiel Ausgabe
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
exit   | x                Programm beenden
 
> start
(Programm misst im Hintergrund …)
> stop
> 

Nach dem Start erscheint die Kommandozeilen-Oberfläche des Temperatur-Loggers. Im obigen Beispiel wurde mit dem Befehl h die Hilfe angezeigt.

Die Befehle können entweder vollständig ausgeschrieben (z. B. start) oder in der angegebenen Kurzform (z. B. s) verwendet werden, um das Programm zu starten.

Die erzeugten Dateien befinden sich im Verzeichnis data:

ls
temperature.png     # erzeugte Grafik
temperature.txt     # Messdaten

Die Grafik kann anschließend mit folgendem Befehl betrachtet werden:

feh temperature.png
Bildausgabe mit dem Befehl feh

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.

Zum Testen im Browser genügt es, die IP-Adresse des Raspberry Pi in die Adresszeile einzugeben. Der Apache-Webserver liefert automatisch die Datei index.html aus, die als Startseite angezeigt wird.
Bildausgabe über den Webbrowser

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.

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>
Die Dateien 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.
projekt/python_ds18b20_logger.txt · Zuletzt geändert: von torsten.roehl