From 1080cf8bc2dcee8adcf382b8515cb89fb02c3280 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Wed, 23 Sep 2020 18:28:56 +0200 Subject: [PATCH] save sensor update time in database --- src/logic/Database.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/logic/Database.py b/src/logic/Database.py index 91ba76e..599c347 100644 --- a/src/logic/Database.py +++ b/src/logic/Database.py @@ -1,4 +1,5 @@ import sqlite3 +from datetime import datetime from typing import Tuple from TheCodeLabs_BaseUtils import DefaultLogger @@ -12,6 +13,8 @@ class Database: TABLE_DEVICE = 'device' TABLE_SENSOR = 'sensor' + DATE_FORMAT = '%Y-%m-%d %H:%M:%S' + def __init__(self, databasePath): self._databasePath = databasePath self.__create_database() @@ -27,11 +30,15 @@ class Database: device_id INTEGER, name TEXT NOT NULL, type TEXT NOT NULL, - value TEXT NOT NULL)''') + value TEXT NOT NULL, + timestamp TEXT NOT NULL)''') def __get_connection(self): return sqlite3.connect(self._databasePath) + def __get_current_datetime(self): + return datetime.strftime(datetime.now(), self.DATE_FORMAT) + def get_all_devices(self): with self.__get_connection() as connection: cursor = connection.execute(f'SELECT * FROM {self.TABLE_DEVICE} ORDER BY name') @@ -62,12 +69,14 @@ class Database: with self.__get_connection() as connection: LOGGER.debug(f'Inserting new sensor "{name}" for device "{device[1]}" ' f'(type: "{sensorType}", value: "{value}")') - connection.execute(f'INSERT INTO {self.TABLE_SENSOR}(name, device_id, type, value) VALUES(?, ?, ?, ?)', - (name, device[0], sensorType, value)) + connection.execute(f'INSERT INTO {self.TABLE_SENSOR}(name, device_id, type, value, timestamp ) ' + f'VALUES(?, ?, ?, ?, ?)', + (name, device[0], sensorType, value, self.__get_current_datetime())) def update_sensor(self, device: Tuple[int, str], name: str, sensorType: str, value: str): LOGGER.debug(f'Updating sensor "{name}" for device "{device[1]}" ' f'(type: "{sensorType}", value: "{value}")') with self.__get_connection() as connection: - connection.execute(f'UPDATE {self.TABLE_SENSOR} SET value = ? WHERE device_id = ? AND name = ?', - (value, device[0], name)) + connection.execute(f'UPDATE {self.TABLE_SENSOR} SET value = ?, timestamp = ? ' + f'WHERE device_id = ? AND name = ?', + (value, self.__get_current_datetime(), device[0], name, )) -- GitLab