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