From aa82c6a6ab86730c3dc98cd9b38f58616a32e54b Mon Sep 17 00:00:00 2001 From: Benjamin Braatz Date: Wed, 26 Jan 2022 10:09:36 +0100 Subject: [PATCH] 'entry' and 'exit' are optional. --- controlpi_plugins/statemachine.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/controlpi_plugins/statemachine.py b/controlpi_plugins/statemachine.py index e38228f..3c9cd69 100644 --- a/controlpi_plugins/statemachine.py +++ b/controlpi_plugins/statemachine.py @@ -108,15 +108,20 @@ class StateMachine(BasePlugin): message['new state'] in self.conf['states']): assert isinstance(message['new state'], str) new_state = message['new state'] - commands = self.conf['states'][self._state]['exit'] + commands = [] + if 'exit' in self.conf['states'][self._state]: + commands += self.conf['states'][self._state]['exit'] for command in commands: await self.bus.send(Message(self.name, command)) self._state = new_state await self.bus.send(Message(self.name, {'event': 'changed', 'state': new_state})) - commands = (self.conf['states'][self._state]['entry'] - + self.conf['states'][self._state]['commands']) + commands = [] + if 'entry' in self.conf['states'][self._state]: + commands += self.conf['states'][self._state]['entry'] + if 'commands' in self.conf['states'][self._state]: + commands += self.conf['states'][self._state]['commands'] for command in commands: await self.bus.send(Message(self.name, command)) @@ -127,15 +132,20 @@ class StateMachine(BasePlugin): transition['to'] in self.conf['states']): assert isinstance(transition['to'], str) new_state = transition['to'] - commands = self.conf['states'][self._state]['exit'] + commands = [] + if 'exit' in self.conf['states'][self._state]: + commands += self.conf['states'][self._state]['exit'] for command in commands: await self.bus.send(Message(self.name, command)) self._state = new_state await self.bus.send(Message(self.name, {'event': 'changed', 'state': new_state})) - commands = (self.conf['states'][self._state]['entry'] - + self.conf['states'][self._state]['commands']) + commands = [] + if 'entry' in self.conf['states'][self._state]: + commands += self.conf['states'][self._state]['entry'] + if 'commands' in self.conf['states'][self._state]: + commands += self.conf['states'][self._state]['commands'] for command in commands: await self.bus.send(Message(self.name, command)) break @@ -144,7 +154,10 @@ class StateMachine(BasePlugin): """Go into initial state.""" if self.conf['init'] in self.conf['states']: self._state = self.conf['init'] - commands = (self.conf['states'][self._state]['entry'] - + self.conf['states'][self._state]['commands']) + commands = [] + if 'entry' in self.conf['states'][self._state]: + commands += self.conf['states'][self._state]['entry'] + if 'commands' in self.conf['states'][self._state]: + commands += self.conf['states'][self._state]['commands'] for command in commands: await self.bus.send(Message(self.name, command)) -- 2.34.1