From 3e1bc368e850ea475c3c575085a3c71c90847668 Mon Sep 17 00:00:00 2001 From: Benjamin Braatz Date: Wed, 27 Oct 2021 11:15:48 +0200 Subject: [PATCH] Add dates to Counter. --- controlpi_plugins/util.py | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/controlpi_plugins/util.py b/controlpi_plugins/util.py index d8b63a8..c9ad0b9 100644 --- a/controlpi_plugins/util.py +++ b/controlpi_plugins/util.py @@ -38,7 +38,7 @@ Test Log: {'sender': 'Test Alias', 'id': 'translated', 'content': 'Test Message'} """ import asyncio -import datetime +from datetime import datetime from controlpi import BasePlugin, Message, MessageTemplate @@ -439,31 +439,39 @@ class Counter(BasePlugin): 'command': {'const': 'reset'}}]} test(): {'sender': 'test()', 'target': 'Test Counter', 'command': 'get count'} - test(): {'sender': 'Test Counter', 'count': 0} + test(): {'sender': 'Test Counter', 'count': 0, + 'since': ..., 'until': ...} test(): {'sender': 'test()', 'id': 42} test(): {'sender': 'test()', 'id': 42} test(): {'sender': 'test()', 'id': 49} test(): {'sender': 'test()', 'target': 'Test Counter', 'command': 'get count'} - test(): {'sender': 'Test Counter', 'count': 2} + test(): {'sender': 'Test Counter', 'count': 2, + 'since': ..., 'until': ...} test(): {'sender': 'test()', 'id': 42} test(): {'sender': 'test()', 'id': 42} test(): {'sender': 'test()', 'id': 42} test(): {'sender': 'test()', 'target': 'Test Counter', 'command': 'reset'} - test(): {'sender': 'Test Counter', 'count': 5} + test(): {'sender': 'Test Counter', 'count': 5, + 'since': ..., 'until': ...} test(): {'sender': 'test()', 'target': 'Test Counter', 'command': 'get count'} - test(): {'sender': 'Test Counter', 'count': 0} + test(): {'sender': 'Test Counter', 'count': 0, + 'since': ..., 'until': ...} test(): {'sender': 'test()', 'id': 42} test(): {'sender': 'test()', 'id': 42} test(): {'sender': 'test()', 'id': 42} test(): {'sender': 'test()', 'target': 'Test Counter', 'command': 'get count'} - test(): {'sender': 'Test Counter', 'count': 3} + test(): {'sender': 'Test Counter', 'count': 3, + 'since': ..., 'until': ...} """ - CONF_SCHEMA = {'properties': {'count': {'type': 'object'}}, + CONF_SCHEMA = {'properties': {'count': {'type': 'object'}, + 'date format': + {'type': 'string', + 'default': '%Y-%m-%d %H:%M:%S'}}, 'required': ['count']} """Schema for Counter plugin configuration. @@ -474,6 +482,7 @@ class Counter(BasePlugin): def process_conf(self) -> None: """Register plugin as bus client.""" + self._since = datetime.now().strftime(self.conf['date format']) self._count = 0 self._template = MessageTemplate(self.conf['count']) sends = [MessageTemplate({'count': {'type': 'integer'}})] @@ -485,17 +494,24 @@ class Counter(BasePlugin): self.bus.register(self.name, 'Counter', sends, receives, self.receive) async def receive(self, message: Message) -> None: - """Send current date and time as message.""" + """Count messages, send and optionally reset counts.""" if self._template.check(message): self._count += 1 if ('target' in message and message['target'] == self.name and 'command' in message): if message['command'] == 'get count': - await self.bus.send(Message(self.name, {'count': self._count})) + now = datetime.now().strftime(self.conf['date format']) + await self.bus.send(Message(self.name, {'count': self._count, + 'since': self._since, + 'until': now})) elif message['command'] == 'reset': + now = datetime.now().strftime(self.conf['date format']) count = self._count self._count = 0 - await self.bus.send(Message(self.name, {'count': count})) + await self.bus.send(Message(self.name, {'count': count, + 'since': self._since, + 'until': now})) + self._since = now async def run(self) -> None: """Run no code proactively.""" @@ -558,7 +574,7 @@ class Date(BasePlugin): async def date(self, message: Message) -> None: """Send current date and time as message.""" - date = datetime.datetime.now().strftime(self.conf['format']) + date = datetime.now().strftime(self.conf['format']) await self.bus.send(Message(self.name, {'date': date})) async def run(self) -> None: -- 2.34.1