From dfc9b8687f5506127b0728098579c0da6cff1a88 Mon Sep 17 00:00:00 2001 From: Dirk Alders Date: Thu, 7 Aug 2025 15:05:00 +0200 Subject: [PATCH] Added aunt emma --- piface_function.py | 79 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 56 insertions(+), 23 deletions(-) diff --git a/piface_function.py b/piface_function.py index ff6f300..94734b6 100644 --- a/piface_function.py +++ b/piface_function.py @@ -28,7 +28,7 @@ class pi_face(object): PF_OUT_NAMES = ['Output 0', # 0 'Output 1', # 1 - 'Output 2', # 2 + 'Aunt Emma', # 2 'Ploenlein', # 3 'Bakery', # 4 'Mill', # 5 @@ -72,8 +72,11 @@ class pi_face(object): def get_output(self, index): return self.__pf_output_states__[index] - def get_ploenlein(self): - return self.get_output(3) + def set_aunt_emma(self, state): + self.set_output(2, state) + + def get_aunt_emma(self): + return self.get_output(2) def set_bakery(self, state): self.set_output(4, state) @@ -87,6 +90,9 @@ class pi_face(object): def get_mill(self): return self.get_output(5) + def get_ploenlein(self): + return self.get_output(3) + def set_ploenlein(self, state): self.set_output(3, state) @@ -294,6 +300,7 @@ class state_machine_day_state(state_machine.state_machine): class leyk(object): LOG_PREFIX = 'Leyk:' + TOPIC_AUNT_EMMA = config.MQTT_TOPIC + '/status/Aunt Emma' TOPIC_BAKE_HOUSE = config.MQTT_TOPIC + '/status/Bake House' TOPIC_BAKERY = config.MQTT_TOPIC + '/status/Bakery' TOPIC_MILL = config.MQTT_TOPIC + '/status/Mill' @@ -304,6 +311,7 @@ class leyk(object): TOPIC_STATE = config.MQTT_TOPIC + '/status/state' + RX_TOPIC_AUNT_EMMA = config.MQTT_TOPIC + '/set/Aunt Emma' RX_TOPIC_BAKE_HOUSE = config.MQTT_TOPIC + '/set/Bake House' RX_TOPIC_BAKERY = config.MQTT_TOPIC + '/set/Bakery' RX_TOPIC_MILL = config.MQTT_TOPIC + '/set/Mill' @@ -312,6 +320,7 @@ class leyk(object): RX_TOPIC_REESE_HOUSE = config.MQTT_TOPIC + '/set/Reese House' RX_TOPICS = [ + RX_TOPIC_AUNT_EMMA, RX_TOPIC_BAKE_HOUSE, RX_TOPIC_BAKERY, RX_TOPIC_MILL, @@ -323,6 +332,7 @@ class leyk(object): def __init__(self): self.__client__ = mqtt.mqtt_client(config.APP_NAME, config.MQTT_SERVER, 1883, config.MQTT_USER, config.MQTT_PASS) + self.__client__.add_callback(self.RX_TOPIC_AUNT_EMMA, self.__rx_aunt_emma__) self.__client__.add_callback(self.RX_TOPIC_BAKE_HOUSE, self.__rx_bake_house__) self.__client__.add_callback(self.RX_TOPIC_BAKERY, self.__rx_bakery__) self.__client__.add_callback(self.RX_TOPIC_MILL, self.__rx_mill__) @@ -331,6 +341,7 @@ class leyk(object): self.__client__.add_callback(self.RX_TOPIC_MODE, self.__rx_mode__) self.TOPIC_DATA = { + self.TOPIC_AUNT_EMMA: self.get_aunt_emma, self.TOPIC_BAKE_HOUSE: self.get_bake_house, self.TOPIC_BAKERY: self.get_bakery, self.TOPIC_MILL: self.get_mill, @@ -366,6 +377,9 @@ class leyk(object): self.publish(self.TOPIC_MODE_BOOL) self.publish(self.TOPIC_STATE) + def __rx_aunt_emma__(self, client, userdata, message): + self.set_aunt_emma(message.payload == b'true') + def __rx_bake_house__(self, client, userdata, message): self.set_bake_house(message.payload == b'true') @@ -427,6 +441,17 @@ class leyk(object): def get_ploenlein(self): return self.__pf__.get_ploenlein() + def set_aunt_emma(self, state, force=False): + if force or self.sm_mode.this_state_is(self.sm_mode.STATE_MANUAL): + self.__pf__.set_aunt_emma(state) + self.publish(self.TOPIC_AUNT_EMMA) + return True + else: + return False + + def get_aunt_emma(self): + return self.__pf__.get_aunt_emma() + def set_bakery(self, state, force=False): if force or self.sm_mode.this_state_is(self.sm_mode.STATE_MANUAL): self.__pf__.set_bakery(state) @@ -527,13 +552,15 @@ class leyk(object): # WAKE self._queue.enqueue(1, self.__queue_wrapper__, self.set_bakery, True, True) self._queue.enqueue(2, self.wait, 0 if no_delay else 5 * 60) - self._queue.enqueue(3, self.__queue_wrapper__, self.set_bake_house, True, True) - self._queue.enqueue(4, self.wait, 0 if no_delay else 10 * 60) - self._queue.enqueue(5, self.__queue_wrapper__, self.set_reese_house, True, True) - self._queue.enqueue(6, self.wait, 0 if no_delay else 7 * 60) - self._queue.enqueue(7, self.__queue_wrapper__, self.set_ploenlein, True, True) - self._queue.enqueue(8, self.wait, 0 if no_delay else 8 * 60) - self._queue.enqueue(9, self.__queue_wrapper__, self.set_mill, True, True) + self._queue.enqueue(3, self.__queue_wrapper__, self.set_aunt_emma, True, True) + self._queue.enqueue(4, self.wait, 0 if no_delay else 5 * 60) + self._queue.enqueue(5, self.__queue_wrapper__, self.set_bake_house, True, True) + self._queue.enqueue(6, self.wait, 0 if no_delay else 10 * 60) + self._queue.enqueue(7, self.__queue_wrapper__, self.set_reese_house, True, True) + self._queue.enqueue(8, self.wait, 0 if no_delay else 7 * 60) + self._queue.enqueue(9, self.__queue_wrapper__, self.set_ploenlein, True, True) + self._queue.enqueue(10, self.wait, 0 if no_delay else 8 * 60) + self._queue.enqueue(11, self.__queue_wrapper__, self.set_mill, True, True) def fill_sunrise_queue(self): no_delay = self.sm_day_state.previous_state_was(self.sm_day_state.STATE_IDLE) @@ -543,21 +570,25 @@ class leyk(object): self._queue.enqueue(3, self.wait, 0 if no_delay else 5 * 60) self._queue.enqueue(4, self.__queue_wrapper__, self.set_mill, False, True) self._queue.enqueue(5, self.wait, 0 if no_delay else 8 * 60) - self._queue.enqueue(6, self.__queue_wrapper__, self.set_bakery, False, True) - self._queue.enqueue(7, self.wait, 0 if no_delay else 12 * 60) - self._queue.enqueue(8, self.__queue_wrapper__, self.set_reese_house, False, True) + self._queue.enqueue(6, self.__queue_wrapper__, self.set_aunt_emma, False, True) + self._queue.enqueue(7, self.wait, 0 if no_delay else 8 * 60) + self._queue.enqueue(8, self.__queue_wrapper__, self.set_bakery, False, True) + self._queue.enqueue(9, self.wait, 0 if no_delay else 12 * 60) + self._queue.enqueue(10, self.__queue_wrapper__, self.set_reese_house, False, True) def fill_sunset_queue(self): no_delay = self.sm_day_state.previous_state_was(self.sm_day_state.STATE_IDLE) # SUNSET self._queue.enqueue(1, self.__queue_wrapper__, self.set_bake_house, True, True) - self._queue.enqueue(2, self.__queue_wrapper__, self.set_bakery, True, True) + self._queue.enqueue(2, self.__queue_wrapper__, self.set_aunt_emma, True, True) self._queue.enqueue(3, self.wait, 0 if no_delay else 10 * 60) - self._queue.enqueue(4, self.__queue_wrapper__, self.set_reese_house, True, True) - self._queue.enqueue(5, self.wait, 0 if no_delay else 8 * 60) - self._queue.enqueue(6, self.__queue_wrapper__, self.set_mill, True, True) - self._queue.enqueue(7, self.wait, 0 if no_delay else 7 * 60) - self._queue.enqueue(8, self.__queue_wrapper__, self.set_ploenlein, True, True) + self._queue.enqueue(4, self.__queue_wrapper__, self.set_bakery, True, True) + self._queue.enqueue(5, self.wait, 0 if no_delay else 10 * 60) + self._queue.enqueue(6, self.__queue_wrapper__, self.set_reese_house, True, True) + self._queue.enqueue(7, self.wait, 0 if no_delay else 8 * 60) + self._queue.enqueue(8, self.__queue_wrapper__, self.set_mill, True, True) + self._queue.enqueue(9, self.wait, 0 if no_delay else 7 * 60) + self._queue.enqueue(10, self.__queue_wrapper__, self.set_ploenlein, True, True) def fill_sleep_queue(self): no_delay = self.sm_day_state.previous_state_was(self.sm_day_state.STATE_IDLE) @@ -566,11 +597,13 @@ class leyk(object): self._queue.enqueue(2, self.wait, 0 if no_delay else 5 * 60) self._queue.enqueue(3, self.__queue_wrapper__, self.set_bakery, False, True) self._queue.enqueue(4, self.wait, 0 if no_delay else 9 * 60) - self._queue.enqueue(5, self.__queue_wrapper__, self.set_ploenlein, False, True) + self._queue.enqueue(5, self.__queue_wrapper__, self.set_aunt_emma, False, True) self._queue.enqueue(6, self.wait, 0 if no_delay else 9 * 60) - self._queue.enqueue(7, self.__queue_wrapper__, self.set_mill, False, True) - self._queue.enqueue(8, self.wait, 0 if no_delay else 6 * 60) - self._queue.enqueue(9, self.__queue_wrapper__, self.set_reese_house, False, True) + self._queue.enqueue(7, self.__queue_wrapper__, self.set_ploenlein, False, True) + self._queue.enqueue(8, self.wait, 0 if no_delay else 9 * 60) + self._queue.enqueue(9, self.__queue_wrapper__, self.set_mill, False, True) + self._queue.enqueue(10, self.wait, 0 if no_delay else 6 * 60) + self._queue.enqueue(11, self.__queue_wrapper__, self.set_reese_house, False, True) def task_1s(self, task_inst): self.sm_mode.work()