From 165d0c723fa418c79adfa05f81647dd897cb2813 Mon Sep 17 00:00:00 2001 From: Jeff Culverhouse Date: Sat, 8 Nov 2025 21:04:19 -0500 Subject: [PATCH] fix: fix interval setting --- src/amcrest2mqtt/interface.py | 6 +++--- src/amcrest2mqtt/mixins/helpers.py | 11 ++++------- src/amcrest2mqtt/mixins/publish.py | 18 ++++++++++++++++-- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/amcrest2mqtt/interface.py b/src/amcrest2mqtt/interface.py index 553f8e4..5dde155 100644 --- a/src/amcrest2mqtt/interface.py +++ b/src/amcrest2mqtt/interface.py @@ -60,10 +60,10 @@ class AmcrestServiceProtocol(Protocol): async def get_privacy_mode(self, device_id: str) -> bool: ... async def get_snapshot_from_device(self, device_id: str) -> str | None: ... async def get_storage_stats(self, device_id: str) -> dict[str, str | float]: ... - async def handle_device_command(self, device_id: str, handler: str, message: str) -> None: ... - async def handle_device_topic(self, components: list[str], payload: str) -> None: ... + async def handle_device_command(self, device_id: str, handler: str, message: Any) -> None: ... + async def handle_device_topic(self, components: list[str], payload: Any) -> None: ... async def handle_homeassistant_message(self, payload: str) -> None: ... - async def handle_service_command(self, handler: str, message: str) -> None: ... + async def handle_service_command(self, handler: str, message: Any) -> None: ... async def heartbeat(self) -> None: ... async def main_loop(self) -> None: ... async def mqtt_on_connect( diff --git a/src/amcrest2mqtt/mixins/helpers.py b/src/amcrest2mqtt/mixins/helpers.py index 88e464c..92e4531 100644 --- a/src/amcrest2mqtt/mixins/helpers.py +++ b/src/amcrest2mqtt/mixins/helpers.py @@ -55,7 +55,7 @@ class HelpersMixin: # send command to Amcrest ----------------------------------------------------------------------- - async def handle_device_command(self: Amcrest2Mqtt, device_id: str, handler: str, message: str) -> None: + async def handle_device_command(self: Amcrest2Mqtt, device_id: str, handler: str, message: Any) -> None: match handler: case "save_recordings": if message == "ON" and "path" not in self.config["media"]: @@ -70,17 +70,14 @@ class HelpersMixin: case "reboot": self.reboot_device(device_id) - async def handle_service_command(self: Amcrest2Mqtt, handler: str, message: str) -> None: + async def handle_service_command(self: Amcrest2Mqtt, handler: str, message: Any) -> None: match handler: - case "storage_refresh": + case "storage_interval": self.device_interval = int(message) - case "device_list_refresh": + case "rescan_interval": self.device_list_interval = int(message) case "snapshot_refresh": self.snapshot_update_interval = int(message) - case "refresh_device_list": - if message == "refresh": - await self.rediscover_all() case _: self.logger.error(f"unrecognized message to {self.mqtt_helper.service_slug}: {handler} -> {message}") return diff --git a/src/amcrest2mqtt/mixins/publish.py b/src/amcrest2mqtt/mixins/publish.py index 5766aa0..fe1a044 100644 --- a/src/amcrest2mqtt/mixins/publish.py +++ b/src/amcrest2mqtt/mixins/publish.py @@ -75,9 +75,22 @@ class PublishMixin: "entity_category": "diagnostic", "icon": "mdi:clock-outline", }, - "storage_interval": { + "refresh_interval": { "platform": "number", "name": "Refresh interval", + "uniq_id": self.mqtt_helper.svc_unique_id("refresh_interval"), + "stat_t": self.mqtt_helper.stat_t(device_id, "service", "refresh_interval"), + "cmd_t": self.mqtt_helper.cmd_t(device_id, "refresh_interval"), + "unit_of_measurement": "s", + "min": 1, + "max": 3600, + "step": 1, + "icon": "mdi:timer-refresh", + "mode": "box", + }, + "storage_interval": { + "platform": "number", + "name": "Storage interval", "uniq_id": self.mqtt_helper.svc_unique_id("storage_interval"), "stat_t": self.mqtt_helper.stat_t(device_id, "service", "storage_interval"), "cmd_t": self.mqtt_helper.cmd_t(device_id, "storage_interval"), @@ -125,7 +138,8 @@ class PublishMixin: "server": "online", "api_calls": self.api_calls, "last_call": last_call_date.replace(tzinfo=local_tz).astimezone(timezone.utc).isoformat(), - "storage_interval": self.device_interval, + "refresh_interval": self.device_interval, + "storage_interval": self.storage_update_interval, "snapshot_interval": self.snapshot_update_interval, "rate_limited": "YES" if self.rate_limited else "NO", }