From 99c28d59c6c8a69b7eaaf3071463f185e8db8a4d Mon Sep 17 00:00:00 2001 From: Vitor de Miranda Henrique Date: Tue, 17 Nov 2015 20:59:49 -0600 Subject: [PATCH] GPIO improvements --- README.md | 18 ++++++++++------ octoprint_enclosure/__init__.py | 25 +++++++++------------- octoprint_enclosure/static/js/enclosure.js | 8 +++---- 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 9128d65..ee93e30 100644 --- a/README.md +++ b/README.md @@ -50,18 +50,22 @@ chmod +x ~/.octoprint/plugins/OctoPrint-Enclosure/SensorScript/GetTemperature.py chmod +x ~/.octoprint/plugins/OctoPrint-Enclosure/SensorScript/GetHumidity.py ``` -**PLEASE NOTE** -Sometimes raspbery pi don't want to obey the command to set the pin on GPIO correctly. If your relays are not working as expected try manually turning them on on terminal using: +To use raspberry pi GPIO without needing to run octoprint as root this plugin uses (wiringPi)[http://wiringpi.com] + +You must install wiringPi using: + ``` -sudo su -echo **XX** > /sys/class/gpio/export -echo out > /sys/class/gpio/gpio**XX**/direction -echo **XX** > /sys/class/gpio/gpio11/value +git clone git://git.drogon.net/wiringPi +cd wiringPi +git pull origin +cd wiringPi +./build ``` -Where XX is the pin on raspberry pi. +If by any change the git page is offline you can follow *Plan B* on wiringPi website. + ## Configuration diff --git a/octoprint_enclosure/__init__.py b/octoprint_enclosure/__init__.py index 2ac9334..1066a7e 100644 --- a/octoprint_enclosure/__init__.py +++ b/octoprint_enclosure/__init__.py @@ -25,9 +25,8 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, self.configureGPIO(self._settings.get_int(["lightPin"])) def configureGPIO(self, pin): - os.system("sudo echo "+str(pin)+" > /sys/class/gpio/export ") - os.system("sudo echo out > /sys/class/gpio/gpio"+str(pin)+"/direction") - os.system("sudo echo 1 > /sys/class/gpio/gpio"+str(pin)+"/value") + 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) @@ -54,9 +53,9 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, def heaterHandler(self): command="" if self.enclosureCurrentTemperature /sys/class/gpio/gpio"+str(self._settings.get_int(["fanPin"]))+"/value") + os.system("gpio -g write "+str(self._settings.get_int(["fanPin"]))+" 0") else: - os.system("sudo echo 1 > /sys/class/gpio/gpio"+str(self._settings.get_int(["fanPin"]))+"/value") + os.system("gpio -g write "+str(self._settings.get_int(["fanPin"]))+" 1") return flask.jsonify(success=True) @octoprint.plugin.BlueprintPlugin.route("/handleLight", methods=["GET"]) def handleLight(self): if self._settings.get_boolean(["lightEnable"]): if flask.request.values["status"] == "on": - os.system("sudo echo 0 > /sys/class/gpio/gpio"+str(self._settings.get_int(["lightPin"]))+"/value") + os.system("gpio -g write "+str(self._settings.get_int(["lightPin"]))+" 0") else: - os.system("sudo echo 1 > /sys/class/gpio/gpio"+str(self._settings.get_int(["lightPin"]))+"/value") + os.system("gpio -g write "+str(self._settings.get_int(["lightPin"]))+" 1") return flask.jsonify(success=True) #~~ EventPlugin mixin @@ -111,7 +106,7 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, self.enclosureSetTemperature = 0 if self._settings.get(['fanEnable']): - os.system("sudo echo 1 > /sys/class/gpio/gpio"+str(self._settings.get_int(["fanPin"]))+"/value") + os.system("gpio -g write "+str(self._settings.get_int(["lightPin"]))+" 1") #~~ SettingsPlugin mixin def on_settings_save(self, data): diff --git a/octoprint_enclosure/static/js/enclosure.js b/octoprint_enclosure/static/js/enclosure.js index 23767e8..13f5ff3 100644 --- a/octoprint_enclosure/static/js/enclosure.js +++ b/octoprint_enclosure/static/js/enclosure.js @@ -34,7 +34,7 @@ $(function() { data: {"enclosureSetTemp": Number($("#enclosureSetTemp").val())}, success: function(data) { $("#enclosureSetTemp").val(''); - $("#enclosureSetTemp").attr("placeholder", self.getStatusHeater()); + $("#enclosureSetTemp").attr("placeholder", self.getStatusHeater(data.enclosureSetTemperature,data.enclosureCurrentTemperature)); } }); }else{ @@ -50,7 +50,7 @@ $(function() { data: {"enclosureSetTemp":0}, success: function(data) { $("#enclosureSetTemp").val(''); - $("#enclosureSetTemp").attr("placeholder", self.getStatusHeater()); + $("#enclosureSetTemp").attr("placeholder", self.getStatusHeater(data.enclosureSetTemperature,data.enclosureCurrentTemperature)); } }); } @@ -71,9 +71,7 @@ $(function() { }).responseText; } - self.getStatusHeater = function(){ - setTemp = self.requestEnclosureSetTemperature(); - currentTemp = self.requestEnclosureTemperature(); + self.getStatusHeater = function(setTemp,currentTemp){ if (parseFloat(setTemp)>parseFloat(currentTemp)){ return cleanTemperature(setTemp); }