parent
ae30c39954
commit
be6fb4bc3c
3 changed files with 60 additions and 1 deletions
@ -0,0 +1,4 @@ |
|||||||
|
PROBES = { |
||||||
|
'0218404f8bff': 'Rad', |
||||||
|
'0218405068ff': 'Tub', |
||||||
|
} |
@ -0,0 +1,55 @@ |
|||||||
|
import os |
||||||
|
import logging |
||||||
|
logging.basicConfig( |
||||||
|
format='[%(asctime)s] %(levelname)s %(module)s/%(funcName)s - %(message)s', |
||||||
|
level=logging.DEBUG if os.environ.get('DEBUG') else logging.INFO) |
||||||
|
#logging.getLogger('aiohttp').setLevel(logging.DEBUG if os.environ.get('DEBUG') else logging.WARNING) |
||||||
|
|
||||||
|
import asyncio |
||||||
|
from statistics import mean |
||||||
|
|
||||||
|
import w1therm |
||||||
|
import relays |
||||||
|
import data |
||||||
|
|
||||||
|
HI_SETPOINT = 40.0 |
||||||
|
LO_SETPOINT = 30.0 |
||||||
|
|
||||||
|
FAN_RELAY = relays.RELAY3 |
||||||
|
|
||||||
|
async def main(): |
||||||
|
relays.init_relays() |
||||||
|
|
||||||
|
while True: |
||||||
|
try: |
||||||
|
temps = await w1therm.get_temperatures() |
||||||
|
if len(temps) != len(data.PROBES): |
||||||
|
raise |
||||||
|
except: |
||||||
|
logging.error('Problem reading temperature probes! Setting fan on and sleeping.') |
||||||
|
relays.set_relay(FAN_RELAY, relays.RELAY_ON) |
||||||
|
await asyncio.sleep(60) |
||||||
|
continue |
||||||
|
|
||||||
|
temperature_log = [] |
||||||
|
for id_, temp in temps.items(): |
||||||
|
temperature_log.append('{}: {} C'.format(data.PROBES[id_], temp)) |
||||||
|
logging.info('Temperature probe ' + ', '.join(temperature_log)) |
||||||
|
|
||||||
|
temperature_list = list(temps.values()) |
||||||
|
temperature_mean = mean(temperature_list) |
||||||
|
|
||||||
|
if temperature_mean > HI_SETPOINT: |
||||||
|
logging.info('Turning fan on') |
||||||
|
relays.set_relay(FAN_RELAY, relays.RELAY_ON) |
||||||
|
elif temperature_mean < LO_SETPOINT: |
||||||
|
logging.info('Turning fan off') |
||||||
|
relays.set_relay(FAN_RELAY, relays.RELAY_OFF) |
||||||
|
|
||||||
|
await asyncio.sleep(10) |
||||||
|
|
||||||
|
if __name__ == '__main__': |
||||||
|
loop = asyncio.get_event_loop() |
||||||
|
loop.run_until_complete(main()) |
||||||
|
loop.close() |
||||||
|
|
Loading…
Reference in new issue