1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#!/usr/bin/python3
import os
import asyncio
import neohubapi.neohub as neohub
import psycopg2
neohub_ip = os.environ['el_neohub_ip']
neohub_port = os.environ['el_neohub_port']
pg_db = os.environ['el_pg_db']
pg_host = os.environ['el_pg_host']
pg_user = os.environ['el_pg_user']
pg_pass = os.environ['el_pg_pass']
pg_table = "neohub"
values = []
async def run():
# Legacy connection
hub = neohub.NeoHub(neohub_ip, int(neohub_port))
# Or, for a websocket connection:
# hub = neohub.Neohub(port=4243, token='xxx-xxxxxxx')
system = await hub.get_system()
hub_data, devices = await hub.get_live_data()
for device in devices['thermostats']:
print(f"Temperature in zone {device.name}: {device}")
values.append((device.time, device.device_id, device.away, device.heat_mode, device.heat_on, device.current_floor_temperature, device.target_temperature, device.temperature))
asyncio.run(run())
conn = psycopg2.connect(database=pg_db, host=pg_host, user=pg_user, password=pg_pass)
cur = conn.cursor()
try:
cur.executemany("INSERT INTO " + pg_table + " (time, device_id, away, heat_mode, heat_on, current_floor_temperature, target_temperature, temperature) VALUES(%s,%s,%s,%s,%s,%s,%s,%s)", values)
conn.commit()
except Exception as e:
conn.rollback()
raise e
|