From a07c89c0fb9659c9961f8d9cef7ec49123b2171f Mon Sep 17 00:00:00 2001 From: Robert Scheibe Date: Sat, 4 Jan 2025 16:06:05 +0100 Subject: added moisture sensor --- read_sensors.py | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100755 read_sensors.py (limited to 'read_sensors.py') diff --git a/read_sensors.py b/read_sensors.py new file mode 100755 index 0000000..e560a8a --- /dev/null +++ b/read_sensors.py @@ -0,0 +1,79 @@ +#!/usr/bin/python3 +import sqlite3 +from datetime import datetime +import adafruit_dht +import board +import busio +import adafruit_ads1x15.ads1115 as ADS +from adafruit_ads1x15.analog_in import AnalogIn + +# GPIO-Pin für den DHT11-Sensor +DHT_SENSOR = adafruit_dht.DHT11(board.D26) + +# Initialize the I2C interface +i2c = busio.I2C(board.SCL, board.SDA) + +# Create an ADS1115 object +ads = ADS.ADS1115(i2c) + +# Define the analog input channel +channel = AnalogIn(ads, ADS.P0) + +# 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, + moisture REAL NOT NULL + ) + """) + conn.commit() + return conn + +# Funktion zum Einfügen von Daten in die Datenbank +def insert_data(conn, timestamp, temperature, humidity, moisture): + cursor = conn.cursor() + cursor.execute(""" + INSERT INTO sensor_data (timestamp, temperature, humidity, moisture) + VALUES (?, ?, ?, ?) + """, (timestamp, temperature, humidity, moisture)) + conn.commit() + +# Funktion zum Lesen von Temperatur und Luftfeuchtigkeit vom DHT11-Sensor +def read_dht11(): + humidity = DHT_SENSOR.humidity + temperature = DHT_SENSOR.temperature + moisture = channel.value + if humidity is not None and temperature is not None: + return round(temperature, 1), round(humidity, 1), moisture + else: + print("Fehler beim Lesen der Sensoren. Versuche erneut...") + return None, 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, moisture = read_dht11() + + + if temperature is not None and humidity is not None and moisture 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, moisture) + print(f"Gespeichert: {timestamp} - Temperatur: {temperature}°C - Luftfeuchtigkeit: {humidity}% - Bodenfeutigkeit {moisture}") + + conn.close() + +if __name__ == "__main__": + main() + -- cgit v1.2.3