wip
This commit is contained in:
parent
387a447b99
commit
d1f6944216
@ -12,6 +12,11 @@ import paho.mqtt.client as mqtt
|
||||
from climate_control.sensors import Dht22
|
||||
from climate_control.heat import Heat
|
||||
|
||||
LOG_FILE = "/var/log/climate.log"
|
||||
LOG_FORMAT = "%(asctime)s %(filename)s:%(lineno)d %(message)s"
|
||||
LOG_LEVEL = logging.INFO
|
||||
LOG_INTERVAL = 5
|
||||
|
||||
MQTT_BROKER = "mqtt.blackfinn.de"
|
||||
MQTT_PORT = 8883
|
||||
MQTT_CERT = "/etc/ssl/certs/DST_Root_CA_X3.pem"
|
||||
@ -26,6 +31,8 @@ ROOM_HEAT_THRESHOLD = {"on": 1.0, "off": 2.0}
|
||||
STATE_OFF = "off"
|
||||
STATE_ON = "ON"
|
||||
|
||||
#logging.basicConfig(format=LOG_FORMAT, level=LOG_LEVEL, filename=LOG_FILE)
|
||||
|
||||
class ClimateControl(threading.Thread):
|
||||
__water_heat = Heat(20)
|
||||
__room_heat = Heat(21)
|
||||
@ -69,6 +76,7 @@ class ClimateControl(threading.Thread):
|
||||
self.__now = time.time()
|
||||
if self.__next <= self.__now:
|
||||
humidity, temperature = self.__climate.read()
|
||||
logging.info("Temperature: {}\tHumidity: {}".format(temperature, humidity))
|
||||
try:
|
||||
client = mqtt.Client()
|
||||
client.tls_set(MQTT_CERT)
|
||||
@ -86,8 +94,8 @@ class ClimateControl(threading.Thread):
|
||||
client.publish(MQTT_ROOM_HEAT_TOPIC, msg, qos=2, retain=True)
|
||||
client.loop_stop()
|
||||
client.disconnect()
|
||||
except(ValueError, TypeError, socket.error, ssl.CertificateError):
|
||||
logging.info('unable to publish to mqtt')
|
||||
except(ValueError, TypeError, socket.error, ssl.CertificateError) as error:
|
||||
logging.info('unable to publish to mqtt ({})'.format(error))
|
||||
self.__next = self.__now + self.__interval
|
||||
time.sleep(1)
|
||||
|
||||
|
@ -85,7 +85,9 @@ class FakeLight(object):
|
||||
sun = self.city.sun(now, local=True)
|
||||
sunset = sun['sunset']
|
||||
|
||||
if now.hour >= self.opening_hour and now < sunset:
|
||||
close_time = now - datetime.timedelta(minutes=30)
|
||||
|
||||
if now.hour >= self.opening_hour and close_time < sunset:
|
||||
fake_light = 1
|
||||
return fake_light
|
||||
|
||||
@ -129,8 +131,8 @@ class Gate(object):
|
||||
self.__light_read_timeout = current_time + LIGHT_READ_DELAY_S
|
||||
light_read = self.__light_sensor.read()
|
||||
self.__light_data.push(light_read)
|
||||
logging.info('light - abs: ' + str(light_read) + ', avg: ' + \
|
||||
str(self.__light_data.average()))
|
||||
# logging.info('light - abs: ' + str(light_read) + ', avg: ' + \
|
||||
# str(self.__light_data.average()))
|
||||
power_read = self.__power_sensor.power_mw()
|
||||
self.__power_data.push(power_read)
|
||||
self.__state_handler[self.__next_state](self.__light_data.average())
|
||||
@ -235,8 +237,8 @@ class Gate(object):
|
||||
self.__client.loop_start()
|
||||
self.__client.publish(MQTT_TOPIC, msg, qos=2, retain=True)
|
||||
self.__client.loop_stop()
|
||||
except (ValueError, TypeError, socket.error, ssl.CertificateError):
|
||||
logging.info('unable to publish to mqtt')
|
||||
except (ValueError, TypeError, socket.error, ssl.CertificateError) as err:
|
||||
logging.info('unable to publish to mqtt ({})'.format(err))
|
||||
if check_to_close(light_avg) is True:
|
||||
next_state = STATE_CLOSING_1
|
||||
self.__update_state(next_state)
|
||||
@ -251,8 +253,8 @@ class Gate(object):
|
||||
self.__client.loop_start()
|
||||
self.__client.publish(MQTT_TOPIC, msg, qos=2, retain=True)
|
||||
self.__client.loop_stop()
|
||||
except (ValueError, TypeError, socket.error, ssl.CertificateError):
|
||||
logging.info('unable to publish to mqtt')
|
||||
except (ValueError, TypeError, socket.error, ssl.CertificateError) as err:
|
||||
logging.info('unable to publish to mqtt ({})'.format(err))
|
||||
if check_to_open(light_avg) is True:
|
||||
next_state = STATE_OPENING_1
|
||||
self.__update_state(next_state)
|
||||
@ -267,8 +269,8 @@ class Gate(object):
|
||||
self.__client.loop_start()
|
||||
self.__client.publish(MQTT_TOPIC, msg, qos=2, retain=True)
|
||||
self.__client.loop_stop()
|
||||
except (ValueError, TypeError, socket.error, ssl.CertificateError):
|
||||
logging.info('unable to publish to mqtt')
|
||||
except (ValueError, TypeError, socket.error, ssl.CertificateError) as err:
|
||||
logging.info('unable to publish to mqtt ({})'.format(err))
|
||||
self.__gate_run_time = time.time()
|
||||
|
||||
# workaround for high power after starting engine
|
||||
@ -316,8 +318,8 @@ class Gate(object):
|
||||
self.__client.loop_start()
|
||||
self.__client.publish(MQTT_TOPIC, msg, qos=2, retain=True)
|
||||
self.__client.loop_stop()
|
||||
except (ValueError, TypeError, socket.error, ssl.CertificateError):
|
||||
logging.info('unable to publish to mqtt')
|
||||
except (ValueError, TypeError, socket.error, ssl.CertificateError) as err:
|
||||
logging.info('unable to publish to mqtt ({})'.format(err))
|
||||
self.__gate_run_time = time.time()
|
||||
|
||||
# workaround for high power after starting engine
|
||||
@ -360,3 +362,4 @@ class Gate(object):
|
||||
self.__engine_2.stop()
|
||||
next_state = STATE_INIT_1
|
||||
self.__update_state(next_state)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user