universal-data-ingest/migration/migrate-level.py

39 lines
1.8 KiB
Python
Raw Normal View History

2023-12-23 22:57:27 +01:00
import psycopg2
from loguru import logger
try:
srcConn = psycopg2.connect(database="level_monitoring_berresheim")
srcConn.autocommit = False
2023-12-28 15:48:51 +01:00
destConn = psycopg2.connect(database="udi-berresheim")
destConn.autocommit = False
2023-12-23 22:57:27 +01:00
2023-12-28 15:48:51 +01:00
with srcConn.cursor() as srcCur, destConn.cursor() as destCur:
2023-12-23 22:57:27 +01:00
srcCur.execute("select time, application_name, raw_level, level, status, battery from measurement_t")
for srcObj in srcCur:
timestamp = srcObj[0]
deviceName = srcObj[1]
rawLevel = srcObj[2]
level = srcObj[3]
status = srcObj[4]
battery = srcObj[5]
logger.info(f"{timestamp=}, {deviceName=}, {rawLevel=}, {level=}, {status=}, {battery=}")
destTime = timestamp
destApplication = "de-hottis-level-monitoring"
destDevice = "eui-a84041a2c18341d6"
2023-12-28 15:56:30 +01:00
destAttributes = '{"ApplicationId":"de-hottis-level-monitoring", "DeviceType":"dragino-ldds75", "Status":"' + status + '","Hint": "Migrated"}'
2023-12-28 15:48:51 +01:00
destValues = '{"Battery":{"unit":"V","label":"Battery","value":' + str(battery) + ',"variable":"Voltage"}, "Distance":{"unit":"mm","label":"Distance","variable":"Level","value":' + str(rawLevel) + '}, "CorrectedDistance":{"unit":"mm", "label":"CorrectedDistance", "variable":"Level","value":' + str(level) + '}}'
2023-12-23 22:57:27 +01:00
logger.info(f"{destTime=}, {destApplication=}, {destDevice=}, {destAttributes=}, {destValues=}")
2023-12-28 15:48:51 +01:00
destCur.execute("insert into measurements (time, application, device, attributes, values) values(%s, %s, %s, %s, %s)",
(destTime, destApplication, destDevice, destAttributes, destValues))
destConn.commit()
2023-12-23 22:57:27 +01:00
finally:
if srcConn:
srcConn.close()
2023-12-28 15:48:51 +01:00
if destConn:
destConn.close()
2023-12-23 22:57:27 +01:00