Doc gemaakt voor scripts

This commit is contained in:
Atilla
2024-04-03 14:08:30 +02:00
parent 02ca9e7f58
commit 70e5633ce6
21 changed files with 629 additions and 300 deletions

View File

@@ -214,6 +214,7 @@ if __name__ == "__main__":
# Update gegevens
record_id = int(input("Enter record ID to update: "))
# Call the update_data function without additional arguments
# Roep de update_data function aan zonder arguments
update_data(record_id)
elif operation_choice == "D":
# Verwijder gegevens

View File

@@ -1,19 +1,26 @@
# Importeer de mysql.connector module en Error klasse uit deze module.
import mysql.connector
from mysql.connector import Error
# Definieer een functie genaamd `database_connect` om verbinding te maken met de database.
def database_connect():
try:
# Maak een verbinding met de MySQL database.
# Specificeer de database credentials en de database naam.
connection = mysql.connector.connect(
host="localhost",
user="root",
password="",
database="goodgarden"
host="localhost", # De hostnaam waar de database draait, in dit geval lokaal.
user="root", # De gebruikersnaam voor de database.
password="", # Het wachtwoord voor de gebruiker, leeg in dit geval.
database="goodgarden" # De naam van de database waarmee je wilt verbinden.
)
# Controleer of de verbinding succesvol is opgezet.
if connection.is_connected():
# Als de verbinding succesvol is, retourneer het verbinding object.
# De print statement is uitgecommentarieerd, maar kan worden gebruikt voor debuggen.
# print("Connection gelukt!")
return connection
except Error as e:
# Als er een fout optreedt bij het maken van de verbinding, vang deze dan op en print een foutbericht.
print(f"Connection NIET gelukt! ${e}")
return None
# database_connect()
# Als de verbinding niet succesvol was, retourneer None.
return None

View File

@@ -49,9 +49,6 @@ def on_message(client, userdata, message):
print(f"\033[92mMessage received on topic\033[0m {message.topic}: {data}")
# def berekenAlgo(data):
if __name__ == "__main__":
topic = "goodgarden/devices"
subscribe.callback(on_message, topic)

View File

@@ -1,25 +1,38 @@
# Importeer de json module om met JSON data te werken.
import json
# Importeer de subscribe module van paho.mqtt om te abonneren op MQTT topics.
from paho.mqtt import subscribe
# Definieer een callback functie die wordt aangeroepen wanneer een bericht wordt ontvangen.
def on_message(client, userdata, message):
# Decodeer het bericht payload van bytes naar een string met UTF-8 encoding.
payload_str = message.payload.decode("utf-8")
# Laad de JSON string in een Python dictionary.
data = json.loads(payload_str)
# Initialiseer variabelen om de waarden van de apparaten op te slaan.
device_322_value = None
device_256_value = None
# Doorloop de "results" key in de data dictionary.
for key in data["results"]:
# Controleer of de "device" key overeenkomt met device 322 of 256 en sla de waarde op.
if key["device"] == 322:
device_322_value = key["value"]
elif key["device"] == 256:
device_256_value = key["value"]
# Print de waarden van beide apparaten.
print(f"Device 322 value: {device_322_value}")
print(f"Device 256 value: {device_256_value}")
# Print het volledige bericht dat ontvangen is op het abonnementstopic.
print(f"Message received on topic {message.topic}: {data}")
# Dit blok zorgt ervoor dat de code alleen wordt uitgevoerd als dit script rechtstreeks wordt uitgevoerd.
if __name__ == "__main__":
# Definieer het topic waarop geabonneerd wordt.
topic = "goodgarden/par_events"
subscribe.callback(on_message, topic)
# Roep de subscribe.callback functie aan met de on_message functie als callback om te luisteren naar berichten op het gespecificeerde topic.
subscribe.callback(on_message, topic)

View File

@@ -1,51 +1,54 @@
# Importeer de json en mysql.connector modules voor het werken met JSON data en MySQL databases.
# Importeer ook os voor bestandssysteem operaties.
import json
import mysql.connector
import os
# Function to make a connection to the database
# Functie om een verbinding met de database te maken.
def database_connect():
return mysql.connector.connect(
host="localhost",
user="root",
password="",
database="goodgarden"
host="localhost", # De server waar de database draait.
user="root", # De gebruikersnaam om in te loggen op de database.
password="", # Het wachtwoord voor de gebruiker.
database="goodgarden" # De naam van de database waarmee verbinding moet worden gemaakt.
)
# Function to get the absolute path of the current directory
# Functie om het absolute pad van de huidige directory te krijgen.
def get_current_directory():
return os.path.dirname(os.path.abspath(__file__))
# Functie om plantgegevens uit de database te halen en naar een JSON-bestand te schrijven.
def fetch_plant_and_write_to_json():
# Establish a database connection
# Maak verbinding met de database.
connection = database_connect()
try:
cursor = connection.cursor(dictionary=True) # To fetch rows as dictionaries
# Execute the query to fetch data
# Maak een cursorobject aan met dictionary=True om rijen als woordenboeken op te halen.
cursor = connection.cursor(dictionary=True)
# Voer de SQL-query uit om gegevens op te halen.
cursor.execute("SELECT id, plant_naam, plantensoort, plant_geteelt FROM planten")
# Fetch all rows
# Haal alle rijen op.
plants = cursor.fetchall()
# Get the absolute path of the current directory
# Verkrijg het absolute pad van de huidige directory.
current_directory = get_current_directory()
# Construct the absolute path for the JSON file
# Construeer het absolute pad voor het JSON-bestand.
json_file_path = os.path.join(current_directory, 'plants.json')
# Write fetched data to JSON file
# Schrijf de opgehaalde gegevens naar een JSON-bestand.
with open(json_file_path, 'w') as json_file:
json.dump(plants, json_file, indent=4)
except mysql.connector.Error as error:
# Print de fout als er iets misgaat bij het ophalen van de gegevens.
print("Error fetching data from MySQL table:", error)
finally:
# Close cursor and connection
# Sluit de cursor en de verbinding, indien ze bestaan.
if 'cursor' in locals():
cursor.close()
if connection.is_connected():
connection.close()
# Call the function to fetch data and write to JSON
fetch_plant_and_write_to_json()
# if __name__ == "__main__":
# fetch_plant_and_write_to_json()
# Roept de functie aan om gegevens op te halen en naar JSON te schrijven.
fetch_plant_and_write_to_json()

View File

@@ -1,13 +1,22 @@
# Importeer de json module voor het werken met JSON data.
import json
# Importeer de subscribe functie uit de paho.mqtt module voor MQTT-communicatie.
from paho.mqtt import subscribe
# Definieer een callback functie die wordt aangeroepen wanneer een bericht wordt ontvangen.
def on_message(client, userdata, message):
# Decodeer de berichtpayload van bytes naar een UTF-8 gecodeerde string.
payload_str = message.payload.decode("utf-8")
# Converteer de JSON string naar een Python dictionary.
data = json.loads(payload_str)
# Print een bericht uit met de ontvangen data en het topic waarop het bericht is ontvangen.
print(f"Message received on topic {message.topic}: {data}")
# Het hoofdgedeelte van het script wordt alleen uitgevoerd als dit script als hoofdscript wordt gedraaid.
if __name__ == "__main__":
# Specificeer het MQTT-topic waarop geabonneerd moet worden.
topic = "goodgarden/relative_humidity"
subscribe.callback(on_message, topic)
# Abonneer op het opgegeven topic en roep de on_message functie aan als callback voor ontvangen berichten.
subscribe.callback(on_message, topic)

View File

@@ -1,13 +1,24 @@
# De json module wordt geïmporteerd om te werken met JSON-geformatteerde data.
import json
# Van de paho.mqtt bibliotheek wordt de subscribe module geïmporteerd.
# Deze module stelt ons in staat om ons te abonneren op MQTT-topics en berichten te ontvangen.
from paho.mqtt import subscribe
# Definitie van de functie on_message die wordt aangeroepen wanneer een bericht wordt ontvangen.
def on_message(client, userdata, message):
# De payload van het bericht, dat in bytes is, wordt gedecodeerd naar een UTF-8 string.
payload_str = message.payload.decode("utf-8")
# De gedecodeerde string, die in JSON-formaat is, wordt omgezet naar een Python dictionary.
data = json.loads(payload_str)
# Een bericht wordt geprint naar de console met de informatie over het ontvangen bericht.
print(f"Message received on topic {message.topic}: {data}")
# Dit blok zorgt ervoor dat de volgende code alleen uitgevoerd wordt als dit script direct wordt uitgevoerd.
if __name__ == "__main__":
# Het MQTT-topic waarop het script zich abonneert, gerelateerd aan de elektrische geleidbaarheid van de bodem.
topic = "goodgarden/soil_electric_conductivity"
subscribe.callback(on_message, topic)
# De subscribe.callback functie wordt aangeroepen met de on_message functie als callback.
# Dit start het proces van luisteren naar berichten op het gespecificeerde topic.
subscribe.callback(on_message, topic)

View File

@@ -1,13 +1,22 @@
# Importeer de json module om te werken met JSON data.
import json
# Importeer de subscribe functie van paho.mqtt om te abonneren op MQTT berichten.
from paho.mqtt import subscribe
# Definieer een functie die wordt aangeroepen wanneer een bericht wordt ontvangen op het gespecificeerde MQTT topic.
def on_message(client, userdata, message):
# Decodeer de berichtpayload van bytes naar een UTF-8 string.
payload_str = message.payload.decode("utf-8")
# Laad de JSON string in een Python dictionary om gemakkelijk met de data te kunnen werken.
data = json.loads(payload_str)
# Print een bericht uit met de topicnaam en de ontvangen data.
print(f"Message received on topic {message.topic}: {data}")
# Het hoofdscript dat wordt uitgevoerd wanneer dit bestand direct wordt gerund.
if __name__ == "__main__":
# Specificeer het MQTT-topic waarop we willen abonneren. In dit geval luisteren we naar data over de relatieve permittiviteit van de bodem.
topic = "goodgarden/soil_relative_permittivity"
subscribe.callback(on_message, topic)
# Roep de subscribe.callback functie aan met de on_message functie als argument. Dit zorgt ervoor dat we voortdurend luisteren naar berichten op het gegeven topic.
subscribe.callback(on_message, topic)

View File

@@ -1,13 +1,22 @@
# Importeer de json module om te werken met JSON-geformatteerde data.
import json
# Importeer de subscribe functie van de paho.mqtt bibliotheek voor MQTT communicatie.
from paho.mqtt import subscribe
# Definieer de on_message functie die wordt uitgevoerd wanneer een bericht wordt ontvangen.
def on_message(client, userdata, message):
# Decodeer de payload van het bericht van bytes naar een UTF-8 gecodeerde string.
payload_str = message.payload.decode("utf-8")
# Converteer de JSON string naar een Python dictionary om het gemakkelijker te verwerken.
data = json.loads(payload_str)
# Print de ontvangen data samen met het topic waarop het bericht is ontvangen.
print(f"Message received on topic {message.topic}: {data}")
# Het hoofdgedeelte van het script dat wordt uitgevoerd als het script direct wordt aangeroepen.
if __name__ == "__main__":
# Definieer het MQTT-topic waarop we willen abonneren, in dit geval bodemtemperatuur.
topic = "goodgarden/soil_temperature"
subscribe.callback(on_message, topic)
# Start het abonneren op het opgegeven topic met de on_message functie als de callback.
subscribe.callback(on_message, topic)