Only add templates once if present multiple times.
authorBenjamin Braatz <bb@bbraatz.eu>
Tue, 21 Sep 2021 18:56:35 +0000 (20:56 +0200)
committerBenjamin Braatz <bb@bbraatz.eu>
Tue, 21 Sep 2021 18:56:35 +0000 (20:56 +0200)
controlpi_plugins/statemachine.py

index 089cc792bb8351e02148c3019fa80944841537c3..05b6025be2655d8142317222627016c336b731a8 100644 (file)
@@ -1,9 +1,3 @@
-"""Provide state machine plugin.
-
-…
-
-TODO: documentation, doctests
-"""
 from controlpi import BasePlugin, Message, MessageTemplate
 
 
@@ -95,10 +89,14 @@ class StateMachine(BasePlugin):
         for state in self.conf['states']:
             commands = self.conf['states'][state]['commands']
             for command in commands:
-                sends.append(MessageTemplate.from_message(command))
+                template = MessageTemplate.from_message(command)
+                if template not in sends:
+                    sends.append(template)
             transitions = self.conf['states'][state]['transitions']
             for transition in transitions:
-                receives.append(MessageTemplate(transition['trigger']))
+                template = MessageTemplate(transition['trigger'])
+                if template not in receives:
+                    receives.append(template)
         self.bus.register(self.name, 'StateMachine',
                           sends, receives, self._receive)