From a416dac362fd02f7ffb846da4500eb2a44e71573 Mon Sep 17 00:00:00 2001 From: Vitor de Miranda Henrique Date: Fri, 27 Apr 2018 00:51:55 -0500 Subject: [PATCH] fixed #130 --- octoprint_enclosure/__init__.py | 92 ++++++++++++------- octoprint_enclosure/static/js/enclosure.js | 1 + .../templates/enclosure_tab.jinja2 | 6 ++ 3 files changed, 65 insertions(+), 34 deletions(-) diff --git a/octoprint_enclosure/__init__.py b/octoprint_enclosure/__init__.py index d4986d2..e499d67 100644 --- a/octoprint_enclosure/__init__.py +++ b/octoprint_enclosure/__init__.py @@ -36,6 +36,9 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, temperature_sensor_data = [] last_filament_end_detected = [] print_complete = False + development_mode = False + dummy_value = 30.0 + dummy_delta = 0.5 def start_timer(self): """ @@ -321,11 +324,11 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, if temp is not None and hum is not None: sensor_data.append( dict(index_id=sensor['index_id'], temperature=temp, humidity=hum)) - self.temperature_sensor_data = sensor_data - self.handle_temp_hum_control() - self.handle_temperature_events() - self.handle_pwm_linked_temperature() - self.update_ui() + self.temperature_sensor_data = sensor_data + self.handle_temp_hum_control() + self.handle_temperature_events() + self.handle_pwm_linked_temperature() + self.update_ui() except Exception as ex: self.log_error(ex) @@ -447,8 +450,10 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, regular_status.append( dict(index_id=index, status=val, auto_startup=startup, auto_shutdown=shutdown)) if output['output_type'] == 'temp_hum_control': + val = GPIO.input(pin) if not output['active_low'] else ( + not GPIO.input(pin)) temp_control_status.append( - dict(index_id=index, auto_startup=startup, auto_shutdown=shutdown)) + dict(index_id=index, status=val, auto_startup=startup, auto_shutdown=shutdown)) if output['output_type'] == 'neopixel_indirect' or output['output_type'] == 'neopixel_direct': val = output['neopixel_color'] neopixel_status.append( @@ -486,27 +491,30 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, def get_sensor_data(self, sensor): try: - if sensor['temp_sensor_type'] in ["11", "22", "2302"]: - self._logger.info("temp_sensor_type dht") - temp, hum = self.read_dht_temp( - sensor['temp_sensor_type'], sensor['gpio_pin']) - elif sensor['temp_sensor_type'] == "18b20": - temp = self.read_18b20_temp(sensor['ds18b20_serial']) - hum = 0 - elif sensor['temp_sensor_type'] == "bme280": - temp, hum = self.read_bme280_temp( - sensor['temp_sensor_address']) - elif sensor['temp_sensor_type'] == "si7021": - temp, hum = self.read_si7021_temp( - sensor['temp_sensor_address']) - elif sensor['temp_sensor_type'] == "tmp102": - temp = self.read_tmp102_temp( - sensor['temp_sensor_address']) - hum = 0 + if self.development_mode: + temp, hum = self.read_dummy_temp() else: - self._logger.info("temp_sensor_type no match") - temp = None - hum = None + if sensor['temp_sensor_type'] in ["11", "22", "2302"]: + self._logger.info("temp_sensor_type dht") + temp, hum = self.read_dht_temp( + sensor['temp_sensor_type'], sensor['gpio_pin']) + elif sensor['temp_sensor_type'] == "18b20": + temp = self.read_18b20_temp(sensor['ds18b20_serial']) + hum = 0 + elif sensor['temp_sensor_type'] == "bme280": + temp, hum = self.read_bme280_temp( + sensor['temp_sensor_address']) + elif sensor['temp_sensor_type'] == "si7021": + temp, hum = self.read_si7021_temp( + sensor['temp_sensor_address']) + elif sensor['temp_sensor_type'] == "tmp102": + temp = self.read_tmp102_temp( + sensor['temp_sensor_address']) + hum = 0 + else: + self._logger.info("temp_sensor_type no match") + temp = None + hum = None if temp != -1 and hum != -1: temp = round(self.to_float( temp), 1) if not sensor['use_fahrenheit'] else round(self.to_float(temp) * 1.8 + 32, 1) @@ -537,6 +545,17 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, temperature_alarm['alarm_set_temp']) self.send_notification(msg) + def read_dummy_temp(self): + current_value = self.dummy_value + if current_value > 40 or current_value < 30: + self.dummy_delta = - self.dummy_delta + + return_value = current_value + self.dummy_delta + + self.dummy_value = return_value + + return return_value, return_value + def read_dht_temp(self, sensor, pin): try: script = os.path.dirname( @@ -717,15 +736,20 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, current_value = self.to_float( linked_data['temperature']) - if set_temperature - temp_deadband > current_value: - current_status = True - elif set_temperature < current_value: - current_status = False - else: - current_status = previous_status - if control_type == 'cooler' or control_type == 'dehumidifier': - current_status = not current_status + if current_value <= set_temperature and current_value >= (set_temperature - temp_deadband): + current_status = previous_status + elif current_value < set_temperature: + current_status = False + else: + current_status = True + else: + if current_value <= set_temperature and current_value >= (set_temperature - temp_deadband): + current_status = previous_status + elif current_value > set_temperature: + current_status = False + else: + current_status = True if control_type == 'heater' and max_temp > 0.0 and max_temp < current_value: if self._settings.get(["debug"]) is True: diff --git a/octoprint_enclosure/static/js/enclosure.js b/octoprint_enclosure/static/js/enclosure.js index 31126bf..fd8e75d 100644 --- a/octoprint_enclosure/static/js/enclosure.js +++ b/octoprint_enclosure/static/js/enclosure.js @@ -188,6 +188,7 @@ $(function () { return (output['index_id'] == item.index_id()); }).pop(); if (linked_output) { + linked_output.gpio_status(output['status']) linked_output.auto_shutdown(output['auto_shutdown']) linked_output.auto_startup(output['auto_startup']) } diff --git a/octoprint_enclosure/templates/enclosure_tab.jinja2 b/octoprint_enclosure/templates/enclosure_tab.jinja2 index ffc251c..3b8b479 100644 --- a/octoprint_enclosure/templates/enclosure_tab.jinja2 +++ b/octoprint_enclosure/templates/enclosure_tab.jinja2 @@ -216,6 +216,12 @@ Dehumidifier + + on + + + off +