Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekt:python_ds18b20_logger

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
projekt:python_ds18b20_logger [2026/02/22 11:19] torsten.roehlprojekt: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.//
  
 +|{{ :raspberry_pi:temp_logger_0.png?400 |}}|
 +|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 ====== ====== Überblick ======
Zeile 22: Zeile 24:
  
 ===== Voraussetzungen  ===== ===== Voraussetzungen  =====
-<note > +<note> 
-Das Projekt [[python_projekt_ds18b20_digitaler_temperatursensor|DS18B20 digitaler Temperatursensor]] ist verpflichtende Voraussetzung und muss vollständig durchgeführt und erfolgreich getestet worden sein, da hier dieselbe Hardware weiterverwendet wird.+Das Projekt [[python_projekt_ds18b20_digitaler_temperatursensor|DS18B20 digitaler Temperatursensor]] muss vollständig durchgeführt sowie erfolgreich getestet worden sein, da derselbe Aufbau (Verkabelung und Hardwareweiterverwendet wird.
 </note> </note>
 +
 **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 57: Zeile 60:
 <code bash> <code bash>
  
-(course_env) pi@raspi88:~/devel/projects/course_temp_curve $ tree+(course_env) pi@raspi88:~/devel/projects/course_temp_logger $ tree
 . .
 ├── data ├── data
Zeile 66: Zeile 69:
     │   ├── hardware.py       # aus dem vorherigen Projekt!      │   ├── hardware.py       # aus dem vorherigen Projekt! 
     │   ├── __init__.py     │   ├── __init__.py
-    │   └── temperature_logger.py  # Program +    │   └── temperature_logger.py  
-    └── temp_curve.py+    └── temp_logger.py        # Hauptprogramm
 </code> </code>
  
Zeile 163: Zeile 166:
  
 if MODE == "local": if MODE == "local":
-    DATA_DIR = Path("~/devel/projects/course_temp_curve/data").expanduser()+    DATA_DIR = Path("~/devel/projects/course_temp_logger/data").expanduser()
 elif MODE == "web": elif MODE == "web":
     DATA_DIR = Path("/var/www/html/temp_curve").expanduser()     DATA_DIR = Path("/var/www/html/temp_curve").expanduser()
Zeile 205: Zeile 208:
     plt.ylabel("Temperatur (°C)")     plt.ylabel("Temperatur (°C)")
  
-    if temps: +    if temps:  
-        plt.plot(times, temps) +       plt.plot(temps) 
-        plt.xticks(rotation=45)+ 
 +       step = max(1, len(times) // 10) 
 +       plt.xticks(range(0, len(times), step), 
 +               times[::step], 
 +               rotation=45)   
     else:     else:
         plt.text(         plt.text(
Zeile 276: Zeile 283:
  
 === Hauptprogramm === === Hauptprogramm ===
-Das eigenständige Programm ''temp_curve.py'' dient als Kommandozeilen-Interface zur Steuerung des //Temperatur-Loggers//.+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. 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 //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.</note>
 +
 +
  
 <note> <note>
Zeile 285: Zeile 296:
  
  
-++++  Quellcode ''temp_curve.py''+++++ Quellcode ''temp_logger.py''
-<code python temp_curve.py>+<code python temp_logger.py>
 #!/usr/bin/env python3 #!/usr/bin/env python3
 from core import temperature_logger as temp from core import temperature_logger as temp
Zeile 308: Zeile 319:
 status | t                Status anzeigen status | t                Status anzeigen
 help   | h                Diese Hilfe anzeigen help   | h                Diese Hilfe anzeigen
-quit   |                Programm beenden+exit   |                Programm beenden
 """) """)
  
Zeile 356: Zeile 367:
             print_help()             print_help()
  
-        elif cmd in ("quit", "q"):+        elif cmd in ("exit", "x"):
             temp.stop()             temp.stop()
             break             break
Zeile 377: Zeile 388:
 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. 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 und kann daher einige Sekunden dauern  +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.
-Das Programm führt die Messung kontinuierlich im Hintergrund aus, bis sie mit ''stop'' beendet oder das Programm mit ''quit'' geschlossen wird.+
 </note> </note>
  
 +
 +<note tip>
 +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.
 +</note>
 ==== Terminal ==== ==== Terminal ====
 Zur Überprüfung wird das Programm im Verzeichnis ''src'' gestartet: Zur Überprüfung wird das Programm im Verzeichnis ''src'' gestartet:
 <code bash> <code bash>
-./temp_curve.py+chmod 755 temp_logger.py 
 +./temp_logger.py
 </code> </code>
  
Zeile 403: Zeile 423:
 status | t                Status anzeigen status | t                Status anzeigen
 help   | h                Diese Hilfe anzeigen help   | h                Diese Hilfe anzeigen
-quit   |                Programm beenden+exit   |                Programm beenden
  
 +> start
 +(Programm misst im Hintergrund …)
 +> stop
  
 </code> </code>
Zeile 418: Zeile 441:
 <code bash> <code bash>
 ls ls
-temperature.png +temperature.png     # erzeugte Grafik 
-temperature.txt+temperature.txt     # Messdaten
 </code> </code>
  
Zeile 427: Zeile 450:
 feh temperature.png feh temperature.png
 </code> </code>
 +
 +|{{ :raspberry_pi:temp_feh.png?400 |}}|
 +|Bildausgabe mit dem Befehl ''feh''|
  
  
 ==== Webseite ==== ==== 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. 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.
 +
  
 <note>Zum Testen im Browser genügt es, die **IP-Adresse** des //Raspberry Pi// in die Adresszeile einzugeben. <note>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. Der Apache-Webserver liefert automatisch die Datei ''index.html'' aus, die als Startseite angezeigt wird.
 </note> </note>
 +
 +|{{ :raspberry_pi:temp_logger_1.png?400 |}}|
 +|Bildausgabe über den Webbrowser|
  
  
projekt/python_ds18b20_logger.1771759155.txt.gz · Zuletzt geändert: von torsten.roehl