From bf08e8bc5a1a4c8a09ab0cc8cd549ac1582ff352 Mon Sep 17 00:00:00 2001 From: Lars Bogner Date: Sat, 23 Jan 2021 12:08:02 +0100 Subject: [PATCH] further additions --- RaspberryPie/dataHandling.py | 58 ++++++++++++++++++++++++++++-- RaspberryPie/database.db | Bin 32768 -> 212992 bytes RaspberryPie/flaskAddons.py | 19 ++++++++++ RaspberryPie/flask_backend.py | 57 ++++++++++++++++++++++++----- RaspberryPie/hardwareControl.py | 2 +- RaspberryPie/templates/index.html | 4 +-- 6 files changed, 127 insertions(+), 13 deletions(-) create mode 100644 RaspberryPie/flaskAddons.py diff --git a/RaspberryPie/dataHandling.py b/RaspberryPie/dataHandling.py index c53566b..5c4b919 100644 --- a/RaspberryPie/dataHandling.py +++ b/RaspberryPie/dataHandling.py @@ -1,6 +1,7 @@ #general imports import datetime import sqlite3 +import base64 # imports from Project from RaspberryPie.logger import captScribe @@ -12,6 +13,7 @@ class BGenSecretary: self.database = database_path self.image_path = image_path + def _record(self, data: dict): connection = None try: @@ -31,13 +33,65 @@ class BGenSecretary: if connection is sqlite3.Connection: connection.close() - def recordPicture(self, picture): + def recordPicture(self, picture: bytes): with open("{}/{}.jpg".format(self.image_path, str(datetime.datetime.now())), "w") as f: f.write(picture) - self._record({"picture": {"picture": picture}}) + self._record({"picture": {"picture": base64.encodebytes(picture).decode('ascii').replace("\n", "")}}) def recordAir(self, data): self._record({"air": {"temperature": data[0], "humidity": data[1]}}) + + def _fetchSingle(self, table, time: datetime.datetime): + unix_time = int(time.timestamp()) + command = "SELECT * FROM {} ORDER BY ABS(unix_time - {}) ASC LIMIT 1".format(table, unix_time) + connection, entry = None + try: + connection = sqlite3.connect(self.database) + cursor = connection.cursor() + cursor.execute(command) + entry = cursor.fetchone() + captScribe.info("Fetched entry for {} from {}".format(str(unix_time), table), "BGenSecretary._fetchSingle") + except sqlite3.Error as e: + captScribe.error(str(e), "BGenSecretary._fetchSingle") + finally: + if connection is sqlite3.Connection: + connection.close() + return tuple(entry) if entry is sqlite3.Row else None + + def _fetchMultiple(self, table, end:datetime.datetime, start: datetime.datetime): + unix_time_end = int(end.timestamp()) + unix_time_start = int(start.timestamp()) + command = "SELECT * FROM {} WHERE unix_time BETWEEN {} AND {}".format(unix_time_start, unix_time_end) + connection, entries = None + try: + connection = sqlite3.connect(self.database) + cursor = connection.cursor() + cursor.execute(command) + entries = cursor.fetchall() + captScribe.info("Fetched entries for {} from {}".format(str((unix_time_start, unix_time_end)), table), "BGenSecretary._fetchSingle") + except sqlite3.Error as e: + captScribe.error(str(e), "BGenSecretary._fetchSingle") + finally: + if connection is sqlite3.Connection: + connection.close() + return [tuple(entry) for entry in entries] if entries is not None else None + + def fetchAir(self, time=datetime.datetime.now(), start_time=None): # time is either one point or the end point if start is given + if not start_time: + entry = self._fetchSingle("air", time) + return {"unix_time": entry[0], "time_string": entry[1], "temperature": entry[2], "humidity": entry[3]} + else: + entries = self._fetchMultiple("air", time, start_time) + return {"unix_time": [entry[0] for entry in entries], "time_string": [entry[1] for entry in entries], "temperature": [entry[2] for entry in entries], "humidity": [entry[3] for entry in entries]} + + def fetchPicture(self, time=datetime.datetime.now(), start_time=None): + if not start_time: + entry = self._fetchSingle("picture", time) + return {"unix_time": entry[0], "time_string": entry[1], "picture": entry[2]} + else: + entries = self._fetchMultiple("picture", time, start_time) + return {"unix_time": [entry[0] for entry in entries], "time_string": [entry[1] for entry in entries], "picture": [entry[2] for entry in entries]} + bGenSecretary = BGenSecretary(config["File Locations"]["database_file"], config["File Locations"],["image_path"]) \ No newline at end of file diff --git a/RaspberryPie/database.db b/RaspberryPie/database.db index bd5446f40be1569e08df31ac6de2e46cc894835e..c964cd1bc65496948e97b8125adfff6bc418fffd 100644 GIT binary patch literal 212992 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 delta 138 zcmZo@;B9DNnjp=~&cMLH0mV!cHOv{=Hzq9P=LCu{2rw}4-`^}4aFSoZ0K`WC#fgrx zTwEYNNX?(^i5D2Z@-wn*GI-9<#qa1DWWdG6EX^_bqrET_g8)eO7e5//") -def functionName(start, end): - data = {} - db_entries = getEnvironment(int(start), int(end)) - data["labels"] = db_entries["temperature"][0] - data["temp"] = db_entries["temperature"][1] - data["humi"] = db_entries["humidity"][1] - return json.dumps(data) \ No newline at end of file +def airData(start, end): + data = fa.getDataRangeAir(int(start), int(end)) + return json.dumps(data) + +@app.route("/picture/