#!/usr/bin/python3 # ht3logger.py V2.4 tabellen = {'heizgeraet','warmwasser'} heizgeraet = { 'T_aussen' : '80089ae0-fa81-11e9-bdc6-b99d5fa0fe8b', 'T_vorlauf_soll' : 'af1863e0-fa81-11e9-8d30-337b7499db8e', 'T_vorlauf_ist' : 'cbf99f10-fa81-11e9-9709-d55e7ad0883e', 'T_mischer' : '521a0ca0-fa8d-11e9-970f-752aababd342', 'V_heizungs_pumpe' : 'a5958bf0-fa8f-11e9-bf34-4f7c2163b201', 'V_brenner_flamme' : '5ec31d30-fa90-11e9-98b7-3b9f4a33ba29', 'V_leistung' : '81f3ed90-7f7b-11ed-90c6-b747fd43b61f', 'C_brenner_gesamt' : '9bbd1c20-a8ee-11e5-82ab-079b3d8ffc8e' } warmwasser = { 't_soll' : 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 't_ist' : 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 't_speicher' : 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' } import sqlite3 from requests import session from time import ctime,time,sleep print("Starting up ht3logger V2.4 on",ctime(),flush=True) while True: stime = time() for table in tabellen: try: db = sqlite3.connect('file:/home/pi/HT3/sw/var/databases/HT3_db.sqlite?mode=ro',uri=True) db.row_factory = sqlite3.Row cursor = db.execute('SELECT * FROM '+table+' ORDER BY utc DESC LIMIT 1') except sqlite3.OperationalError as e: print("Error accessing SQLite database:",e,flush=True) break for dbvalue in cursor: mw = session() timestamp = int(dbvalue['UTC'] * 1000) for key,uuid in eval(table).items(): try: #print(key, timestamp, uuid, dbvalue[key]) re = mw.post('http://localhost/middleware/data.json',data={'uuid':uuid,'ts':timestamp,'value':dbvalue[key],'options':'skipduplicates'}) rx = re.json() rx['rows'] except KeyError: print("Middleware Error:",rx['exception']['message'],flush=True) except: print("Error in POST request, check URL.",flush=True) mw.close() db.close() sleep(10-(time()-stime))