From a73fa98a5cba6612eb1c2416f468f1ddcbbf3216 Mon Sep 17 00:00:00 2001 From: mohammedcifci78 Date: Wed, 6 Mar 2024 14:27:23 +0100 Subject: [PATCH] pythonwebsitewerkt --- .gitignore | 5 +- .hintrc | 8 ++ src/app.js => app.js | 2 +- app.py | 56 ++++++++ src/package-lock.json => package-lock.json | 0 src/package.json => package.json | 0 src/DUMMY.json | 123 ----------------- src/py/{script => }/__init__.py | 0 src/py/script/DUMMY.json | 14 +- src/py/script/app.py | 33 ----- src/py/script/battery_voltage_events.py | 2 +- src/py/script/fetch.py | 73 ---------- src/py/script/fetch_data.py | 57 -------- src/py/script/{main.py => goodgarden} | 0 .../__init__.py => script/goodgarden.db} | 0 .../py/script/goodgarden.sql | 5 + src/py/static/{ => css}/style.css | 22 +-- src/py/static/css/style.css.map | 1 + src/py/static/{ => css}/style.scss | 128 +++++++++--------- .../static}/images/Icon awesome-apple-alt.png | Bin src/{ => py/static}/images/Toevoegen.png | Bin src/{ => py/static}/images/achtergrond.png | Bin src/{ => py/static}/images/logo.png | Bin src/py/static/{ => js}/main.js | 18 +++ src/py/static/style.css.map | 1 - src/py/templates/index.html | 24 ++-- src/py/templates/kas_informatie.html | 31 +++-- 27 files changed, 199 insertions(+), 404 deletions(-) create mode 100644 .hintrc rename src/app.js => app.js (97%) create mode 100644 app.py rename src/package-lock.json => package-lock.json (100%) rename src/package.json => package.json (100%) delete mode 100644 src/DUMMY.json rename src/py/{script => }/__init__.py (100%) delete mode 100644 src/py/script/app.py delete mode 100644 src/py/script/fetch.py delete mode 100644 src/py/script/fetch_data.py rename src/py/script/{main.py => goodgarden} (100%) rename src/py/{templates/__init__.py => script/goodgarden.db} (100%) rename goodGarden.sql => src/py/script/goodgarden.sql (99%) rename src/py/static/{ => css}/style.css (86%) create mode 100644 src/py/static/css/style.css.map rename src/py/static/{ => css}/style.scss (75%) rename src/{ => py/static}/images/Icon awesome-apple-alt.png (100%) rename src/{ => py/static}/images/Toevoegen.png (100%) rename src/{ => py/static}/images/achtergrond.png (100%) rename src/{ => py/static}/images/logo.png (100%) rename src/py/static/{ => js}/main.js (87%) delete mode 100644 src/py/static/style.css.map diff --git a/.gitignore b/.gitignore index 40b878d..53452a3 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -node_modules/ \ No newline at end of file +node_modules/ +__pycache__/ +venv/ +.vscode/ diff --git a/.hintrc b/.hintrc new file mode 100644 index 0000000..058c88a --- /dev/null +++ b/.hintrc @@ -0,0 +1,8 @@ +{ + "extends": [ + "development" + ], + "hints": { + "axe/text-alternatives": "off" + } +} \ No newline at end of file diff --git a/src/app.js b/app.js similarity index 97% rename from src/app.js rename to app.js index 7c74b7f..f8a7918 100644 --- a/src/app.js +++ b/app.js @@ -61,7 +61,7 @@ function createWindow() { } }); - mainWindow.loadURL(urlElectron); + mainWindow.loadFile(path.join(__dirname, 'src', 'py', 'templates', 'index.html')); /*Is om het Python script te kunnen gebruiken*/ ipcMain.on('run-python-script', (event, args) => { diff --git a/app.py b/app.py new file mode 100644 index 0000000..379cc3c --- /dev/null +++ b/app.py @@ -0,0 +1,56 @@ +from flask import Flask, render_template, jsonify +import requests +import mysql.connector # Import MySQL connector + +app = Flask(__name__, template_folder='src/py/templates', static_folder='src/py/static') + +# Function to get data from the API +def get_api_data(): + api_url = "https://garden.inajar.nl/api/battery_voltage_events/?format=json" + access_token = "33bb3b42452306c58ecedc3c86cfae28ba22329c" # Replace this with your actual access token + + headers = {"Authorization": f"Token {access_token}"} + response = requests.get(api_url, headers=headers) + + if response.ok: + return response.json().get('results', []) + else: + print(f"Error fetching data from the API. Status code: {response.status_code}") + return [] + +# Function to get data from the MySQL database +def get_database_data(): + connection = mysql.connector.connect( + host='localhost', + user='root', + password='', + database='goodgarden' # Specify the correct database name here + ) + cursor = connection.cursor() + + # Query to retrieve the latest battery voltage data + query = "SELECT timestamp, gateway_receive_time, device, value FROM battery_voltage_events ORDER BY timestamp DESC LIMIT 1" + cursor.execute(query) + battery_data = cursor.fetchone() + + connection.close() + + return battery_data + +@app.route('/') +def index(): + # Get data from the API + api_data = get_api_data() + print("API Data:", api_data) # Add this line for debugging + + # Get data from the database + battery_data = get_database_data() + print("Battery Data:", battery_data) # Add this line for debugging + + # Pass data to the HTML template + return render_template('kas_informatie.html', api_data=api_data, battery_data=battery_data) + + + +if __name__ == "__main__": + app.run(debug=True) diff --git a/src/package-lock.json b/package-lock.json similarity index 100% rename from src/package-lock.json rename to package-lock.json diff --git a/src/package.json b/package.json similarity index 100% rename from src/package.json rename to package.json diff --git a/src/DUMMY.json b/src/DUMMY.json deleted file mode 100644 index 98acdaf..0000000 --- a/src/DUMMY.json +++ /dev/null @@ -1,123 +0,0 @@ - - // Deze spanningswaarden zijn relatief hoog, wat suggereert dat de batterijen van de sensoren goed opgeladen zijn. De meeste sensorapparaten gebruiken batterijen die een nominale spanning van ongeveer 3,7 volt hebben (typisch voor lithium-ion batterijen) en kunnen worden beschouwd als "volledig opgeladen" wanneer ze een spanning dicht bij of iets boven 4,1 volt bereiken - "battery_voltage_events": [ - { - "timestamp": 1707825721, - "gateway_receive_time": "2024-02-13T12:02:01Z", - "device": 256, - "value": 4.098901271820068 - // Volledig opgeladen: Rond 4.2 volt. - // Nominale spanning: Ongeveer 3.7 volt. - // Kritiek laag: Minder dan 3.0 volt. - }, - { - "timestamp": 1707837460, - "gateway_receive_time": "2024-02-13T15:17:40Z", - "device": 322, - "value": 4.105006217956543 - } - ], - - - - - "devices": [ - { - "id": 256, - "serial_number": "0033889B1BAB1169", - "name": "firefly2_0051", - "label": "The Field", - "last_seen": 1707765066, - "last_battery_voltage": 4.09768009185791 - }, - { - "id": 322, - "serial_number": "006FE1FC316ED7D8", - "name": "firefly2_0111", - "label": "The Field", - "last_seen": 1707764966, - "last_battery_voltage": 4.107448101043701 - } - ], - - - - - - // Fotosyntese??? (zonlicht) - "par_events": [ - { - "timestamp": 1707844638, - "gateway_receive_time": "2024-02-13T17:17:18Z", - "device": 322, - "value": 0.0 - }, - { - "timestamp": 1707851099, - "gateway_receive_time": "2024-02-13T19:04:59Z", - "device": 256, - "value": 0.0 - } - ], - - - - - // Luchtvochtigheid - "relative_humidity_events": [ - { - "timestamp": 1707844638, - "gateway_receive_time": "2024-02-13T17:17:18Z", - "device": 322, - "value": 71.08984375 - }, - { - "timestamp": 1707851099, - "gateway_receive_time": "2024-02-13T19:04:59Z", - "device": 256, - "value": 66.7294921875 - } - ], - - - - - - // De "soil_electric_conductivity_events" gegevens wijzen op metingen van de elektrische geleidbaarheid (EC) van de bodem, een indicator van de hoeveelheid oplosbare zouten of voedingsstoffen in de bodem. EC wordt gemeten in Siemens per meter (S/m) of, voor bodemmetingen, vaak in milliSiemens per centimeter (mS/cm). Een hogere EC-waarde duidt op een hogere concentratie van opgeloste zouten, wat belangrijk is voor het bepalen van de voedingsstatus van de bodem en het beheren van de bemesting voor optimale plantengroei. - "soil_electric_conductivity_events": [ - { - "timestamp": 1707851215, - "gateway_receive_time": "2024-02-13T19:06:55Z", - "device": 322, - "value": 0.0 - } - ], - - - - - - // In de context van bodemmetingen, geeft deze waarde inzicht in het vochtgehalte van de bodem, omdat water een relatief hoge diëlektrische constante heeft in vergelijking met droge bodem of lucht. - "soil_relative_permittivity_events": [ - { - "timestamp": 1707851215, - "gateway_receive_time": "2024-02-13T19:06:55Z", - "device": 322, - "value": 1.52 - // Een waarde van 1.52 is relatief laag en suggereert dat de bodem droog kan zijn op het moment van meting. Ter referentie, de diëlektrische constante van lucht is ongeveer 1, terwijl water een diëlektrische constante heeft van ongeveer 80 bij kamertemperatuur. - } - ], - - - - //De "soil_temperature_events" gegevens bevatten informatie over de temperatuur van de bodem op een specifiek tijdstip. De waarde geeft de temperatuur van de bodem aan in graden Celsius (°C). - "soil_temperature_events": [ - { - "timestamp": 1707851215, - "gateway_receive_time": "2024-02-13T19:06:55Z", - "device": 322, - "value": 12.06 - } - ] - } - \ No newline at end of file diff --git a/src/py/script/__init__.py b/src/py/__init__.py similarity index 100% rename from src/py/script/__init__.py rename to src/py/__init__.py diff --git a/src/py/script/DUMMY.json b/src/py/script/DUMMY.json index 98acdaf..abc4c3d 100644 --- a/src/py/script/DUMMY.json +++ b/src/py/script/DUMMY.json @@ -1,14 +1,10 @@ - - // Deze spanningswaarden zijn relatief hoog, wat suggereert dat de batterijen van de sensoren goed opgeladen zijn. De meeste sensorapparaten gebruiken batterijen die een nominale spanning van ongeveer 3,7 volt hebben (typisch voor lithium-ion batterijen) en kunnen worden beschouwd als "volledig opgeladen" wanneer ze een spanning dicht bij of iets boven 4,1 volt bereiken - "battery_voltage_events": [ +{ "battery_voltage_events": [ { "timestamp": 1707825721, "gateway_receive_time": "2024-02-13T12:02:01Z", "device": 256, "value": 4.098901271820068 - // Volledig opgeladen: Rond 4.2 volt. - // Nominale spanning: Ongeveer 3.7 volt. - // Kritiek laag: Minder dan 3.0 volt. + }, { "timestamp": 1707837460, @@ -44,7 +40,6 @@ - // Fotosyntese??? (zonlicht) "par_events": [ { "timestamp": 1707844638, @@ -63,7 +58,6 @@ - // Luchtvochtigheid "relative_humidity_events": [ { "timestamp": 1707844638, @@ -83,7 +77,6 @@ - // De "soil_electric_conductivity_events" gegevens wijzen op metingen van de elektrische geleidbaarheid (EC) van de bodem, een indicator van de hoeveelheid oplosbare zouten of voedingsstoffen in de bodem. EC wordt gemeten in Siemens per meter (S/m) of, voor bodemmetingen, vaak in milliSiemens per centimeter (mS/cm). Een hogere EC-waarde duidt op een hogere concentratie van opgeloste zouten, wat belangrijk is voor het bepalen van de voedingsstatus van de bodem en het beheren van de bemesting voor optimale plantengroei. "soil_electric_conductivity_events": [ { "timestamp": 1707851215, @@ -97,20 +90,17 @@ - // In de context van bodemmetingen, geeft deze waarde inzicht in het vochtgehalte van de bodem, omdat water een relatief hoge diëlektrische constante heeft in vergelijking met droge bodem of lucht. "soil_relative_permittivity_events": [ { "timestamp": 1707851215, "gateway_receive_time": "2024-02-13T19:06:55Z", "device": 322, "value": 1.52 - // Een waarde van 1.52 is relatief laag en suggereert dat de bodem droog kan zijn op het moment van meting. Ter referentie, de diëlektrische constante van lucht is ongeveer 1, terwijl water een diëlektrische constante heeft van ongeveer 80 bij kamertemperatuur. } ], - //De "soil_temperature_events" gegevens bevatten informatie over de temperatuur van de bodem op een specifiek tijdstip. De waarde geeft de temperatuur van de bodem aan in graden Celsius (°C). "soil_temperature_events": [ { "timestamp": 1707851215, diff --git a/src/py/script/app.py b/src/py/script/app.py deleted file mode 100644 index 7cad7ea..0000000 --- a/src/py/script/app.py +++ /dev/null @@ -1,33 +0,0 @@ -from flask import Flask, render_template, jsonify -import requests - -app = Flask(__name__) - -# Functie om gegevens van de API op te halen -def get_api_data(): - api_url = "https://garden.inajar.nl/api/battery_voltage_events/?format=json" - access_token = "33bb3b42452306c58ecedc3c86cfae28ba22329c" # Vervang dit met je echte toegangstoken - - headers = {"Authorization": f"Token {access_token}"} - response = requests.get(api_url, headers=headers) - - if response.ok: - return response.json().get('results', []) - else: - print(f"Fout bij het ophalen van gegevens van de API. Statuscode: {response.status_code}") - return [] - -@app.route('/') -def index(): - return render_template('kas_informatie.html') - -@app.route('/battery_voltage_events') -def battery_voltage_events(): - # Haal gegevens op van de API - api_data = get_api_data() - - # Return de gegevens als JSON naar de frontend - return jsonify(results=api_data) - -if __name__ == "__main__": - app.run(debug=True) diff --git a/src/py/script/battery_voltage_events.py b/src/py/script/battery_voltage_events.py index 148ddb4..1c4e492 100644 --- a/src/py/script/battery_voltage_events.py +++ b/src/py/script/battery_voltage_events.py @@ -181,7 +181,7 @@ import mysql.connector import requests from datetime import datetime, timezone, timedelta import time -import GoodGarden.src.py.servermqtt as servermqtt +from py.script.servermqtt import servermqtt # Function to make a connection to the database def database_connect(): diff --git a/src/py/script/fetch.py b/src/py/script/fetch.py deleted file mode 100644 index f7f707f..0000000 --- a/src/py/script/fetch.py +++ /dev/null @@ -1,73 +0,0 @@ -import requests -import time - -from db_connect import database_connect - -# Establish a database connection -connection = database_connect() - -def fetch_and_display_all(urls, access_token): - for url in urls: - try: - headers = { - "Authorization": f"Token {access_token}" - } - response = requests.get(url, headers=headers) - response.raise_for_status() - - data = response.json() - print(f"Data from {url}:") - print(data) - load_data(data) - - except requests.exceptions.RequestException as e: - print(f"Error fetching data from {url}: {e}") - - # Wait for a certain time (e.g., 60 seconds) before making the next call - print("Waiting for the next retrieval action...") - time.sleep(10) # Time here is in seconds. - -def load_data(data): - mydb = database_connect() - if mydb.is_connected(): - mycursor = mydb.cursor() - - # Here you need to adjust the correct column names and data formats based on the API response - insert_query = """ - INSERT INTO goodgarden.fetch (timestamp, gateway_receive_time, device, value) - VALUES (%s, %s, %s, %s) - """ - for record in data['results']: # Adjust this based on the actual structure of the JSON - timestamp = record.get('timestamp', '') - gateway_receive_time = record.get('gateway_receive_time', '') - device = record.get('device', '') - value = record.get('value', '') - - print(f"Inserting data: timestamp={timestamp}, gateway_receive_time={gateway_receive_time}, device={device}, value={value}") # Print the data being inserted - - # Execute the query - mycursor.execute(insert_query, (timestamp, gateway_receive_time, device, value)) - - # Commit the changes - mydb.commit() - - # Close cursor and connection - mycursor.close() - mydb.close() - - print("Data inserted into the database.") - -if __name__ == "__main__": - urls = [ - "https://garden.inajar.nl/api/battery_voltage_events/?format=json", - "https://garden.inajar.nl/api/devices/?format=json", - "https://garden.inajar.nl/api/par_events/?format=json", - "https://garden.inajar.nl/api/relative_humidity_events/?format=json", - "https://garden.inajar.nl/api/soil_electric_conductivity_events/?format=json", - "https://garden.inajar.nl/api/soil_relative_permittivity_events/?format=json", - "https://garden.inajar.nl/api/soil_temperature_events/?format=json" - ] - - access_token = "33bb3b42452306c58ecedc3c86cfae28ba22329c" # Vervang dit met jouw echte toegangstoken - - fetch_and_display_all(urls, access_token) diff --git a/src/py/script/fetch_data.py b/src/py/script/fetch_data.py deleted file mode 100644 index 72964ce..0000000 --- a/src/py/script/fetch_data.py +++ /dev/null @@ -1,57 +0,0 @@ -import requests -import time - -from db_connect import database_connect - -def fetch_battery_voltage_events(): - url = "https://garden.inajar.nl/api/battery_voltage_events/?format=json" - headers = { - "Authorization": "Token 33bb3b42452306c58ecedc3c86cfae28ba22329c" - } - - while True: - try: - response = requests.get(url, headers=headers) - response.raise_for_status() - - data = response.json() - load_data(data) - - print("Wachten voor de volgende ophaalactie...") - time.sleep(300) # De tijd hier is in seconden. - - except requests.exceptions.RequestException as e: - print(f"Error fetching data: {e}") - # Wacht ook hier bij een fout, om niet in een snelle foutloop te komen - time.sleep(300) - -def load_data(data): - mydb = database_connect() - if mydb.is_connected(): - mycursor = mydb.cursor() - - # Hier moet je de juiste kolomnamen en dataformaten aanpassen op basis van de API-respons - insert_query = """ - INSERT INTO goodgarden.battery_voltage_events (timestamp, gateway_receive_time, device, value) - VALUES (%s, %s, %s, %s) - """ - for record in data['results']: - timestamp = record['timestamp'] - gateway_receive_time = record['gateway_receive_time'] - device = record['device'] - value = record['value'] - - # print(f"Inserting data: timestamp={timestamp}, gateway_receive_time={gateway_receive_time}, device={device}, value={value}") - mycursor.execute(insert_query, (timestamp, gateway_receive_time, device, value)) - - # Commit de wijzigingen - mydb.commit() - - # Sluit cursor en verbinding - mycursor.close() - mydb.close() - - print("Data ingevoegd in de database.") - -if __name__ == "__main__": - fetch_battery_voltage_events() \ No newline at end of file diff --git a/src/py/script/main.py b/src/py/script/goodgarden similarity index 100% rename from src/py/script/main.py rename to src/py/script/goodgarden diff --git a/src/py/templates/__init__.py b/src/py/script/goodgarden.db similarity index 100% rename from src/py/templates/__init__.py rename to src/py/script/goodgarden.db diff --git a/goodGarden.sql b/src/py/script/goodgarden.sql similarity index 99% rename from goodGarden.sql rename to src/py/script/goodgarden.sql index aca5d96..93d8664 100644 --- a/goodGarden.sql +++ b/src/py/script/goodgarden.sql @@ -7,6 +7,11 @@ -- Serverversie: 10.4.28-MariaDB -- PHP-versie: 8.2.4 +DROP DATABASE IF EXISTS goodgarden; +CREATE DATABASE goodgarden; + +USE goodgarden; + SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; diff --git a/src/py/static/style.css b/src/py/static/css/style.css similarity index 86% rename from src/py/static/style.css rename to src/py/static/css/style.css index 8e26c88..df72a6f 100644 --- a/src/py/static/style.css +++ b/src/py/static/css/style.css @@ -100,19 +100,19 @@ body .mainContainer .mainBorder #sectie-1 .grafiek .grafiek-innerbox canvas { left: 50%; transform: translate(-50%, -50%); } -body .mainContainer .mainBorder #sectie-1 .content { +body .mainContainer .mainBorder .content { display: grid; grid-template-columns: 3fr 1fr 3fr; height: 100%; } -body .mainContainer .mainBorder #sectie-1 .content .kant-links { +body .mainContainer .mainBorder .content .kant-links { grid-column: 1; } -body .mainContainer .mainBorder #sectie-1 .content .kant-links #planten { +body .mainContainer .mainBorder .content .kant-links #planten { width: 100%; border-collapse: collapse; } -body .mainContainer .mainBorder #sectie-1 .content .kant-links #planten td article { +body .mainContainer .mainBorder .content .kant-links #planten td article { height: 7rem; width: 10rem; padding: 0.6rem; @@ -126,31 +126,31 @@ body .mainContainer .mainBorder #sectie-1 .content .kant-links #planten td artic border-radius: 40px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } -body .mainContainer .mainBorder #sectie-1 .content .kant-links #planten td article #toevoegen { +body .mainContainer .mainBorder .content .kant-links #planten td article #toevoegen { height: 5rem; width: 5rem; } -body .mainContainer .mainBorder #sectie-1 .content .kant-links #planten td article h2 { +body .mainContainer .mainBorder .content .kant-links #planten td article h2 { color: gray; } -body .mainContainer .mainBorder #sectie-1 .content .kant-links #planten td article:hover { +body .mainContainer .mainBorder .content .kant-links #planten td article:hover { background-color: lightgray; } -body .mainContainer .mainBorder #sectie-1 .content .kant-rechts { +body .mainContainer .mainBorder .content .kant-rechts { grid-column: 3; } -body .mainContainer .mainBorder #sectie-1 .content .kant-rechts #metingen { +body .mainContainer .mainBorder .content .kant-rechts #metingen { border: solid 3px rgb(171, 211, 174); border-radius: 40px; } -body .mainContainer .mainBorder #sectie-1 .content .kant-rechts #metingen #main-waardes { +body .mainContainer .mainBorder .content .kant-rechts #metingen #main-waardes { display: flex; justify-content: space-evenly; padding: 0.5rem; padding-bottom: 0; width: 100%; } -body .mainContainer .mainBorder #sectie-1 .content .kant-rechts #metingen #main-waardes table { +body .mainContainer .mainBorder .content .kant-rechts #metingen #main-waardes table { display: flex; justify-content: space-around; } diff --git a/src/py/static/css/style.css.map b/src/py/static/css/style.css.map new file mode 100644 index 0000000..8802fe7 --- /dev/null +++ b/src/py/static/css/style.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["style.scss","style.css"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file diff --git a/src/py/static/style.scss b/src/py/static/css/style.scss similarity index 75% rename from src/py/static/style.scss rename to src/py/static/css/style.scss index 24bade7..4949508 100644 --- a/src/py/static/style.scss +++ b/src/py/static/css/style.scss @@ -170,88 +170,88 @@ body } } } + } + + .content + { + display: grid; + grid-template-columns: 3fr 1fr 3fr; + height: 100%; - .content + .kant { - display: grid; - grid-template-columns: 3fr 1fr 3fr; - height: 100%; - - .kant + &-links { - &-links + grid-column: 1; + + #planten { - grid-column: 1; + width: 100%; + border-collapse: collapse; - #planten + td { - width: 100%; - border-collapse: collapse; - - td + article { - article + height: 7rem; + width: 10rem; + padding: .6rem; + margin: .1rem; + margin-left: 2rem; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + border: solid 3px $primary-color; + border-radius: 40px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + + #toevoegen { - height: 7rem; - width: 10rem; - padding: .6rem; - margin: .1rem; - margin-left: 2rem; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - border: solid 3px $primary-color; - border-radius: 40px; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); - - #toevoegen - { - height: 5rem; - width: 5rem; - } - - h2 - { - color: gray; - } - - &:hover - { - background-color: lightgray; - } - - + height: 5rem; + width: 5rem; } + + h2 + { + color: gray; + } + + &:hover + { + background-color: lightgray; + } + + } } } + } - &-rechts + &-rechts + { + grid-column: 3; + // margin-right: 2rem; + + #metingen { - grid-column: 3; - // margin-right: 2rem; - #metingen + border: solid 3px $primary-color; + border-radius: 40px; + + #main-waardes { + display: flex; + justify-content: space-evenly; + padding: .5rem; + padding-bottom: 0; + width: 100%; - border: solid 3px $primary-color; - border-radius: 40px; - - #main-waardes + table { - display: flex; - justify-content: space-evenly; - padding: .5rem; - padding-bottom: 0; - width: 100%; - - table - { - display: flex; - justify-content: space-around; - // width: 100%; - } + display: flex; + justify-content: space-around; + // width: 100%; } } } diff --git a/src/images/Icon awesome-apple-alt.png b/src/py/static/images/Icon awesome-apple-alt.png similarity index 100% rename from src/images/Icon awesome-apple-alt.png rename to src/py/static/images/Icon awesome-apple-alt.png diff --git a/src/images/Toevoegen.png b/src/py/static/images/Toevoegen.png similarity index 100% rename from src/images/Toevoegen.png rename to src/py/static/images/Toevoegen.png diff --git a/src/images/achtergrond.png b/src/py/static/images/achtergrond.png similarity index 100% rename from src/images/achtergrond.png rename to src/py/static/images/achtergrond.png diff --git a/src/images/logo.png b/src/py/static/images/logo.png similarity index 100% rename from src/images/logo.png rename to src/py/static/images/logo.png diff --git a/src/py/static/main.js b/src/py/static/js/main.js similarity index 87% rename from src/py/static/main.js rename to src/py/static/js/main.js index 4ce0a61..d8b9bbc 100644 --- a/src/py/static/main.js +++ b/src/py/static/js/main.js @@ -121,4 +121,22 @@ function drawLineChart() } } + +document.addEventListener('DOMContentLoaded', function() { + var battery_data = { + device: "{{ battery_data[2] }}", + batteryVoltage: "{{ battery_data[3] }}", + time: "{{ battery_data[1] }}" + }; + + // Update HTML elements using dynamically generated IDs + document.getElementById('battery_data_device').innerText = battery_data.device; + document.getElementById('battery_data_voltage').innerText = battery_data.batteryVoltage; + document.getElementById('battery_data_time').innerText = battery_data.time; + // Add other updates as needed +}); + + + + drawLineChart(); \ No newline at end of file diff --git a/src/py/static/style.css.map b/src/py/static/style.css.map deleted file mode 100644 index d300b9e..0000000 --- a/src/py/static/style.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["style.scss","style.css"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file diff --git a/src/py/templates/index.html b/src/py/templates/index.html index 9de297b..d4befc8 100644 --- a/src/py/templates/index.html +++ b/src/py/templates/index.html @@ -4,8 +4,8 @@ Document - - + + @@ -16,16 +16,16 @@ @@ -34,13 +34,13 @@ @@ -49,13 +49,13 @@ @@ -64,13 +64,13 @@ @@ -85,7 +85,7 @@
-

a

+

diff --git a/src/py/templates/kas_informatie.html b/src/py/templates/kas_informatie.html index fad704a..226976d 100644 --- a/src/py/templates/kas_informatie.html +++ b/src/py/templates/kas_informatie.html @@ -3,15 +3,16 @@ - + - + Informatie Kas +
- +
@@ -21,20 +22,20 @@
- +
- +

Tomaat

- +

Tomaat

- +

Tomaat

- +

Tomaat

- +

Tomaat

- +

Tomaat

- +

Tomaat

- +
- - - - - - - + + + + + + + + + + + - - - - - +
Dagen tot Oogst12
Dagen in Kas2
Device
Batterij Voltage
Tijden
Tevredenheid80%
Aandachtspunten1-