From 0f42153591301d4efe8ecef5e00dc4d436be48e7 Mon Sep 17 00:00:00 2001 From: mrillies Date: Thu, 21 Sep 2017 02:14:56 +1000 Subject: [PATCH 1/4] Update controller.py Fix for issue #125: Missing 'power' in call to actor_on had heater id number set as power --- modules/core/controller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/controller.py b/modules/core/controller.py index aef2a7e..05f21fd 100644 --- a/modules/core/controller.py +++ b/modules/core/controller.py @@ -139,7 +139,7 @@ class FermenterController(ControllerBase, ActorController, SensorController): def heater_on(self, power=100): f = self.api.cache.get("fermenter").get(self.fermenter_id) if f.heater is not None: - self.actor_on(int(f.heater)) + self.actor_on(power, int(f.heater)) @cbpi.try_catch(None) def heater_off(self): From c1c5faa1f3c46297902807180e2e915573244fdc Mon Sep 17 00:00:00 2001 From: mrillies Date: Fri, 22 Sep 2017 21:41:19 +1000 Subject: [PATCH 2/4] Add reset to post put call (Fermenter update) Added a call to reset the fermenter after an update. Reset builds step parameter with FerementerStep objects from database. Reset all clears current ferment steps - this may be positive or negative --- modules/fermenter/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/fermenter/__init__.py b/modules/fermenter/__init__.py index e2dcf91..93a353f 100755 --- a/modules/fermenter/__init__.py +++ b/modules/fermenter/__init__.py @@ -77,6 +77,7 @@ class FermenterView(BaseView): def _post_put_callback(self, m): m.state = False + self.reset(int(m.id)) @route('//targettemp/', methods=['POST']) def postTargetTemp(self, id, temp): From 820061cf090969d591a3fdff9fd3975edb91a6c7 Mon Sep 17 00:00:00 2001 From: Manuel83 Date: Fri, 22 Sep 2017 13:52:00 +0200 Subject: [PATCH 3/4] - Two new hop steps added. Now you can set 5 hop alerts --- modules/base_plugins/brew_steps/__init__.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/base_plugins/brew_steps/__init__.py b/modules/base_plugins/brew_steps/__init__.py index f46da69..16dd65b 100644 --- a/modules/base_plugins/brew_steps/__init__.py +++ b/modules/base_plugins/brew_steps/__init__.py @@ -165,7 +165,11 @@ class BoilStep(StepBase): hop_2 = Property.Number("Hop 2 Addition", configurable=True, description="Second Hop alert") hop_2_added = Property.Number("", default_value=None) hop_3 = Property.Number("Hop 3 Addition", configurable=True) - hop_3_added = Property.Number("", default_value=None, description="Second Hop alert") + hop_3_added = Property.Number("", default_value=None, description="Third Hop alert") + hop_4 = Property.Number("Hop 4 Addition", configurable=True) + hop_4_added = Property.Number("", default_value=None, description="Fourth Hop alert") + hop_5 = Property.Number("Hop 5 Addition", configurable=True) + hop_5_added = Property.Number("", default_value=None, description="Fives Hop alert") def init(self): ''' @@ -217,6 +221,8 @@ class BoilStep(StepBase): self.check_hop_timer(1, self.hop_1) self.check_hop_timer(2, self.hop_2) self.check_hop_timer(3, self.hop_3) + self.check_hop_timer(4, self.hop_4) + self.check_hop_timer(5, self.hop_5) # Check if timer finished and go to next step if self.is_timer_finished() == True: self.notify("Boil Step Completed!", "Starting the next step", timeout=None) From 65833b124945ce330714b8c830751c3fde2f350c Mon Sep 17 00:00:00 2001 From: bertah Date: Sat, 23 Sep 2017 10:03:48 -0400 Subject: [PATCH 4/4] GPIOPWM: Fixed misleading label "duty cycle" to "frequency", and handle decimal frequency values. Tested working with Rpi.GPIO --- modules/base_plugins/gpio_actor/__init__.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/base_plugins/gpio_actor/__init__.py b/modules/base_plugins/gpio_actor/__init__.py index e346ef9..820a55e 100644 --- a/modules/base_plugins/gpio_actor/__init__.py +++ b/modules/base_plugins/gpio_actor/__init__.py @@ -36,10 +36,10 @@ class GPIOSimple(ActorBase): class GPIOPWM(ActorBase): gpio = Property.Select("GPIO", options=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27], description="GPIO to which the actor is connected") - duty_cylce = Property.Number("Duty Cycle", configurable=True) + frequency = Property.Number("Frequency (Hz)", configurable=True) p = None - power = 100 + power = 100 # duty cycle def init(self): GPIO.setup(int(self.gpio), GPIO.OUT) @@ -50,10 +50,10 @@ class GPIOPWM(ActorBase): if power is not None: self.power = int(power) - if self.duty_cylce is None: - duty_cylce = 50 + if self.frequency is None: + self.frequency = 0.5 # 2 sec - self.p = GPIO.PWM(int(self.gpio), int(self.duty_cylce)) + self.p = GPIO.PWM(int(self.gpio), float(self.frequency)) self.p.start(int(self.power)) def set_power(self, power):