This commit is contained in:
Atilla
2024-04-12 21:23:08 +02:00
parent 5d58ac6cf0
commit 49b0a66cb4
34 changed files with 454 additions and 433 deletions

View File

@@ -1,17 +1,8 @@
import mysql.connector
import requests
from datetime import datetime, timezone, timedelta
import time
import sys
# Function to make a connection to the database
def database_connect():
return mysql.connector.connect(
host="localhost",
user="root",
password="",
database="goodgarden"
)
from db_connect import database_connect
# Functie voor het aanmaken van gegevens in de database
def create_data(url, access_token, repeat_count=5):
@@ -197,7 +188,7 @@ def delete_data(record_id):
if __name__ == "__main__":
url = "https://garden.inajar.nl/api/battery_voltage_events/?format=json"
access_token = "33bb3b42452306c58ecedc3c86cfae28ba22329c" # Vervang dit door je werkelijke toegangstoken
access_token = "33bb3b42452306c58ecedc3c86cfae28ba22329c"
# Je kunt repeat_count wijzigen om te bepalen hoe vaak je de bewerking wilt herhalen
repeat_count = 10

View File

@@ -1,5 +1,5 @@
# 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.

View File

@@ -1,34 +1,26 @@
import sys
import json
import mysql.connector #** TYPE IN TERMINAL: "pip install mysql-connector-python"
from db_connect import database_connect
from mysql.connector import Error
# Voeg de data uit het formulier toe aan de database
def insert_plant_name(plant_naam, plantensoort, plant_geteelt):
# Als er "true" is meegeven als waarde dan komt in de database 1 anders 0 (false)
# Als er "true" is meegegeven als waarde dan komt in de database 1 anders 0 (false)
plant_geteelt_value = 1 if plant_geteelt.lower() == "true" else 0
try:
connection = mysql.connector.connect(
host='localhost',
database='goodgarden',
user='root',
password=''
)
# Gebruik de verbinding die teruggegeven wordt door de database_connect functie uit de db_connect module
connection = database_connect()
# Als er verbinding gemaakt kan worden voer dan onderstaande query uit
if connection.is_connected():
# De crusor() zorgt ervoor dat er een verbinding met de database gelegt kan worden en de data gemanipuleerd
cursor = connection.cursor()
query = "INSERT INTO goodgarden.planten (plant_naam, plantensoort, plant_geteelt) VALUES (%s, %s, %s)"
cursor.execute(query, (plant_naam, plantensoort, plant_geteelt_value)) # "%s" wordt hier ingevuld doormiddel van de variable (parameter)
connection.commit()
print(json.dumps({"success": True}))
else:
print(json.dumps({"success": False, "error": "Database connection failed"}))
# Je kunt de controle of de verbinding succesvol is rechtstreeks in de database_connect functie uitvoeren
# De cursor() zorgt ervoor dat er een verbinding met de database gelegd kan worden en de data gemanipuleerd
cursor = connection.cursor()
query = "INSERT INTO goodgarden.planten (plant_naam, plantensoort, plant_geteelt) VALUES (%s, %s, %s)"
cursor.execute(query, (plant_naam, plantensoort, plant_geteelt_value)) # "%s" wordt hier ingevuld doormiddel van de variable (parameter)
connection.commit()
print(json.dumps({"success": True}))
except Error as e:
print(json.dumps({"success": False, "error": str(e)}))

View File

@@ -1,4 +1,5 @@
import json
from db_connect import database_connect
from paho.mqtt import subscribe

View File

@@ -0,0 +1,14 @@
[
{
"id": 1,
"plant_naam": "Tomatenplant",
"plantensoort": "Groente",
"plant_geteelt": 1
},
{
"id": 15,
"plant_naam": "ergerg",
"plantensoort": "ergerwgergerg",
"plant_geteelt": 1
}
]

View File

@@ -1,4 +1,3 @@
# 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.
@@ -11,23 +10,6 @@ def on_message(client, userdata, message):
# 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.
@@ -35,4 +17,4 @@ if __name__ == "__main__":
# Definieer het topic waarop geabonneerd wordt.
topic = "goodgarden/par_events"
# 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)
subscribe.callback(on_message, topic)

View File

@@ -1,17 +1,8 @@
# 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
# Functie om een verbinding met de database te maken.
def database_connect():
return mysql.connector.connect(
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.
)
from db_connect import database_connect # Gebruik deze geïmporteerde functie
# Functie om het absolute pad van de huidige directory te krijgen.
def get_current_directory():
@@ -33,7 +24,7 @@ def fetch_plant_and_write_to_json():
# Verkrijg het absolute pad van de huidige directory.
current_directory = get_current_directory()
# Construeer het absolute pad voor het JSON-bestand.
json_file_path = os.path.join(current_directory, 'plants.json')
json_file_path = os.path.join(current_directory, './json/plants.json')
# Schrijf de opgehaalde gegevens naar een JSON-bestand.
with open(json_file_path, 'w') as json_file:
@@ -41,13 +32,13 @@ def fetch_plant_and_write_to_json():
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)
print(f"Error fetching data from MySQL table: {error}")
finally:
# Sluit de cursor en de verbinding, indien ze bestaan.
if 'cursor' in locals():
cursor.close()
if connection.is_connected():
if connection and connection.is_connected():
connection.close()
# Roept de functie aan om gegevens op te halen en naar JSON te schrijven.

View File

@@ -1,20 +0,0 @@
[
{
"id": 1,
"plant_naam": "Tomatenplant",
"plantensoort": "Groente",
"plant_geteelt": 1
},
{
"id": 15,
"plant_naam": "Sla",
"plantensoort": "Groente",
"plant_geteelt": 1
},
{
"id": 16,
"plant_naam": "Aardappel",
"plantensoort": "Groente",
"plant_geteelt": 1
}
]

View File

@@ -1,4 +1,3 @@
# Importeer de json module voor het werken met JSON data.
import json
# Importeer de subscribe functie uit de paho.mqtt module voor MQTT-communicatie.

View File

@@ -1,4 +1,3 @@
# 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.

View File

@@ -1,4 +1,3 @@
# 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.

View File

@@ -1,4 +1,3 @@
# 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.