FlatBin
VP1 Python Code mit Kommentaren
#import für die Pinleiste auf der Rückseite des RaspberryPi
try:
import RPi.GPIO as GPIO
except RuntimeError:
print("Error importing RPi.GPIO! This is probably because you need superuser privileges. You can achieve this by using 'sudo' to run your script")
#import für das DHT11 Modul
import dht11
#import für den Zeitlichen Interval
import time
#import für die Datenbankverbindung
import mysql.connector as connection
#konfiguration der GPIO Verbindung
gpio.setwarnings(False)
gpio.setmode(gpio.BCM)
#angeschlossene pins: "+" pin4 (5 V) "-" pin 6 (Ground) "out" pin 32 (GPIO 12)
dht11_sensor = dht11.DHT11(pin=12)
#Einlesen der Zugangsdaten der Datenbank aus pw.txt
try:
with open('C:/Users/Marcel Kaufhold/.vscode/programme/pw.txt', "r", encoding="UTF-8") as file:
while line := file.readline():
zeilen.append(line.rstrip())
except FileNotFoundError:
print("Datei nicht gefunden. Stimmt der Pfad?")
#Versuch des Verbindungsaufbaus zur Datenbank
try:
con = connection.MySQLConnection(zeilen[0],zeilen[1],zeilen[2],zeilen[3])
cursor = con.cursor()
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
try:
#Beginn des dauerhaften Ablaufs des Programms
while True:
# Messung durchführen. Erstellt result Objekt. Objekt beinhaltet aktuelle Daten sowie evtl vorhandenen Errorcode
result = dht11_sensor.read()
# Prüfung ob Objekt valide Daten beeinhaltet
if result.is_valid():
#Versuch in die Datenbank zu schreiben
try:
#Standardstring zum Schreiben in die Tabelle daten der Datenbank. %s sind Platzhalter die mit Werten aus data_tempdata gefüllt werden
sql_standardstring="INSERT INTO daten(temperatur,feuchtigkeit)VALUES(%s,%s)"
#Vorbereitung der gelesenen Daten als Strings für den Execute Befehl
sql_daten=(str(result.temperature),str(result.humidity))
#ausführen des cursor.execute mit dem add_tempdata in kombination mit data_tempdata
cursor.execute(SQL_standardstring, sql_daten)
#commit des SQL Befehls zur Ausführung innerhalb von MySQL
con.commit()
# falls schreiben nicht möglich war wird Errorcode in der Python Konsole ausgegeben
except mysql.connector.Error as err:
print(err)
else:
#falls Daten nicht Valide sind wird Errorcode in Python Konsole ausgegeben
print(f"Errorcode: {result.error_code}")
#Wiederholungsinterval in Sekunden
time.sleep(3.0)
#Abbruchbedingung für die While true Schleife um Programm zu beenden
except KeyboardInterrupt:
#Verbindung zur Datenbank wird geschlossen
print("Das Programm wurde beendet")
con.close()
gpio.cleanup()
Neuen Paste erstellen