| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
| hardware:channels:heating_control:gastherme_buderus [2025/12/08 17:21] – Korrektur trabant | hardware:channels:heating_control:gastherme_buderus [2025/12/09 10:59] (aktuell) – [Anbindung an den Volkszähler] trabant |
|---|
| from time import ctime,sleep | from time import ctime,sleep |
| | |
| print("Starting up ht3logger V2 on "+ctime()) | print("Starting up ht3logger V2.1 on "+ctime()) |
| | |
| tabellen = ('heizgeraet','warmwasser') | |
| | |
| | tabellen = {'heizgeraet','warmwasser'} |
| | |
| heizgeraet = { | heizgeraet = { |
| 'T_aussen' : '80089ae0-fa81-11e9-bdc6-b99d5fa0fe8b', | 'T_aussen' : '80089ae0-fa81-11e9-bdc6-b99d5fa0fe8b', |
| 'T_vorlauf_soll' : 'af1863e0-fa81-11e9-8d30-337b7499db8e', | 'T_vorlauf_soll' : 'af1863e0-fa81-11e9-8d30-337b7499db8e', |
| 'T_vorlauf_ist' : 'cbf99f10-fa81-11e9-9709-d55e7ad0883e', | 'T_vorlauf_ist' : 'cbf99f10-fa81-11e9-9709-d55e7ad0883e', |
| 'T_mischer' : '521a0ca0-fa8d-11e9-970f-752aababd342', | 'T_mischer' : '521a0ca0-fa8d-11e9-970f-752aababd342', |
| 'V_heizungs_pumpe' : 'a5958bf0-fa8f-11e9-bf34-4f7c2163b201', | 'V_heizungs_pumpe' : 'a5958bf0-fa8f-11e9-bf34-4f7c2163b201', |
| 'V_brenner_flamme' : '5ec31d30-fa90-11e9-98b7-3b9f4a33ba29', | 'V_brenner_flamme' : '5ec31d30-fa90-11e9-98b7-3b9f4a33ba29', |
| 'V_leistung' : '81f3ed90-7f7b-11ed-90c6-b747fd43b61f', | 'V_leistung' : '81f3ed90-7f7b-11ed-90c6-b747fd43b61f', |
| 'C_brenner_gesamt' : '9bbd1c20-a8ee-11e5-82ab-079b3d8ffc8e' | 'C_brenner_gesamt' : '9bbd1c20-a8ee-11e5-82ab-079b3d8ffc8e' |
| } | } |
| | |
| warmwasser = { | warmwasser = { |
| 't_soll' : 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', | 't_soll' : 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', |
| 't_ist' : 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', | 't_ist' : 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', |
| 't_speicher' : 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' | 't_speicher' : 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' |
| } | } |
| | |
| while True: | while True: |
| for table in tabellen: | for table in tabellen: |
| try: | try: |
| db = sqlite3.connect('file:/home/pi/HT3/sw/var/databases/HT3_db.sqlite?mode=ro', uri=True) | db = sqlite3.connect('file:/home/pi/HT3/sw/var/databases/HT3_db.sqlite?mode=ro', uri=True) |
| db.row_factory = sqlite3.Row | db.row_factory = sqlite3.Row |
| cursor = db.execute('SELECT * FROM '+table+' ORDER BY utc DESC LIMIT 1') | cursor = db.execute('SELECT * FROM '+table+' ORDER BY utc DESC LIMIT 1') |
| except: | except: |
| print("Error accessing Sqlite database.") | print("Error accessing Sqlite database.") |
| raise SystemExit(2) | raise SystemExit(2) |
| for dbvalue in cursor: | for dbvalue in cursor: |
| timestamp = int(dbvalue['UTC'] * 1000) | timestamp = int(dbvalue['UTC'] * 1000) |
| for key,uuid in eval(table).items(): | for key,uuid in eval(table).items(): |
| try: | try: |
| #print(key, timestamp, uuid, dbvalue[key]) | #print(key, timestamp, uuid, dbvalue[key]) |
| post('http://localhost/middleware/data.json', data='uuid':uuid,'ts':timestamp,'value':dbvalue[key]}) | post('http://localhost/middleware/data.json', data={'uuid':uuid,'ts':timestamp,'value':dbvalue[key]}) |
| except: | except: |
| print("Couldn't post to VZ Middleware.") | print("Couldn't post to VZ Middleware.") |
| db.close() | db.close() |
| sleep(10) | sleep(10) |
| | |
| </code> | </code> |
| Das Skript benötigt das Modul ''requests''. Sollte es nicht schon vorhanden sein, lässt es sich mittels ''apt-get install python3-requests'' nachinstallieren. | Das Skript benötigt das Modul ''requests''. Sollte es nicht schon vorhanden sein, lässt es sich mittels ''apt-get install python3-requests'' nachinstallieren. |
| |
| <note important>Die zu importierenden Tabellen sowie die Kanallisten müssen im Skript manuell angepasst werden. An erster Stelle stehen die Spaltennamen aus der //hometop// Sqlite-DB, an zweiter Stelle die ''UUID'' eines bestehenden VZ-Kanals. Der Name (z.B. //T_vorlauf_ist//, kann, muss aber nicht mit der Benennung des entsprechenden [[software:middleware:einrichtung|Kanals]] im VZ übereinstimmen.</note> | <note important>Die zu importierenden Tabellen sowie die Kanallisten müssen im Skript manuell angepasst werden. An erster Stelle stehen die Spaltennamen aus der //hometop// Sqlite-DB, an zweiter Stelle die ''UUID'' eines bestehenden VZ-Kanals. Der Name (z.B. //T_vorlauf_ist//), kann, muss aber nicht mit der Benennung des entsprechenden [[software:middleware:einrichtung|Kanals]] im VZ übereinstimmen.</note> |
| |
| ==== Daten ==== | ==== Daten ==== |
| |
| Die genannten Werte sind Beispiele. Ein Blick in die SQLite DB genügt, um herauszufinden, welche Daten man selbst gerne hätte. In diesem Beispiel einer Kombitherme findet man unter ''T_mischer'' im übrigen die DL-Warmwassertemperatur. | Die genannten Werte sind Beispiele. Ein Blick in die SQLite DB lohnt, um herauszufinden, welche Daten man selbst gerne hätte. In diesem Beispiel einer Kombitherme findet man unter ''T_mischer'' im Übrigen die DL-Warmwassertemperatur. |
| |
| In der SQLite Datenbank gibt es neben der Tabelle ''heizgeraet'' noch weitere, für den Fall dass separate Heizkreise, Solarthermie oder ein Warmwasserspeicher existieren. Das Skript lässt sich entsprechend anpassen, beispielhaft ist hier neben ''heizgeraet'' noch ''warmwasser'' aufgeführt. | In der SQLite Datenbank gibt es neben der Tabelle ''heizgeraet'' noch weitere, für den Fall dass separate Heizkreise, Solarthermie oder ein Warmwasserspeicher existieren. Das Skript lässt sich entsprechend anpassen, beispielhaft ist hier neben ''heizgeraet'' noch ''warmwasser'' aufgeführt. |