From 2d9372ea3812bad0224ae5f541789e12bae6e30f Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Tue, 23 May 2023 15:57:50 +0200 Subject: [PATCH] change schema --- schema/create-schema.sql | 35 +++++++++++++++++++++++------------ src/preprocess.py | 20 ++++++++++---------- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/schema/create-schema.sql b/schema/create-schema.sql index a535e4b..e847575 100644 --- a/schema/create-schema.sql +++ b/schema/create-schema.sql @@ -17,29 +17,39 @@ create table variable_t ( variable_id varchar(16) not null, label varchar(128) not null unique, unit varchar(16), + quantity varchar(32), unique (app, converter_id, device_id, variable_id) ); create table measurement_t ( time timestamp without time zone not null, - application varchar(128) not null, - variable varchar(128) not null, - unit varchar(16), + variable integer references variable_t (id), value float ); select create_hypertable('measurement_t', 'time'); insert into application_t (app_id, label) values('ku226', 'Kupferdreher Str. 226, Essen'); -insert into variable_t (app, converter_id, device_id, variable_id, label, unit) - values ((select id from application_t where app_id = 'ku226'), '1', 'bhkw', 'u', 'BHKW Spannung', 'V'), - ((select id from application_t where app_id = 'ku226'), '1', 'bhkw', 'p', 'BHKW Leistung', 'W'), - ((select id from application_t where app_id = 'ku226'), '1', 'bhkw', 'import', 'BHKW Energie Export', 'Wh'), - ((select id from application_t where app_id = 'ku226'), '1', 'bhkw', 'export', 'BHKW Energie Import', 'Wh'), - ((select id from application_t where app_id = 'ku226'), '1', 'pv', 'u', 'PV Spannung', 'V'), - ((select id from application_t where app_id = 'ku226'), '1', 'pv', 'p', 'PV Leistung', 'W'), - ((select id from application_t where app_id = 'ku226'), '1', 'pv', 'import', 'PV Energie Export', 'Wh'), - ((select id from application_t where app_id = 'ku226'), '1', 'pv', 'export', 'PV Energie Import', 'Wh') +insert into variable_t (app, converter_id, device_id, variable_id, label, unit, quantity) + values ((select id from application_t where app_id = 'ku226'), '1', 'bhkw', 'u', 'BHKW Spannung', 'V', 'voltage'), + ((select id from application_t where app_id = 'ku226'), '1', 'bhkw', 'p', 'BHKW Leistung', 'W', 'power'), + ((select id from application_t where app_id = 'ku226'), '1', 'bhkw', 'import', 'BHKW Energie Export', 'Wh', 'energy'), + ((select id from application_t where app_id = 'ku226'), '1', 'bhkw', 'export', 'BHKW Energie Import', 'Wh', 'energy'), + ((select id from application_t where app_id = 'ku226'), '1', 'pv', 'u', 'PV Spannung', 'V', 'voltage'), + ((select id from application_t where app_id = 'ku226'), '1', 'pv', 'p', 'PV Leistung', 'W', 'power'), + ((select id from application_t where app_id = 'ku226'), '1', 'pv', 'import', 'PV Energie Export', 'Wh', 'energy'), + ((select id from application_t where app_id = 'ku226'), '1', 'pv', 'export', 'PV Energie Import', 'Wh', 'energy'), + ((select id from application_t where app_id = 'ku226'), '3', 'mains', 'import', 'Netz Energie Import', 'Wh', 'energy'), + ((select id from application_t where app_id = 'ku226'), '1', 'w1', 'p', 'Wohnung 1 Leistung', 'W', 'power'), + ((select id from application_t where app_id = 'ku226'), '1', 'w1', 'import', 'Wohnung 1 Energie Import', 'Wh', 'energy'), + ((select id from application_t where app_id = 'ku226'), '1', 'w2', 'p', 'Wohnung 2 Leistung', 'W', 'power'), + ((select id from application_t where app_id = 'ku226'), '1', 'w2', 'import', 'Wohnung 2 Energie Import', 'Wh', 'energy'), + ((select id from application_t where app_id = 'ku226'), '1', 'w3', 'p', 'Wohnung 3 Leistung', 'W', 'power'), + ((select id from application_t where app_id = 'ku226'), '1', 'w3', 'import', 'Wohnung 3 Energie Import', 'Wh', 'energy'), + ((select id from application_t where app_id = 'ku226'), '1', 'w4', 'p', 'Wohnung 4 Leistung', 'W', 'power'), + ((select id from application_t where app_id = 'ku226'), '1', 'w4', 'import', 'Wohnung 4 Energie Import', 'Wh', 'energy'), + ((select id from application_t where app_id = 'ku226'), '1', 'w5', 'p', 'Wohnung 5 Leistung', 'W', 'power'), + ((select id from application_t where app_id = 'ku226'), '1', 'w5', 'import', 'Wohnung 5 Energie Import', 'Wh', 'energy') ; @@ -49,4 +59,5 @@ insert into variable_t (app, converter_id, device_id, variable_id, label, unit) grant select on application_t to preprocessor; grant select on variable_t to preprocessor; grant insert on measurement_t to preprocessor; +grant select on measurement_t to grafana; diff --git a/src/preprocess.py b/src/preprocess.py index 1d4e9d9..77cc995 100644 --- a/src/preprocess.py +++ b/src/preprocess.py @@ -46,7 +46,9 @@ class DbOp(object): select a.label as application, v.label as variable, - v.unit as unit + v.quantity as quantity, + v.unit as unit, + v.id as vid from application_t a, variable_t v where a.app_id = %(appId)s and v.app = a.id and @@ -60,7 +62,9 @@ class DbOp(object): variable = { 'application': res[0], 'variable': res[1], - 'unit': res[2] + 'quantity': res[2] + 'unit': res[3], + 'vid': res[4] } logger.debug(f"{variable=}") return variable @@ -78,14 +82,12 @@ class DbOp(object): with conn: with conn.cursor() as cur: cur.execute(""" - insert into measurement_t (time, application, variable, value, unit) - values (now(), %(application)s, %(variable)s, %(value)s, %(unit)s) + insert into measurement_t (time, variable, value) + values (now(), %(vid)s, %(value)s) """, { - 'application': measurement['application'], - 'variable': measurement['variable'], + 'vid': measurement['vid'], 'value': measurement['value'], - 'unit': measurement['unit'] } ) except Exception as e: @@ -126,9 +128,7 @@ def mqttOnMessageCallback(client, userdata, message): dbh = DbOp(config) variable = dbh.getVariable(appId, converterId, deviceId, variableId) measurement = { - "application": variable["application"], - "variable": variable["variable"], - "unit": variable["unit"], + "vid": variable["vid"], "value": float(payload) }