From: Benjamin Braatz Date: Wed, 26 Jan 2022 09:09:36 +0000 (+0100) Subject: 'entry' and 'exit' are optional. X-Git-Url: http://git.graph-it.com/?a=commitdiff_plain;h=aa82c6a6ab86730c3dc98cd9b38f58616a32e54b;p=graphit%2Fcontrolpi-statemachine.git 'entry' and 'exit' are optional. --- 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))