From 7112d06e88cdb59f3a4d827575f752fa376bb264 Mon Sep 17 00:00:00 2001 From: mia Date: Wed, 21 May 2025 11:47:27 +0200 Subject: [PATCH] added basic webserver --- webserver/data.json | 35 ++++++++++++++++++++++++++++++ webserver/server.py | 53 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 webserver/data.json create mode 100644 webserver/server.py diff --git a/webserver/data.json b/webserver/data.json new file mode 100644 index 0000000..7a26518 --- /dev/null +++ b/webserver/data.json @@ -0,0 +1,35 @@ +{ + "location": "Building A - Lab 3", + "sensors": [ + { + "id": "sensor_001", + "type": "temperature", + "unit": "C", + "readings": [ + { "ts": 1747814400, "value": 22.5 }, + { "ts": 1747818000, "value": 23.0 }, + { "ts": 1747821600, "value": 23.7 } + ] + }, + { + "id": "sensor_002", + "type": "humidity", + "unit": "%", + "readings": [ + { "ts": 1747814400, "value": 45.2 }, + { "ts": 1747818000, "value": 47.1 }, + { "ts": 1747821600, "value": 46.8 } + ] + }, + { + "id": "sensor_003", + "type": "pressure", + "unit": "hPa", + "readings": [ + { "ts": 1747814400, "value": 1012.4 }, + { "ts": 1747818000, "value": 1012.8 }, + { "ts": 1747821600, "value": 1013.0 } + ] + } + ] +} diff --git a/webserver/server.py b/webserver/server.py new file mode 100644 index 0000000..cef3193 --- /dev/null +++ b/webserver/server.py @@ -0,0 +1,53 @@ +from http.server import BaseHTTPRequestHandler, HTTPServer +import json + +# Opening JSON file +f = open("data.json") + +# returns JSON object as a dictionary +data = json.load(f) +sensors = dict() +sensorid = None +sensortype = None +sensorunit = None +sensorreadings = None +readings = None + +# Iterating through the json list +for i in data["sensors"]: + sensorid = i["id"] + sensors[sensorid] = [i["type"], i["unit"], i["readings"]] + # if i["type"] == "temperature": + # readings = i["readings"] + + +# Closing file +f.close() + +html = "" + +for i in sensors: + type = sensors[i][0] + unit = sensors[i][1] + readings = f"{sensors[i][2][0]["ts"]}: {sensors[i][2][0]["value"]} {unit}" + html += f""" +

Id: {i}

+

Type: {type}

+

Readings: {readings}

+

---------------------------------------------

+ """ + + +class MyHandler(BaseHTTPRequestHandler): + def do_GET(self): + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() + self.wfile.write(html.encode("utf-8")) + + +if __name__ == "__main__": + server_address = ("", 8000) + httpd = HTTPServer(server_address, MyHandler) + print("Serving on http://localhost:8000") + httpd.serve_forever()