Files
goodgarden/app.py
2024-04-10 13:59:00 +02:00

88 lines
2.6 KiB
Python

from flask import Flask, render_template, jsonify, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
import mysql.connector
import requests
app = Flask(__name__)
def database_connect():
try:
connection = mysql.connector.connect(
host="localhost",
user="root",
password="",
database="goodgarden"
)
return connection
except Exception as e:
print("Database connection failed:", e)
return None
# Function to get data from the MySQL database
def get_database_data():
mydb = database_connect()
if mydb and mydb.is_connected():
cursor = mydb.cursor(dictionary=True) # Enable dictionary result
# Query to retrieve the latest battery voltage data
query = "SELECT label, last_seen, last_battery_voltage, device_id FROM devices"
cursor.execute(query)
battery_data = cursor.fetchall() # Fetch all rows
mydb.close()
return battery_data
@app.route('/', methods=['GET'])
def get_data():
battery_data = get_database_data()
if battery_data is None or len(battery_data) == 0:
return jsonify({"error": "Failed to fetch data from database"})
return jsonify(battery_data) # Directly return the list of dictionaries as JSON
def get_weather_data():
api_key = "05ddd06644"
location = "Leiden"
url = f"https://weerlive.nl/api/weerlive_api_v2.php?key={api_key}&locatie={location}"
response = requests.get(url).json()
return response
@app.route('/weather', methods=['GET'])
def get_weather():
weather_response = get_weather_data()
if 'error' in weather_response:
return jsonify({"error": "Kon weerdata niet ophalen"})
live_weather = weather_response.get('liveweer', [])
weather_forecast = weather_response.get('wk_verw', [])
day_forecast = weather_response.get('wk_verw', []) # Dagverwachtingen
weather_data = {
"live_weather": live_weather[0] if live_weather else {},
"weather_forecast": weather_forecast,
"day_forecast": day_forecast # Voeg de dagverwachtingen toe aan de weerdata
}
return jsonify(weather_data)
def get_planten_data():
mydb = database_connect()
if mydb and mydb.is_connected():
cursor = mydb.cursor(dictionary=True) # Corrected from corsor to cursor
query = "SELECT id, plant_naam, plantensoort, plant_geteelt FROM planten"
cursor.execute(query)
planten_data = cursor.fetchall() # Fetch all rows
mydb.close()
return planten_data
if __name__ == "__main__":
app.run(host="127.0.0.1", port=5000)