From be3beb5fc3387891022cc604c397dfe9c90dfb13 Mon Sep 17 00:00:00 2001 From: mohammedcifci78 Date: Fri, 9 Feb 2024 11:13:10 +0100 Subject: [PATCH 1/2] databaseupdate --- index.py | 97 +++++++++++++++++++++++++++---------------------------- script.js | 0 2 files changed, 48 insertions(+), 49 deletions(-) delete mode 100644 script.js diff --git a/index.py b/index.py index d0d2abe..d7be32e 100644 --- a/index.py +++ b/index.py @@ -1,45 +1,9 @@ import mysql.connector import requests +import time -# Verbinding maken met de database -mydb = mysql.connector.connect( - host="localhost", - user="root", - password="", - database="goodgarden" -) - -# Controleren of de verbinding succesvol is -if mydb.is_connected(): - print("Connected to the database") -else: - print("Failed to connect to the database") - -try: - # Maak een cursor aan - mycursor = mydb.cursor() - - # Voer de query uit om gegevens op te halen - mycursor.execute("SELECT * FROM goodgarden.sensor_data") - - # Haal de resultaten op - myresult = mycursor.fetchall() - - # Print de resultaten - for x in myresult: - print(x) - -except mysql.connector.Error as err: - print(f"Error: {err}") - -finally: - # Sluit de cursor en de databaseverbinding - mycursor.close() - mydb.close( - - ) - -def fetch_data(): +def gegevens_ophalen_en_database_bijwerken(): + # API-verzoek url = "https://garden.inajar.nl/api/battery_voltage_events/?format=json" headers = { "Authorization": "Token 33bb3b42452306c58ecedc3c86cfae28ba22329c" @@ -47,16 +11,51 @@ def fetch_data(): try: response = requests.get(url, headers=headers) - response.raise_for_status() # Raise an exception for 4xx and 5xx status codes + response.raise_for_status() - data = response.json() - load_data(data) - except requests.exceptions.RequestException as e: - print(f"Error fetching data: {e}") + data = response.json().get('results', []) -def load_data(data): - api_data = data - print("Data loaded:", api_data) + print("API-reactie:") + print(data) -if __name__ == "__main__": - fetch_data() + if not isinstance(data, list): + raise ValueError("De API-reactie wordt niet herkend als een lijst van dictionaries.") + + # Verbinding maken met de database + connection = mysql.connector.connect( + host="localhost", + user="root", + password="", + database="goodgarden" + ) + + if connection.is_connected(): + cursor = connection.cursor() + + # Database bijwerken met API-gegevens + for entry in data: + timestamp = entry.get("timestamp") + gateway_receive_time = entry.get("gateway_receive_time") + device = entry.get("device") + value = entry.get("value") + + # Veronderstel dat de kolommen van de 'sensor_data'-tabel timestamp, gateway_receive_time, device, en value zijn + sql_update_query = f"INSERT INTO goodgarden.sensor_data (timestamp, gateway_receive_time, device, value) VALUES ({timestamp}, '{gateway_receive_time}', {device}, {value})" + cursor.execute(sql_update_query) + connection.commit() + + print("Database succesvol bijgewerkt") + + except Exception as e: + print(f"Fout bijwerken database: {e}") + + finally: + if connection.is_connected(): + cursor.close() + connection.close() + print("MySQL-verbinding is gesloten") + +# Zet een timer op om de functie elke 10 minuten uit te voeren +while True: + gegevens_ophalen_en_database_bijwerken() + time.sleep(60) # 600 seconden = 10 minuten diff --git a/script.js b/script.js deleted file mode 100644 index e69de29..0000000 From b953225a4b347c7eaf198e2cebb08d5ef9eeb023 Mon Sep 17 00:00:00 2001 From: mohammedcifci78 Date: Fri, 9 Feb 2024 11:46:55 +0100 Subject: [PATCH 2/2] nietswerkt(nogfixed) --- goodGarden.sql | 13 +++++++------ index.py | 33 +++++++++++++++++++-------------- updatedata.sql | 2 ++ 3 files changed, 28 insertions(+), 20 deletions(-) create mode 100644 updatedata.sql diff --git a/goodGarden.sql b/goodGarden.sql index 06d9991..1345a38 100644 --- a/goodGarden.sql +++ b/goodGarden.sql @@ -1,16 +1,17 @@ -DROP DATABASE IF EXISTS goodgarden; -CREATE DATABASE goodgarden; +CREATE DATABASE IF NOT EXISTS goodgarden; +USE goodgarden; -CREATE TABLE goodgarden.sensor_data ( +CREATE TABLE IF NOT EXISTS goodgarden.sensor_data ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, timestamp INT, gateway_receive_time VARCHAR(50), device INT, - value DECIMAL(10, 5), + value DECIMAL(12, 8), -- Aangepaste precisie naar DECIMAL(12, 8) PRIMARY KEY (id) ); -- Invoegen van gegevens in de 'sensor_data'-tabel INSERT INTO goodgarden.sensor_data (timestamp, gateway_receive_time, device, value) -VALUES (1707295162, '2024-02-07T08:39:22Z', 256, 4.107448101043701), - (1707261284, '2024-02-06T23:14:44Z', 322, 4.111111164093018); +VALUES + (1707295162, '2024-02-07T08:39:22Z', 256, 4.107448101043701), + (1707261284, '2024-02-06T23:14:44Z', 322, 4.111111164093018); diff --git a/index.py b/index.py index d7be32e..0f1db17 100644 --- a/index.py +++ b/index.py @@ -2,14 +2,14 @@ import mysql.connector import requests import time -def gegevens_ophalen_en_database_bijwerken(): - # API-verzoek - url = "https://garden.inajar.nl/api/battery_voltage_events/?format=json" - headers = { - "Authorization": "Token 33bb3b42452306c58ecedc3c86cfae28ba22329c" - } - +while True: try: + # API-verzoek + url = "https://garden.inajar.nl/api/battery_voltage_events/?format=json" + headers = { + "Authorization": "Token 33bb3b42452306c58ecedc3c86cfae28ba22329c" + } + response = requests.get(url, headers=headers) response.raise_for_status() @@ -39,9 +39,13 @@ def gegevens_ophalen_en_database_bijwerken(): device = entry.get("device") value = entry.get("value") - # Veronderstel dat de kolommen van de 'sensor_data'-tabel timestamp, gateway_receive_time, device, en value zijn - sql_update_query = f"INSERT INTO goodgarden.sensor_data (timestamp, gateway_receive_time, device, value) VALUES ({timestamp}, '{gateway_receive_time}', {device}, {value})" - cursor.execute(sql_update_query) + # Gebruik van prepared statements om SQL-injectie te voorkomen + sql_update_query = ( + "UPDATE goodgarden.sensor_data " + "SET timestamp=%s, gateway_receive_time=%s, device=%s " + "WHERE value=%s" + ) + cursor.execute(sql_update_query, (timestamp, gateway_receive_time, device, value)) connection.commit() print("Database succesvol bijgewerkt") @@ -55,7 +59,8 @@ def gegevens_ophalen_en_database_bijwerken(): connection.close() print("MySQL-verbinding is gesloten") -# Zet een timer op om de functie elke 10 minuten uit te voeren -while True: - gegevens_ophalen_en_database_bijwerken() - time.sleep(60) # 600 seconden = 10 minuten + # Voeg deze regel toe binnen de while-loop + print("Aantal gegevens uit de API:", len(data)) + + # Voeg een pauze toe van 10 minuten voordat de lus opnieuw wordt uitgevoerd + time.sleep(600) diff --git a/updatedata.sql b/updatedata.sql new file mode 100644 index 0000000..21cc3cd --- /dev/null +++ b/updatedata.sql @@ -0,0 +1,2 @@ +USE goodgarden; +ALTER TABLE goodgarden.sensor_data MODIFY COLUMN value DECIMAL(12, 2);