From 1f5891865f10e9c0ec5ea609fca341ab213254d3 Mon Sep 17 00:00:00 2001 From: Vitor de Miranda Henrique Date: Fri, 3 Mar 2017 13:28:28 -0600 Subject: [PATCH 1/4] custom g-code for filament detection --- octoprint_enclosure/__init__.py | 82 ++++++++++--------- octoprint_enclosure/static/js/enclosure.js | 14 +++- .../templates/enclosure_settings.jinja2 | 56 +++++++------ 3 files changed, 87 insertions(+), 65 deletions(-) diff --git a/octoprint_enclosure/__init__.py b/octoprint_enclosure/__init__.py index 0f297f7..947a19e 100644 --- a/octoprint_enclosure/__init__.py +++ b/octoprint_enclosure/__init__.py @@ -85,14 +85,13 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, self.filamentSensor = EnclosureGPIO(self._settings.get_int(["filamentSensorPin"]),"filamentSensor",self._settings.get(["filamentSensorActiveLow"]), self._settings.get(["filamentSensorEnable"]),False,False,0,False) - self.io1.configureGPIO() self.io2.configureGPIO() self.io3.configureGPIO() self.io4.configureGPIO() self.heater.configureGPIO() self.filamentSensor.configureGPIO() - + self._settings.set(["useCelsius"],not self._settings.get(["useFahrenheit"])) def startTimer(self): @@ -107,46 +106,46 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, return 0 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 self._settings.get(["debug"]) == True and self._settings.get(["heaterEnable"]) == True: - self._logger.info("DEBUG -> Reading temperature stdout: %s",stdout) - sTemp.replace(" ", "") - fTemp = self.toFloat(sTemp) - if sTemp.find("Failed") != -1 or fTemp == 0: - if self._settings.get(["heaterEnable"]) == True: + if self._settings.get(["temperatureReadingEnable"]): + 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 self._settings.get(["debug"]) == True: + self._logger.info("DEBUG -> Reading temperature stdout: %s",stdout) + sTemp.replace(" ", "") + fTemp = self.toFloat(sTemp) + if sTemp.find("Failed") != -1 or fTemp == 0: self._logger.info("Failed to read Temperature") - else: - self.enclosureCurrentTemperature = fTemp*1.8 + 32 if self._settings.get(["useFahrenheit"]) else fTemp + else: + self.enclosureCurrentTemperature = fTemp*1.8 + 32 if self._settings.get(["useFahrenheit"]) else fTemp - 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() - if self._settings.get(["debug"]) == True and self._settings.get(["heaterEnable"]) == True: - self._logger.info("DEBUG -> Reading humidity stdout: %s",stdout) + 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() + if self._settings.get(["debug"]) == True: + self._logger.info("DEBUG -> Reading humidity stdout: %s",stdout) sHum.replace(" ", "") fHum = self.toFloat(sHum) if sHum.find("Failed") != -1 or fHum == 0: - if self._settings.get(["heaterEnable"]) == True: - self._logger.info("Failed to read Humidity") + self._logger.info("Failed to read Humidity") else: self.enclosureCurrentHumidity = fHum - self._plugin_manager.send_plugin_message(self._identifier, dict(enclosuretemp=self.enclosureCurrentTemperature,enclosureHumidity=self.enclosureCurrentHumidity)) - self.heaterHandler() + self._plugin_manager.send_plugin_message(self._identifier, dict(enclosuretemp=self.enclosureCurrentTemperature,enclosureHumidity=self.enclosureCurrentHumidity)) + self.heaterHandler() def heaterHandler(self): - self.currrentHeaterStatus = self.enclosureCurrentTemperature{{ _('Heater') }} -
-
-
- -
-
-
- -
- -
-
-
- -
-
- -

{{ _('Temperature Sensor') }}

Available options are: 11 for DHT11; 22 for DHT22; 2302 for AM2302; 1820 for DS18B20 1-wire temperature sensor +
+ +
@@ -55,6 +37,28 @@ Available options are: 11 for DHT11; 22 for DHT22; 2302 for AM2302; 1820 for DS1
+

{{ _('Heater') }}

+
+
+
+ +
+
+
+ +
+ +
+
+
+ +
+
+

{{ _('IO 1') }}

@@ -236,6 +240,12 @@ Available options are: 11 for DHT11; 22 for DHT22; 2302 for AM2302; 1820 for DS1 {{ _('Active Low') }}
+
+ +
+ +
+

{{ _('Debug / Other') }}

-- 2.39.5 From 39061bfedd459029cfd0bb02566b762a20addf92 Mon Sep 17 00:00:00 2001 From: Vitor de Miranda Henrique Date: Fri, 3 Mar 2017 22:25:45 -0600 Subject: [PATCH 2/4] bug fix --- octoprint_enclosure/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/octoprint_enclosure/__init__.py b/octoprint_enclosure/__init__.py index 947a19e..554b3d4 100644 --- a/octoprint_enclosure/__init__.py +++ b/octoprint_enclosure/__init__.py @@ -167,7 +167,7 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, #if self._settings.get(["filamentSensorActiveLow"]) and (not GPIO.input(self.filamentSensor.pinNumber)): if self._settings.get(["filamentSensorActiveLow"]) ^ GPIO.input(self.filamentSensor.pinNumber): self._logger.info("Detected end of filament.") - for line in filamentSensorGcode.split(';'): + for line in self._settings.get(["filamentSensorGcode"]).split(';'): if line: self._printer.commands(line.strip().capitalize()) self._logger.info("Sending GCODE command: %s",line.strip().capitalize()) -- 2.39.5 From 3c75a39e322afb73acf5521e9dc02cc9d3070802 Mon Sep 17 00:00:00 2001 From: Vitor de Miranda Henrique Date: Sat, 4 Mar 2017 20:49:34 -0600 Subject: [PATCH 3/4] bug fix --- octoprint_enclosure/__init__.py | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/octoprint_enclosure/__init__.py b/octoprint_enclosure/__init__.py index 554b3d4..e1ee378 100644 --- a/octoprint_enclosure/__init__.py +++ b/octoprint_enclosure/__init__.py @@ -24,17 +24,21 @@ class EnclosureGPIO(): self.timeDelay = timeDelay def configureGPIO(self): - if self.enable: - if self.isOutput: - if self.activeLow: #if is active low, we start disabelling it by making it high! - GPIO.setup(self.pinNumber, GPIO.OUT, initial=GPIO.HIGH) + try: + if self.enable: + if self.isOutput: + if self.activeLow: #if is active low, we start disabelling it by making it high! + GPIO.setup(self.pinNumber, GPIO.OUT, initial=GPIO.HIGH) + else: + GPIO.setup(self.pinNumber, GPIO.OUT, initial=GPIO.LOW) else: - GPIO.setup(self.pinNumber, GPIO.OUT, initial=GPIO.LOW) - else: - if self.activeLow: - GPIO.setup(self.pinNumber, GPIO.IN, pull_up_down=GPIO.PUD_UP) - else: - GPIO.setup(self.pinNumber, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) + if self.activeLow: + GPIO.setup(self.pinNumber, GPIO.IN, pull_up_down=GPIO.PUD_UP) + else: + GPIO.setup(self.pinNumber, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) + except: + self._logger.info("Error while configuring GPIO: %s",self.pinNumber) + pass def write(self,active): if self.activeLow: @@ -164,15 +168,18 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, def handleFilamentDetection(self,channel): if self._printer.is_printing(): - #if self._settings.get(["filamentSensorActiveLow"]) and (not GPIO.input(self.filamentSensor.pinNumber)): - if self._settings.get(["filamentSensorActiveLow"]) ^ GPIO.input(self.filamentSensor.pinNumber): + activeLow = self._settings.get(["filamentSensorActiveLow"]) + gpioStatus = GPIO.input(self.filamentSensor.pinNumber) + + if self._settings.get(["debug"]) == True: + self._logger.info("DEBUG -> Filament detection active low: %s gpio status: %s",activeLow,gpioStatus) + if activeLow ^ gpioStatus: self._logger.info("Detected end of filament.") for line in self._settings.get(["filamentSensorGcode"]).split(';'): if line: self._printer.commands(line.strip().capitalize()) self._logger.info("Sending GCODE command: %s",line.strip().capitalize()) - def stopFilamentDetection(self): try: GPIO.remove_event_detect(self.filamentSensor.pinNumber) -- 2.39.5 From 608895b63c7fa452fa20e14da50c40c8eaa53772 Mon Sep 17 00:00:00 2001 From: Vitor de Miranda Henrique Date: Sat, 4 Mar 2017 20:50:11 -0600 Subject: [PATCH 4/4] V 2.2 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 30a3e01..d36596a 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ plugin_package = "octoprint_enclosure" plugin_name = "OctoPrint-Enclosure" # The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module -plugin_version = "2.1" +plugin_version = "2.2" # The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin # module -- 2.39.5