pythonwebsitewerkt

This commit is contained in:
mohammedcifci78
2024-03-06 14:27:23 +01:00
parent da77a52b3b
commit b711d72b3a
27 changed files with 199 additions and 404 deletions

View File

@@ -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
}
]
}

View File

@@ -1,101 +0,0 @@
const { app, BrowserWindow,ipcMain } = require('electron'); /* TYPE IN TERMINAL: "npm install electron" */
const express = require('express'); /* TYPE IN TERMINAL: "npm install express" */
const bodyParser = require('body-parser'); /* TYPE IN TERMINAL: "npm install body-parser" */
const { PythonShell } = require('python-shell'); /* TYPE IN TERMINAL: "npm install python-shell" */
const path = require('path');
const urlElectron = path.join(__dirname, "src/index.html");
// Maak een Express-app
const server = express();
server.use(bodyParser.urlencoded({ extended: true }));
// Definieer een route voor form POST verzoeken
server.post('/submit-form', (req, res) => {
const { plant_naam, plantensoort } = req.body; // Verkrijg de plant_naam uit het formulier
const plant_geteelt = req.body.plant_geteelt == 'true' ? 'true' : 'false'; // Zorgt dat de string "true" herkent wordt
let options = {
mode: 'text',
args: [plant_naam, plantensoort, plant_geteelt], // Zet hier een variable bij om de data toe te voegen aan de databas
};
/*Om python te gebruiken*/
// ipcMain.on('request-update-temp', (event, args) => {
// let options = {
// mode: 'text',
// scriptPath: 'path/to/your/python/script',
// args: args
// };
// PythonShell.run('calculate.py', options, (err, results) => {
// if (err) {
// console.error('Error running python script', err);
// event.reply('update-temp-result', 'error');
// } else {
// console.log('Python script results:', results);
// event.reply('update-temp-result', results[0]); // Verstuur het resultaat terug naar de renderer proces
// }
// });
// });
// En dan in je renderer proces, stuur je een bericht om de update te verzoeken
ipcRenderer.send('request-update-temp', [/* hier kunnen argumenten komen die je Python script nodig heeft */]);
});
// Start de server voor verbinding met de database
const PORT = 3000;
server.listen(PORT, () => {
console.log(`Server luistert op port ${PORT}`);
});
// Maak de Electron applicatie aan met bijbehorende waardes
function createWindow() {
const mainWindow = new BrowserWindow({
width: 1280,
height: 800,
frame: false,
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
});
mainWindow.loadURL(urlElectron);
/*Is om het Python script te kunnen gebruiken*/
ipcMain.on('run-python-script', (event, args) => {
let options = {
mode: 'text',
args: args
};
PythonShell.run('../src/py/calculate.py', options, (err, results) => {
if (err)
{
console.error('Error running python script', err);
event.reply('python-script-response', 'error');
}
else
{
console.log('Python script results:', results);
event.reply('python-script-response', results);
}
});
});
}
app.whenReady().then(createWindow);
// Functionaliteit voor het openen en sluiten van de app
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});

2912
src/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,21 +0,0 @@
{
"name": "goodgarden",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "electron app.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"electron": "^23.3.13"
},
"dependencies": {
"body-parser": "^1.20.2",
"elctron": "^0.0.1-security",
"express": "^4.18.3",
"mysql2": "^3.9.1",
"python-shell": "^5.0.0"
}
}

View File

@@ -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,

View File

@@ -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)

View File

@@ -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():

View File

@@ -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)

View File

@@ -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()

View File

@@ -0,0 +1,346 @@
-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Gegenereerd op: 14 feb 2024 om 14:36
-- 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";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `goodgarden`
--
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `battery_voltage_events`
--
CREATE TABLE `battery_voltage_events` (
`id` int(10) UNSIGNED NOT NULL,
`timestamp` int(11) DEFAULT NULL,
`gateway_receive_time` varchar(50) DEFAULT NULL,
`device` int(11) DEFAULT NULL,
`value` decimal(10,5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Gegevens worden geëxporteerd voor tabel `battery_voltage_events`
--
INSERT INTO `battery_voltage_events` (`id`, `timestamp`, `gateway_receive_time`, `device`, `value`) VALUES
(1, 1707825721, '2024-02-13T12:02:01Z', 256, 4.09890),
(2, 1707837460, '2024-02-13T15:17:40Z', 322, 4.10501),
(3, 1707825721, '2024-02-13T12:02:01Z', 256, 4.09890),
(4, 1707837460, '2024-02-13T15:17:40Z', 322, 4.10501),
(5, 1707825721, '2024-02-13T12:02:01Z', 256, 4.09890),
(6, 1707837460, '2024-02-13T15:17:40Z', 322, 4.10501),
(7, 1707825721, '2024-02-13T12:02:01Z', 256, 4.09890),
(8, 1707837460, '2024-02-13T15:17:40Z', 322, 4.10501),
(9, 1707825721, '2024-02-13T12:02:01Z', 256, 4.09890),
(10, 1707837460, '2024-02-13T15:17:40Z', 322, 4.10501);
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `devices`
--
CREATE TABLE `devices` (
`id` int(10) UNSIGNED NOT NULL,
`serial_number` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`label` varchar(255) DEFAULT NULL,
`last_seen` int(11) DEFAULT NULL,
`last_battery_voltage` float DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Gegevens worden geëxporteerd voor tabel `devices`
--
INSERT INTO `devices` (`id`, `serial_number`, `name`, `label`, `last_seen`, `last_battery_voltage`) VALUES
(1, '0033889B1BAB1169', 'firefly2_0051', 'The Field', 1707765066, 4.09768),
(2, '006FE1FC316ED7D8', 'firefly2_0111', 'The Field', 1707764966, 4.10745);
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `fetch`
--
CREATE TABLE `fetch` (
`id` int(10) UNSIGNED NOT NULL,
`timestamp` int(11) DEFAULT NULL,
`gateway_receive_time` varchar(50) DEFAULT NULL,
`device` int(11) DEFAULT NULL,
`value` decimal(10,5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Gegevens worden geëxporteerd voor tabel `fetch`
--
INSERT INTO `fetch` (`id`, `timestamp`, `gateway_receive_time`, `device`, `value`) VALUES
(70, 1707851215, '2024-02-13T19:06:55Z', 322, 0.00000),
(71, 1707851215, '2024-02-13T19:06:55Z', 322, 1.52000),
(72, 1707851215, '2024-02-13T19:06:55Z', 322, 12.06000),
(73, 1707825721, '2024-02-13T12:02:01Z', 256, 4.09890),
(74, 1707837460, '2024-02-13T15:17:40Z', 322, 4.10501),
(75, 0, '', 0, 0.00000),
(76, 0, '', 0, 0.00000),
(77, 1707844638, '2024-02-13T17:17:18Z', 322, 0.00000),
(78, 1707851099, '2024-02-13T19:04:59Z', 256, 0.00000),
(79, 1707844638, '2024-02-13T17:17:18Z', 322, 71.08984),
(80, 1707851099, '2024-02-13T19:04:59Z', 256, 66.72949),
(81, 1707851215, '2024-02-13T19:06:55Z', 322, 0.00000),
(82, 1707851215, '2024-02-13T19:06:55Z', 322, 1.52000),
(83, 1707851215, '2024-02-13T19:06:55Z', 322, 12.06000),
(84, 0, '', 0, 0.00000),
(85, 0, '', 0, 0.00000),
(86, 1707844638, '2024-02-13T17:17:18Z', 322, 0.00000),
(87, 1707851099, '2024-02-13T19:04:59Z', 256, 0.00000),
(88, 1707844638, '2024-02-13T17:17:18Z', 322, 71.08984),
(89, 1707851099, '2024-02-13T19:04:59Z', 256, 66.72949),
(90, 1707825721, '2024-02-13T12:02:01Z', 256, 4.09890),
(91, 1707837460, '2024-02-13T15:17:40Z', 322, 4.10501),
(92, 0, '', 0, 0.00000),
(93, 0, '', 0, 0.00000),
(94, 1707844638, '2024-02-13T17:17:18Z', 322, 0.00000),
(95, 1707851099, '2024-02-13T19:04:59Z', 256, 0.00000),
(96, 1707844638, '2024-02-13T17:17:18Z', 322, 71.08984),
(97, 1707851099, '2024-02-13T19:04:59Z', 256, 66.72949);
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `par_events`
--
CREATE TABLE `par_events` (
`id` int(10) UNSIGNED NOT NULL,
`timestamp` int(11) DEFAULT NULL,
`gateway_receive_time` varchar(50) DEFAULT NULL,
`device` int(11) DEFAULT NULL,
`value` decimal(10,5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Gegevens worden geëxporteerd voor tabel `par_events`
--
INSERT INTO `par_events` (`id`, `timestamp`, `gateway_receive_time`, `device`, `value`) VALUES
(1, 1707844638, '2024-02-13T17:17:18Z', 322, 0.00000),
(2, 1707851099, '2024-02-13T19:04:59Z', 256, 0.00000);
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `relative_humidity_events`
--
CREATE TABLE `relative_humidity_events` (
`id` int(10) UNSIGNED NOT NULL,
`timestamp` int(11) DEFAULT NULL,
`gateway_receive_time` varchar(50) DEFAULT NULL,
`device` int(11) DEFAULT NULL,
`value` decimal(10,5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Gegevens worden geëxporteerd voor tabel `relative_humidity_events`
--
INSERT INTO `relative_humidity_events` (`id`, `timestamp`, `gateway_receive_time`, `device`, `value`) VALUES
(3, 1707844638, '2024-02-13T17:17:18Z', 322, 71.08984),
(4, 1707851099, '2024-02-13T19:04:59Z', 256, 66.72949),
(5, 1707844638, '2024-02-13T17:17:18Z', 322, 71.08984),
(6, 1707851099, '2024-02-13T19:04:59Z', 256, 66.72949);
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `soil_electric_conductivity_events`
--
CREATE TABLE `soil_electric_conductivity_events` (
`id` int(10) UNSIGNED NOT NULL,
`timestamp` int(11) DEFAULT NULL,
`gateway_receive_time` varchar(50) DEFAULT NULL,
`device` int(11) DEFAULT NULL,
`value` decimal(10,5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Gegevens worden geëxporteerd voor tabel `soil_electric_conductivity_events`
--
INSERT INTO `soil_electric_conductivity_events` (`id`, `timestamp`, `gateway_receive_time`, `device`, `value`) VALUES
(3, 1707851215, '2024-02-13T19:06:55Z', 322, 0.00000);
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `soil_relative_permittivity_events`
--
CREATE TABLE `soil_relative_permittivity_events` (
`id` int(10) UNSIGNED NOT NULL,
`timestamp` int(11) DEFAULT NULL,
`gateway_receive_time` varchar(50) DEFAULT NULL,
`device` int(11) DEFAULT NULL,
`value` decimal(10,5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Gegevens worden geëxporteerd voor tabel `soil_relative_permittivity_events`
--
INSERT INTO `soil_relative_permittivity_events` (`id`, `timestamp`, `gateway_receive_time`, `device`, `value`) VALUES
(3, 1707851215, '2024-02-13T19:06:55Z', 322, 1.52000);
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `soil_temperature_events`
--
CREATE TABLE `soil_temperature_events` (
`id` int(10) NOT NULL,
`timestamp` int(11) DEFAULT NULL,
`gateway_receive_time` varchar(50) DEFAULT NULL,
`device` int(11) DEFAULT NULL,
`value` decimal(10,5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Gegevens worden geëxporteerd voor tabel `soil_temperature_events`
--
INSERT INTO `soil_temperature_events` (`id`, `timestamp`, `gateway_receive_time`, `device`, `value`) VALUES
(3, 1707851215, '2024-02-13T19:06:55Z', 322, 12.06000);
--
-- Indexen voor geëxporteerde tabellen
--
--
-- Indexen voor tabel `battery_voltage_events`
--
ALTER TABLE `battery_voltage_events`
ADD PRIMARY KEY (`id`);
--
-- Indexen voor tabel `devices`
--
ALTER TABLE `devices`
ADD PRIMARY KEY (`id`);
--
-- Indexen voor tabel `fetch`
--
ALTER TABLE `fetch`
ADD PRIMARY KEY (`id`);
--
-- Indexen voor tabel `par_events`
--
ALTER TABLE `par_events`
ADD PRIMARY KEY (`id`);
--
-- Indexen voor tabel `relative_humidity_events`
--
ALTER TABLE `relative_humidity_events`
ADD PRIMARY KEY (`id`);
--
-- Indexen voor tabel `soil_electric_conductivity_events`
--
ALTER TABLE `soil_electric_conductivity_events`
ADD PRIMARY KEY (`id`);
--
-- Indexen voor tabel `soil_relative_permittivity_events`
--
ALTER TABLE `soil_relative_permittivity_events`
ADD PRIMARY KEY (`id`);
--
-- Indexen voor tabel `soil_temperature_events`
--
ALTER TABLE `soil_temperature_events`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT voor geëxporteerde tabellen
--
--
-- AUTO_INCREMENT voor een tabel `battery_voltage_events`
--
ALTER TABLE `battery_voltage_events`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;
--
-- AUTO_INCREMENT voor een tabel `devices`
--
ALTER TABLE `devices`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT voor een tabel `fetch`
--
ALTER TABLE `fetch`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=98;
--
-- AUTO_INCREMENT voor een tabel `par_events`
--
ALTER TABLE `par_events`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT voor een tabel `relative_humidity_events`
--
ALTER TABLE `relative_humidity_events`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
--
-- AUTO_INCREMENT voor een tabel `soil_electric_conductivity_events`
--
ALTER TABLE `soil_electric_conductivity_events`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT voor een tabel `soil_relative_permittivity_events`
--
ALTER TABLE `soil_relative_permittivity_events`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT voor een tabel `soil_temperature_events`
--
ALTER TABLE `soil_temperature_events`
MODIFY `id` int(10) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -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;
}

View File

@@ -0,0 +1 @@
{"version":3,"sources":["style.scss","style.css"],"names":[],"mappings":"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","file":"style.css"}

View File

@@ -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%;
}
}
}

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 107 KiB

View File

Before

Width:  |  Height:  |  Size: 19 MiB

After

Width:  |  Height:  |  Size: 19 MiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -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();

View File

@@ -1 +0,0 @@
{"version":3,"sources":["style.scss","style.css"],"names":[],"mappings":"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","file":"style.css"}

View File

@@ -4,8 +4,8 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./css/style.css">
<script src="../script/main.js" defer></script>
<link rel="stylesheet" href="../static/css/style.css">
<script src="../static/js/main.js" defer></script>
<!-- <script src="../script/main.py"></script> -->
</head>
<body>
@@ -16,16 +16,16 @@
<table id="planten">
<tr>
<td>
<a href="../src/kas_informatie.html">
<a href="../templates/kas_informatie.html">
<article class="article-1">
<img src="images/Icon awesome-apple-alt.png" alt="">
<img src="../static/images/Icon awesome-apple-alt.png"alt="">
<h2>Tomaat</h2>
</article>
</a>
</td>
<td>
<article>
<img src="images/Icon awesome-apple-alt.png" alt="">
<img src="../static/images/Icon awesome-apple-alt.png" alt="">
<h2>Tomaat</h2>
</article>
</td>
@@ -34,13 +34,13 @@
<tr>
<td>
<article>
<img src="images/Icon awesome-apple-alt.png" alt="">
<img src="../static/images/Icon awesome-apple-alt.png" alt="">
<h2>Tomaat</h2>
</article>
</td>
<td>
<article>
<img src="images/Icon awesome-apple-alt.png" alt="">
<img src="../static/images/Icon awesome-apple-alt.png" alt="">
<h2>Tomaat</h2>
</article>
</td>
@@ -49,13 +49,13 @@
<tr>
<td>
<article>
<img src="images/Icon awesome-apple-alt.png" alt="">
<img src="../static/images/Icon awesome-apple-alt.png" alt="">
<h2>Tomaat</h2>
</article>
</td>
<td>
<article>
<img src="images/Icon awesome-apple-alt.png" alt="">
<img src="../static/images/Icon awesome-apple-alt.png" alt="">
<h2>Tomaat</h2>
</article>
</td>
@@ -64,13 +64,13 @@
<tr>
<td>
<article>
<img src="images/Icon awesome-apple-alt.png" alt="">
<img src="../static/images/Icon awesome-apple-alt.png" alt="">
<h2>Tomaat</h2>
</article>
</td>
<td>
<article id="modalButton" onclick="openModal()">
<img id="toevoegen"src="images/Toevoegen.png" alt="">
<img id="toevoegen"src="../static/images/toevoegen.png" alt="">
</article>
</td>
</tr>
@@ -85,7 +85,7 @@
</section>
<!-- White space -->
<section>
<p>a</p>
<p></p>
</section>
<section class="kant-rechts">
<section id="metingen">

View File

@@ -3,15 +3,16 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="../src/css/style.css" />
<link rel="stylesheet" href="../static/css/style.css" />
<!-- <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> -->
<script src="../src/js/main.js" defer></script>
<script src="../static/js/main.js" defer></script>
<title>Informatie Kas</title>
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='src/py/script/static/css/style.css') }}">
</head>
<body>
<section class="mainContainer">
<article>
<img src="../src/images/logo.png" class="goodgarden-logo">
<img src="../static/images/logo.png" class="goodgarden-logo">
</article>
<section class="mainBorder informatie-kas-main-container">
<article>
@@ -21,20 +22,20 @@
<article class="algemeen-overzicht">
<table class="table-informatie-kas">
<tr class="tr-informatie-kas">
<td>Dagen tot Oogst</td>
<td>12</td>
</tr>
<tr class="tr-informatie-kas">
<td>Dagen in Kas</td>
<td>2</td>
</tr>
<td>Device </td>
<td id="battery_data_device"></td>
</tr>
<tr class="tr-informatie-kas">
<td>Batterij Voltage</td>
<td id="battery_data_voltage"></td>
</tr>
<tr class="tr-informatie-kas">
<td>Tijden</td>
<td id="battery_data_time"></td>
</tr>
<tr class="tr-informatie-kas">
<td>Tevredenheid</td>
<td>80%</td>
</tr>
<tr class="tr-informatie-kas">
<td>Aandachtspunten</td>
<td>1</td>
<td>-</td>
</tr>
</table>
</article>