projekt:python_ds18b20_logger
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| projekt:python_ds18b20_logger [2026/02/22 11:27] – [DS18B20 – Temperaturdaten loggen und visualisieren] torsten.roehl | projekt:python_ds18b20_logger [2026/02/23 12:23] (aktuell) – [Testen] torsten.roehl | ||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| // | // | ||
| - | 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.// | + | 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 die Messung | + | |Der Temperaturverlauf im Browser wird nur angezeigt, wenn zuvor das Programm '' |
| ====== Überblick ====== | ====== Überblick ====== | ||
| * Voraussetzungen | * Voraussetzungen | ||
| Zeile 23: | Zeile 24: | ||
| ===== Voraussetzungen | ===== Voraussetzungen | ||
| - | <note > | + | < |
| - | Das Projekt [[python_projekt_ds18b20_digitaler_temperatursensor|DS18B20 digitaler Temperatursensor]] | + | Das Projekt [[python_projekt_ds18b20_digitaler_temperatursensor|DS18B20 digitaler Temperatursensor]] muss vollständig durchgeführt |
| </ | </ | ||
| + | |||
| **Nutzung lokal: | **Nutzung lokal: | ||
| Für die reine lokale Verwendung des Loggers sind keine weiteren Projekte erforderlich. | Für die reine lokale Verwendung des Loggers sind keine weiteren Projekte erforderlich. | ||
| Zeile 58: | Zeile 60: | ||
| <code bash> | <code bash> | ||
| - | (course_env) pi@raspi88: | + | (course_env) pi@raspi88: |
| . | . | ||
| ├── data | ├── data | ||
| Zeile 67: | Zeile 69: | ||
| │ ├── hardware.py | │ ├── hardware.py | ||
| │ ├── __init__.py | │ ├── __init__.py | ||
| - | │ └── temperature_logger.py | + | │ └── temperature_logger.py |
| - | └── | + | └── |
| </ | </ | ||
| Zeile 164: | Zeile 166: | ||
| if MODE == " | if MODE == " | ||
| - | DATA_DIR = Path(" | + | DATA_DIR = Path(" |
| elif MODE == " | elif MODE == " | ||
| DATA_DIR = Path("/ | DATA_DIR = Path("/ | ||
| Zeile 206: | Zeile 208: | ||
| plt.ylabel(" | plt.ylabel(" | ||
| - | if temps: | + | if temps: |
| - | plt.plot(times, | + | |
| - | plt.xticks(rotation=45) | + | |
| + | step = max(1, len(times) // 10) | ||
| + | plt.xticks(range(0, len(times), step), | ||
| + | | ||
| + | rotation=45) | ||
| else: | else: | ||
| plt.text( | plt.text( | ||
| Zeile 277: | Zeile 283: | ||
| === Hauptprogramm === | === Hauptprogramm === | ||
| - | Das eigenständige Programm '' | + | Das eigenständige Programm '' |
| Es ermöglicht das Starten und Stoppen der Messung, das Setzen des Messintervalls sowie das Zurücksetzen der gespeicherten Daten. | Es ermöglicht das Starten und Stoppen der Messung, das Setzen des Messintervalls sowie das Zurücksetzen der gespeicherten Daten. | ||
| + | |||
| + | <note tip>Die eigentliche Messung läuft in einem // | ||
| + | |||
| + | |||
| < | < | ||
| Zeile 286: | Zeile 296: | ||
| - | ++++ Quellcode '' | + | ++++ Quellcode '' |
| - | <code python | + | <code python |
| # | # | ||
| from core import temperature_logger as temp | from core import temperature_logger as temp | ||
| Zeile 309: | Zeile 319: | ||
| status | t Status anzeigen | status | t Status anzeigen | ||
| help | h Diese Hilfe anzeigen | help | h Diese Hilfe anzeigen | ||
| - | quit | q | + | exit | x |
| """ | """ | ||
| Zeile 357: | Zeile 367: | ||
| print_help() | print_help() | ||
| - | elif cmd in ("quit", "q"): | + | elif cmd in ("exit", "x"): |
| temp.stop() | temp.stop() | ||
| break | break | ||
| Zeile 378: | Zeile 388: | ||
| Wird die Messung mit '' | Wird die Messung mit '' | ||
| - | Die Erfassung erfolgt entsprechend dem eingestellten Messintervall | + | Die Erfassung erfolgt entsprechend dem eingestellten Messintervall, sodass neue Messwerte erst nach einigen |
| - | Das Programm führt die Messung kontinuierlich im Hintergrund aus, bis sie mit '' | + | |
| </ | </ | ||
| + | |||
| + | <note tip> | ||
| + | Vor dem Testen prüfen, welcher '' | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Für die Webausgabe muss '' | ||
| + | </ | ||
| ==== Terminal ==== | ==== Terminal ==== | ||
| Zur Überprüfung wird das Programm im Verzeichnis '' | Zur Überprüfung wird das Programm im Verzeichnis '' | ||
| <code bash> | <code bash> | ||
| - | ./temp_curve.py | + | chmod 755 temp_logger.py |
| + | ./temp_logger.py | ||
| </ | </ | ||
| Zeile 404: | Zeile 423: | ||
| status | t Status anzeigen | status | t Status anzeigen | ||
| help | h Diese Hilfe anzeigen | help | h Diese Hilfe anzeigen | ||
| - | quit | q | + | exit | x |
| > start | > start | ||
| Zeile 431: | Zeile 450: | ||
| feh temperature.png | feh temperature.png | ||
| </ | </ | ||
| + | |||
| + | |{{ : | ||
| + | |Bildausgabe mit dem Befehl '' | ||
| ==== Webseite ==== | ==== Webseite ==== | ||
| In diesem Abschnitt wird die einfache HTML-Struktur beschrieben, | In diesem Abschnitt wird die einfache HTML-Struktur beschrieben, | ||
| + | |||
| < | < | ||
| Der Apache-Webserver liefert automatisch die Datei '' | Der Apache-Webserver liefert automatisch die Datei '' | ||
| </ | </ | ||
| + | |||
| + | |{{ : | ||
| + | |Bildausgabe über den Webbrowser| | ||
projekt/python_ds18b20_logger.1771759659.txt.gz · Zuletzt geändert: von torsten.roehl
