#!/usr/bin/python3 import sqlite3 from datetime import datetime import adafruit_dht import board # GPIO-Pin für den DHT11-Sensor DHT_SENSOR = adafruit_dht.DHT11(board.D26) # Funktion zur Initialisierung der SQLite-Datenbank def init_db(db_name): conn = sqlite3.connect(db_name) cursor = conn.cursor() # Erstellt eine Tabelle, falls sie noch nicht existiert cursor.execute(""" CREATE TABLE IF NOT EXISTS sensor_data ( id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp TEXT NOT NULL, temperature REAL NOT NULL, humidity REAL NOT NULL ) """) conn.commit() return conn # Funktion zum Einfügen von Daten in die Datenbank def insert_data(conn, timestamp, temperature, humidity): cursor = conn.cursor() cursor.execute(""" INSERT INTO sensor_data (timestamp, temperature, humidity) VALUES (?, ?, ?) """, (timestamp, temperature, humidity)) conn.commit() # Funktion zum Lesen von Temperatur und Luftfeuchtigkeit vom DHT11-Sensor def read_dht11(): humidity = DHT_SENSOR.humidity temperature = DHT_SENSOR.temperature if humidity is not None and temperature is not None: return round(temperature, 1), round(humidity, 1) else: print("Fehler beim Lesen des Sensors. Versuche erneut...") return None, None # Hauptfunktion def main(): db_name = "/var/www/html/sensor_data.db" conn = init_db(db_name) # Ruft Temperatur und Luftfeuchtigkeit ab temperature, humidity = read_dht11() if temperature is not None and humidity is not None: # Holt das aktuelle Datum und die Uhrzeit timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # Speichert die Daten in der Datenbank insert_data(conn, timestamp, temperature, humidity) print(f"Gespeichert: {timestamp} - Temperatur: {temperature}°C - Luftfeuchtigkeit: {humidity}%") conn.close() if __name__ == "__main__": main()