36 lines
1022 B
Python
36 lines
1022 B
Python
from re import L
|
|
from flask import Flask, request
|
|
|
|
from api.node import node_reading, node_register
|
|
|
|
import json
|
|
|
|
app = Flask(__name__)
|
|
|
|
state = {
|
|
"nodes": {},
|
|
"max_id": 0
|
|
}
|
|
|
|
@app.route("/")
|
|
def home():
|
|
out = ""
|
|
for node in state["nodes"].values():
|
|
most_recent_temperature = node.get_temperature_readings()[-1]
|
|
most_recent_humidity = node.get_humidity_readings()[-1]
|
|
|
|
out += f"<h2>{node.get_name()}</h2>\n"
|
|
out += f"Temperature: {most_recent_temperature[0]}C (Minimum: {node.get_min_temperature()}C, Maximum: {node.get_max_temperature()}C\n"
|
|
out += f"Humidity: {most_recent_humidity[0]}% (Minimum: {node.get_min_humidity()}%, Maximum: {node.get_max_humidity()}%)\n"
|
|
|
|
return out
|
|
|
|
# API functions
|
|
@app.route("/api/register", methods=["POST"])
|
|
def route_api_register():
|
|
return node_register(request, state)
|
|
|
|
@app.route("/api/<int:node_id>/reading", methods=["POST"])
|
|
def route_api_reading(node_id: int):
|
|
return node_reading(node_id, request, state)
|