write voltage to database

This commit is contained in:
Wolfgang Hottgenroth 2023-05-17 22:00:39 +02:00
parent 3c932220e7
commit 36d18dcb79
Signed by: wn
GPG Key ID: 836E9E1192A6B132
2 changed files with 13 additions and 0 deletions

View File

@ -26,6 +26,15 @@ CREATE TABLE measurement_t (
SELECT create_hypertable('measurement_t', 'time'); SELECT create_hypertable('measurement_t', 'time');
CREATE TABLE voltage_t (
time TIMESTAMP WITHOUT TIME ZONE NOT NULL,
device_name VARCHAR(16) NOT NULL,
voltage INTEGER
);
SELECT create_hypertable('voltage_t', 'time');
insert into device_t (device_id, label) values('eui-43fa12f400006c88', 'badesee'); insert into device_t (device_id, label) values('eui-43fa12f400006c88', 'badesee');
insert into sensor_t (address, label, index, device) insert into sensor_t (address, label, index, device)
values (13258914387362694952, '0,5m ', 0, 1), values (13258914387362694952, '0,5m ', 0, 1),
@ -36,3 +45,4 @@ insert into sensor_t (address, label, index, device)
create user preprocessor password 'geheim'; create user preprocessor password 'geheim';
grant select on device_t, sensor_t to preprocessor; grant select on device_t, sensor_t to preprocessor;
grant insert on measurement_t to preprocessor; grant insert on measurement_t to preprocessor;
grant insert on voltage_t to preprocessor;

View File

@ -69,6 +69,8 @@ class DbOp(object):
conn = self.__getConn() conn = self.__getConn()
with conn: with conn:
with conn.cursor() as cur: with conn.cursor() as cur:
cur.execute("insert into voltage_t (time, device_name, voltage) values (now(), %(dname)s, %(voltage)s)",
{ 'dname': measurement['label'], 'voltage': measurement['u_bat']})
for entry in measurement['measurements']: for entry in measurement['measurements']:
cur.execute("insert into measurement_t (time, device_name, sensor_name, temperature) values (now(), %(dname)s, %(sname)s, %(tempc)s)", cur.execute("insert into measurement_t (time, device_name, sensor_name, temperature) values (now(), %(dname)s, %(sname)s, %(tempc)s)",
{ 'dname': measurement['label'], 'sname': entry['label'], 'tempc': entry['value'] }) { 'dname': measurement['label'], 'sname': entry['label'], 'tempc': entry['value'] })
@ -112,6 +114,7 @@ def mqttOnMessageCallback(client, userdata, message):
logger.info(f"Regular message received from {device_id}, {device['label']}") logger.info(f"Regular message received from {device_id}, {device['label']}")
measurement = { measurement = {
'label': device['label'], 'label': device['label'],
'u_bat': u_bat,
'time': parse_payload['received_at'], 'time': parse_payload['received_at'],
'measurements': [] 'measurements': []
} }