123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- from function.modules import heating_function
- import os
- import sqlite3
-
- db_file = os.path.join(os.path.dirname(__file__), '..', 'database.db')
-
- db_mapping_radiator = {
- 0: heating_function.KEY_AWAY_MODE,
- 1: heating_function.KEY_SUMMER_MODE,
- 2: heating_function.KEY_USER_TEMPERATURE_SETPOINT,
- 3: heating_function.KEY_TEMPERATURE_SETPOINT
- }
-
-
- def get_radiator_data(topic):
- db_data = __storage__().get_radiator_data(topic)
- rv = {}
- for index in db_mapping_radiator:
- rv[db_mapping_radiator[index]] = db_data[index]
- return rv
-
-
- def set_radiator_data(device, key, data):
- if key in db_mapping_radiator.values():
- db_data = []
- for index in range(0, len(db_mapping_radiator)):
- db_data.append(device.get(db_mapping_radiator[index]))
- return __storage__().store_radiator_data(device.heating_valve.topic, db_data)
-
-
- class __storage__(object):
- def __init__(self):
- self.conn = sqlite3.connect(db_file)
- self.c = self.conn.cursor()
- with self.conn:
- self.c.execute("""CREATE TABLE IF NOT EXISTS radiator (
- topic text PRIMARY KEY,
- away_mode integer,
- summer_mode integer,
- user_temperatur_setpoint real,
- temperatur_setpoint real
- )""")
-
- def store_radiator_data(self, topic, target_data):
- try:
- with self.conn:
- self.c.execute(
- 'INSERT INTO radiator VALUES (?, ?, ?, ?, ?)', [topic] + target_data)
- except sqlite3.IntegrityError:
- db_data = self.get_radiator_data(topic)
- if db_data != target_data:
- with self.conn:
- self.c.execute(
- 'UPDATE radiator SET away_mode = ?, summer_mode = ?, user_temperatur_setpoint = ?, temperatur_setpoint = ? WHERE topic = ?', target_data + [topic])
-
- def get_radiator_data(self, topic):
- """ returns a list [away_mode, summer_mode, user_temperatur_setpoint, temperatur_setpoint] or [None, None, None, None]"""
- self.c.execute("SELECT * FROM radiator WHERE topic=?", (topic, ))
- data = self.c.fetchone()
- if data is not None:
- data = list(data)
- data[1] = data[1] == 1
- data[2] = data[2] == 1
- return data[1:]
- else:
- return [None, None, None, None]
-
- def __del__(self):
- self.conn.close()
|