Artikel 6: Automatisierte Datenerfassung – Python‑Datenlogger & Cronjobs

In diesem Teil der Serie erstellen wir einen automatisierten Datenlogger, der Sensordaten regelmäßig erfasst und in der SQLite‑Datenbank speichert. Die Ausführung übernimmt ein Cronjob auf dem Raspberry Pi.

1. Ziel dieses Artikels

Damit unsere Gebäudedaten später sinnvoll visualisiert werden können, müssen sie regelmäßig erfasst werden.
In diesem Artikel:

  • erstellen wir einen robusten Python‑Datenlogger
  • speichern Messwerte automatisch in SQLite
  • richten einen Cronjob ein, der das Skript z. B. alle 5 Minuten ausführt

Damit läuft die Datenerfassung komplett im Hintergrund.

2. Datenlogger‑Skript erstellen

Wir erweitern das Skript aus Artikel 3 und machen es robuster.

Erstelle die Datei:

nano data_logger.py

Inhalt:

# data_logger.py
import sqlite3
from datetime import datetime
import Adafruit_DHT

# Sensor auswählen: DHT11 oder DHT22
# sensor = Adafruit_DHT.DHT11
sensor = Adafruit_DHT.DHT22

PIN = 4  # GPIO 4


def log_measurement():
    # Sensor auslesen
    humidity, temperature = Adafruit_DHT.read_retry(sensor, PIN)

    if humidity is None or temperature is None:
        print("Fehler beim Auslesen des Sensors")
        return

    # Zeitstempel exakt wie in db_init.py
    timestamp = datetime.now()

    # In Datenbank schreiben
    connection = sqlite3.connect("sensor_data.db")
    cursor = connection.cursor()

    cursor.execute("""
        INSERT INTO measurements (timestamp, temperature, humidity)
        VALUES (?, ?, ?)
    """, (timestamp, temperature, humidity))

    connection.commit()
    connection.close()

    print(f"Gespeichert: {timestamp} | {temperature:.1f}°C | {humidity:.1f}%")


if __name__ == "__main__":
    log_measurement()

3. Testlauf

python3 data_logger.py

Wenn alles funktioniert, erscheint:

Gespeichert: 21.4°C / 45.2%

4. Cronjob einrichten

Cronjobs sind ideal für regelmäßige Aufgaben wie Datenerfassung.

Cron‑Editor öffnen:

crontab -e

Folgende Zeile einfügen (alle 5 Minuten):

*/5 * * * * /usr/bin/python3 /home/pi/data_logger.py >> /home/pi/logger.log 2>&1

Erklärung:

  • */5 → alle 5 Minuten
  • python3 → Python‑Interpreter
  • data_logger.py → unser Skript
  • logger.log → Logdatei zur Fehlersuche

5. Cronjob testen

Liste aller Cronjobs anzeigen:

crontab -l

Nach 5–10 Minuten prüfen, ob neue Daten in der Datenbank stehen:

sqlite3 sensor_data.db "SELECT * FROM measurements ORDER BY id DESC LIMIT 5;"

6. Typische Fehler & Lösungen

❌ Cronjob läuft nicht

  • Falscher Pfad zu Python
  • Falscher Pfad zum Skript
  • Skript nicht ausführbar → chmod +x data_logger.py

❌ „database is locked“

→ Cronjob läuft zu häufig → Intervall erhöhen (z. B. alle 2–5 Minuten).

❌ Keine Werte

→ Sensor nicht stabil → DHT22 braucht manchmal 1–2 Sekunden nach Boot.

7. Nächster Schritt

Im nächsten Artikel erweitern wir das System um weitere Sensoren wie CO₂, Helligkeit oder Bewegung – modular und flexibel.

Veröffentlicht in Uncategorized.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mit der Nutzung dieses Formulars erklärst du dich mit der Speicherung und Verarbeitung deiner Daten durch die Website einverstanden.