{
- "TriggerWait2": {
+ "TriggerWaitCheck": {
"plugin": "Alias",
- "from": { "sender": "Wait1", "event": "finished" },
- "to": { "target": "Wait2", "command": "wait" }
+ "from": { "sender": "WaitCheck", "event": "finished" },
+ "to": { "target": "WaitCheck", "command": "wait" }
},
- "TriggerWait1": {
+ "TriggerStateCheck": {
"plugin": "Alias",
- "from": { "sender": "Wait2", "event": "finished" },
- "to": { "target": "Wait1", "command": "wait" }
+ "from": { "sender": "WaitCheck", "event": "finished" },
+ "to": { "target": "State", "command": "get state" }
},
- "Wait1": {
+ "TriggerWaitOnOff": {
+ "plugin": "Alias",
+ "from": { "sender": "WaitOn", "event": "finished" },
+ "to": { "target": "WaitOff", "command": "wait" }
+ },
+ "TriggerStateOnOff": {
+ "plugin": "Alias",
+ "from": { "sender": "WaitOn", "event": "finished" },
+ "to": { "target": "State", "command": "set state", "state": false }
+ },
+ "TriggerWaitOffOn": {
+ "plugin": "Alias",
+ "from": { "sender": "WaitOff", "event": "finished" },
+ "to": { "target": "WaitOn", "command": "wait" }
+ },
+ "TriggerStateOffOn": {
+ "plugin": "Alias",
+ "from": { "sender": "WaitOff", "event": "finished" },
+ "to": { "target": "State", "command": "set state", "state": true }
+ },
+ "WaitCheck": {
"plugin": "Wait",
"seconds": 1.0
},
- "Wait2": {
+ "WaitOn": {
+ "plugin": "Wait",
+ "seconds": 2.0
+ },
+ "WaitOff": {
"plugin": "Wait",
"seconds": 2.0
},
+ "State": {
+ "plugin": "State"
+ },
"Test Procedure": {
"plugin": "Init",
"messages": [
{ "event": "started" },
- { "target": "Wait1", "command": "wait" },
+ { "target": "WaitOff", "command": "wait" },
+ { "target": "WaitCheck", "command": "wait" },
{ "event": "stopped" }
]
},
alias_message[key] = message[key]
await self._bus.send(alias_message)
- def _process_conf(self, conf):
+ def _process_conf(self, conf: PluginConfiguration) -> None:
self._from = conf['from']
self._to = conf['to']
self._bus.register(self._name, [self._to], [self._from], self._alias)
+
+
+class State(BasePlugin):
+ async def _receive(self, message: Message) -> None:
+ if 'command' in message:
+ if message['command'] == 'get state':
+ await self._bus.send({'sender': self._name,
+ 'state': self._state,
+ 'changed': False})
+ elif message['command'] == 'set state':
+ if 'state' in message and self._state != message['state']:
+ self._state: bool = message['state']
+ await self._bus.send({'sender': self._name,
+ 'state': self._state,
+ 'changed': True})
+
+ def _process_conf(self, conf: PluginConfiguration) -> None:
+ self._state = False
+ sends: list[Message] = [{'sender': self._name, 'state': bool}]
+ receives: list[Message] = [{'target': self._name,
+ 'command': 'get state'},
+ {'target': self._name,
+ 'command': 'set state',
+ 'state': bool}]
+ self._bus.register(self._name, sends, receives, self._receive)