diff --git a/octoprint_enclosure/__init__.py b/octoprint_enclosure/__init__.py index 209720f..0195c69 100644 --- a/octoprint_enclosure/__init__.py +++ b/octoprint_enclosure/__init__.py @@ -8,176 +8,188 @@ import os from subprocess import Popen, PIPE class EnclosurePlugin(octoprint.plugin.StartupPlugin, - octoprint.plugin.TemplatePlugin, - octoprint.plugin.SettingsPlugin, - octoprint.plugin.AssetPlugin, - octoprint.plugin.BlueprintPlugin, - octoprint.plugin.EventHandlerPlugin): + octoprint.plugin.TemplatePlugin, + octoprint.plugin.SettingsPlugin, + octoprint.plugin.AssetPlugin, + octoprint.plugin.BlueprintPlugin, + octoprint.plugin.EventHandlerPlugin): - enclosureSetTemperature=0.0 - enclosureCurrentTemperature=0.0 - enclosureCurrentHumidity=0.0 - - def startGPIO(self): - self.configureGPIO(self._settings.get_int(["heaterPin"])) - self.configureGPIO(self._settings.get_int(["fanPin"])) - self.configureGPIO(self._settings.get_int(["lightPin"])) - - def configureGPIO(self, pin): - os.system("gpio -g mode "+str(pin)+" out") - os.system("gpio -g write "+str(pin)+" 1") - - def startTimer(self): - self._checkTempTimer = RepeatedTimer(10, self.checkEnclosureTemp, None, None, True) - self._checkTempTimer.start() + enclosureSetTemperature=0.0 + enclosureCurrentTemperature=0.0 + enclosureCurrentHumidity=0.0 + + def startGPIO(self): + self.configureGPIO(self._settings.get_int(["heaterPin"])) + self.configureGPIO(self._settings.get_int(["fanPin"])) + self.configureGPIO(self._settings.get_int(["lightPin"])) + + def configureGPIO(self, pin): + os.system("gpio -g mode "+str(pin)+" out") + os.system("gpio -g write "+str(pin)+" 1") + + def startTimer(self): + self._checkTempTimer = RepeatedTimer(10, self.checkEnclosureTemp, None, None, True) + self._checkTempTimer.start() - def checkEnclosureTemp(self): - if self._settings.get(["dhtModel"]) == 1820 or self._settings.get(["dhtModel"]) == '1820': - stdout = Popen("sudo "+self._settings.get(["getTempScript"])+" "+str(self._settings.get(["dhtModel"])), shell=True, stdout=PIPE).stdout - else: - stdout = Popen("sudo "+self._settings.get(["getTempScript"])+" "+str(self._settings.get(["dhtModel"]))+" "+str(self._settings.get(["dhtPin"])), shell=True, stdout=PIPE).stdout - sTemp = stdout.read() - if sTemp.find("Failed") != -1: - self._logger.info("Failed to read Temperature") - else: - self.enclosureCurrentTemperature = float(sTemp) + def toFloat(self, value): + try: + val = float(value) + return val + except: + self._logger.info("Failed to convert to float") + return 0 - if self._settings.get(["dhtModel"]) != 1820 or self._settings.get(["dhtModel"]) != '1820': - stdout = Popen("sudo "+self._settings.get(["getHumiScript"])+" "+str(self._settings.get(["dhtModel"]))+" "+str(self._settings.get(["dhtPin"])), shell=True, stdout=PIPE).stdout - sHum = stdout.read() - if sHum.find("Failed") != -1: - self._logger.info("Failed to read Humidity") - else: - self.enclosureCurrentHumidity = float(sHum) + def checkEnclosureTemp(self): + if self._settings.get(["dhtModel"]) == 1820 or self._settings.get(["dhtModel"]) == '1820': + stdout = Popen("sudo "+self._settings.get(["getTempScript"])+" "+str(self._settings.get(["dhtModel"])), shell=True, stdout=PIPE).stdout + else: + stdout = Popen("sudo "+self._settings.get(["getTempScript"])+" "+str(self._settings.get(["dhtModel"]))+" "+str(self._settings.get(["dhtPin"])), shell=True, stdout=PIPE).stdout + sTemp = stdout.read() + sTemp.replace(" ", "") + if sTemp.find("Failed") != -1: + self._logger.info("Failed to read Temperature") + else: + #self._logger.info(sTemp) + self.enclosureCurrentTemperature = self.toFloat(sTemp) + #self._logger.info("enclosureCurrentTemperature is: %s",self.enclosureCurrentTemperature) - self._plugin_manager.send_plugin_message(self._identifier, dict(enclosuretemp=self.enclosureCurrentTemperature,enclosureHumidity=self.enclosureCurrentHumidity)) - self.heaterHandler() + if self._settings.get(["dhtModel"]) != '1820': + stdout = Popen("sudo "+self._settings.get(["getHumiScript"])+" "+str(self._settings.get(["dhtModel"]))+" "+str(self._settings.get(["dhtPin"])), shell=True, stdout=PIPE).stdout + sHum = stdout.read() + sHum.replace(" ", "") + if sHum.find("Failed") != -1: + self._logger.info("Failed to read Humidity") + else: + self._logger.info(sHum) + self.enclosureCurrentHumidity = self.toFloat(sHum) + self._plugin_manager.send_plugin_message(self._identifier, dict(enclosuretemp=self.enclosureCurrentTemperature,enclosureHumidity=self.enclosureCurrentHumidity)) + self.heaterHandler() - def heaterHandler(self): - command="" - if self.enclosureCurrentTemperature