|
|
@ -7,6 +7,7 @@ import paho.mqtt.client |
|
|
|
import sqlite3 |
|
|
|
import datetime |
|
|
|
|
|
|
|
MAX_VALUE_CACHE_SIZE = 1024 |
|
|
|
|
|
|
|
def init_db(path, topics): |
|
|
|
db = sqlite3.connect(path) |
|
|
@ -31,6 +32,8 @@ def main(): |
|
|
|
def on_disconnect(client, userdata, rc): |
|
|
|
client.reconnect() |
|
|
|
|
|
|
|
current_values = {} |
|
|
|
|
|
|
|
def on_message(client, userdata, msg): |
|
|
|
try: |
|
|
|
c = db.cursor() |
|
|
@ -48,11 +51,18 @@ def main(): |
|
|
|
else: |
|
|
|
value = float(msg.payload) |
|
|
|
print(f"{table}: {value} ") |
|
|
|
c.execute(f'CREATE TABLE IF NOT EXISTS "{table}" ' |
|
|
|
'(timestamp timestamp, value real)') |
|
|
|
c.execute(f'INSERT INTO "{table}" VALUES (?, ?)', (ts, value)) |
|
|
|
#c.execute(f'SELECT * from "{table}"') |
|
|
|
db.commit() |
|
|
|
|
|
|
|
if current_values.get(table, None) != value: |
|
|
|
current_values[table] = value |
|
|
|
if len(current_values) > MAX_VALUE_CACHE_SIZE: |
|
|
|
first_entry = current_values.keys().next() |
|
|
|
del current_values[first_entry] |
|
|
|
|
|
|
|
c.execute(f'CREATE TABLE IF NOT EXISTS "{table}" ' |
|
|
|
'(timestamp timestamp, value real)') |
|
|
|
c.execute(f'INSERT INTO "{table}" VALUES (?, ?)', (ts, value)) |
|
|
|
db.commit() |
|
|
|
|
|
|
|
except Exception as e: |
|
|
|
print(f'Error writing to database: {e}') |
|
|
|
|
|
|
|