diff --git a/climate_control/__init__.py b/climate_control/__init__.py index 78af656..c57e119 100644 --- a/climate_control/__init__.py +++ b/climate_control/__init__.py @@ -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) diff --git a/gate_guard/gate.py b/gate_guard/gate.py index 74fab8b..7e7d9d8 100644 --- a/gate_guard/gate.py +++ b/gate_guard/gate.py @@ -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) +