Merge branch 'master' into master

This commit is contained in:
LoPromise
2022-01-05 13:04:04 +01:00
committed by GitHub
2 changed files with 48 additions and 11 deletions

View File

@@ -72,7 +72,15 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, octoprint.plugin.TemplateP
development_mode = False
dummy_value = 30.0
dummy_delta = 0.5
def __init__(self):
# mqtt helper
self.mqtt_publish = lambda *args, **kwargs: None
# hardcoded
self.mqtt_root_topic = "octoprint/plugins/enclosure"
self.mqtt_sensor_topic = self.mqtt_root_topic + "/" + "enclosure"
self.mqtt_message = "{\"temperature\": 0, \"humidity\": 0}"
def start_timer(self):
"""
Function to start timer that checks enclosure temperature
@@ -134,7 +142,15 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, octoprint.plugin.TemplateP
return -1
# ~~ StartupPlugin mixin
def on_after_startup(self):
def on_after_startup(self):
helpers = self._plugin_manager.get_helpers("mqtt", "mqtt_publish", "mqtt_subscribe", "mqtt_unsubscribe")
if helpers:
if "mqtt_publish" in helpers:
self.mqtt_publish = helpers["mqtt_publish"]
else:
self._logger.info("mqtt helpers not found. mqtt functions won't work")
self.pwm_instances = []
self.event_queue = []
self.rpi_outputs_not_changed = []
@@ -820,6 +836,9 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, octoprint.plugin.TemplateP
self.handle_temperature_events()
self.handle_pwm_linked_temperature()
self.update_ui()
self.mqtt_sensor_topic = self.mqtt_root_topic + "/" + sensor['label']
self.mqtt_message = {"temperature": temp, "humidity": hum}
self.mqtt_publish(self.mqtt_sensor_topic, self.mqtt_message)
except Exception as ex:
self.log_error(ex)
@@ -982,7 +1001,7 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, octoprint.plugin.TemplateP
else:
if sensor['temp_sensor_type'] in ["11", "22", "2302"]:
temp, hum = self.read_dht_temp(sensor['temp_sensor_type'], sensor['gpio_pin'])
airquaility = 0
airquality = 0
elif sensor['temp_sensor_type'] == "18b20":
temp = self.read_18b20_temp(sensor['ds18b20_serial'])
hum = 0

View File

@@ -1,9 +1,10 @@
import sys
import time
import adafruit_dht
# Parse command line parameters.
sensor_args = {
sensor_args = {
'11': adafruit_dht.DHT11,
'22': adafruit_dht.DHT22,
'2302': adafruit_dht.DHT22
@@ -16,12 +17,29 @@ else:
sys.exit(1)
dht_dev = sensor(pin)
humidity = dht_dev.humidity
temperature = dht_dev.temperature
if humidity is not None and temperature is not None:
print('{0:0.1f} | {1:0.1f}'.format(temperature, humidity))
else:
print('-1 | -1')
# DHT sensor read fails quite often, causing enclosure plugin to report value of 0.
# If this happens, retry as suggested in the adafruit_dht docs.
max_retries = 3
retry_count = 0
while retry_count <= max_retries:
try:
humidity = dht_dev.humidity
temperature = dht_dev.temperature
sys.exit(1)
if humidity is not None and temperature is not None:
print('{0:0.1f} | {1:0.1f}'.format(temperature, humidity))
sys.exit(1)
except RuntimeError as e:
time.sleep(2)
retry_count += 1
continue
except Exception as e:
dht_dev.exit()
raise e
time.sleep(1)
retry_count += 1
print('-1 | -1')
sys.exit(1)