45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
import time
|
|
|
|
from utils import send_update
|
|
|
|
# this is driving a SSR that's powering a AC-powered humidifier
|
|
# we don't need voltage readings for this one
|
|
class HumidifierV3:
|
|
def __init__(self, humidifier_id="humidifier"):
|
|
self.last_toggle = 0
|
|
self.last_state = None
|
|
self.cooldown = 5
|
|
self.humidifier_id = humidifier_id
|
|
|
|
def set(self, s, on):
|
|
if on != self.last_state:
|
|
if (time.time() - self.last_toggle) < self.cooldown:
|
|
return
|
|
if on:
|
|
s.write(b"Z")
|
|
s.flush()
|
|
else:
|
|
s.write(b"z")
|
|
s.flush()
|
|
if self.last_state != on:
|
|
self.last_toggle = time.time()
|
|
if on:
|
|
print("send {} on".format(self.humidifier_id))
|
|
else:
|
|
print("send {} off".format(self.humidifier_id))
|
|
send_update({"status": {self.humidifier_id: on}})
|
|
|
|
self.last_state = on
|
|
|
|
# TODO: read this from Arduino to verify the pin state
|
|
def update(self, val):
|
|
self.last_state = (val != 0)
|
|
|
|
@property
|
|
def on(self):
|
|
return self.last_state is not None and self.last_state
|
|
|
|
@property
|
|
def off(self):
|
|
return self.last_state is not None and not self.last_state
|