from http.server import BaseHTTPRequestHandler, HTTPServer
from datetime import datetime
import json
import matplotlib.pyplot as plt
import mimetypes
mimetypes.add_type("image/png", ".png")
# Opening JSON file
f = open("data.json")
# returns JSON object as a dictionary
data = json.load(f)
sensors = dict()
# Iterating through the json list
for i in data["sensors"]:
sensors[i["id"]] = [i["type"], i["unit"], i["readings"]]
# Closing file
f.close()
def create_plot(id: str, unit: str, xaxis: list, yaxis: list):
plt.plot(xaxis, yaxis)
plt.title(id)
plt.xlabel("Time")
plt.ylabel(unit)
plt.savefig(f"plots/{id}.png") # Save to file
plt.close()
htmldata = ""
def sortfunc(körber):
return körber
for i in sensors:
type = sensors[i][0]
unit = sensors[i][1]
readings = ""
datapoints: list = []
sensorrange = len(sensors[i][2]) if len(sensors[i][2]) < 5 else 5
for j in range(sensorrange):
datapoints.append([])
ts = sensors[i][2][j]["ts"]
value = sensors[i][2][j]["value"]
datapoints[j].append(ts)
datapoints[j].append(value)
datapoints[j].append(unit)
datapoints.sort(key=sortfunc, reverse=True)
graphdata: list = [[], []]
for j in datapoints:
ts = j[0]
time = datetime.fromtimestamp(ts).strftime("%d.%m.%Y %H:%M.%S")
timeNoDate = datetime.fromtimestamp(ts).strftime("%H:%M.%S")
value = j[1]
unit = j[2]
# print(f"{time} {j}")
readings += f"{time}> {value}{unit}
"
graphdata[0].append(timeNoDate)
graphdata[1].append(value)
create_plot(i, unit, graphdata[0], graphdata[1])
htmldata += f"""
Id: {i}
Type: {type}
Readings: