Fix notification debouncer
This commit is contained in:
parent
468a0b02f3
commit
4fb3d6a99e
|
@ -29,7 +29,7 @@ def on_event(payload: dict[str, Any]) -> None:
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
frigate_config = FrigateConfig()
|
frigate_config = FrigateConfig()
|
||||||
frigate_config.fetch()
|
frigate_config.fetch()
|
||||||
notification_sender = NtfyNotificationSender(quiet_period=dt.timedelta(seconds=3 * 60))
|
notification_sender = NtfyNotificationSender(quiet_period=dt.timedelta(minutes=3))
|
||||||
mqtt_subscriber = MQTTSubscriber(on_event, username=os.getenv("MQTT_USERNAME"), password=os.getenv("MQTT_PASSWORD"))
|
mqtt_subscriber = MQTTSubscriber(on_event, username=os.getenv("MQTT_USERNAME"), password=os.getenv("MQTT_PASSWORD"))
|
||||||
mqtt_subscriber.subscribe()
|
mqtt_subscriber.subscribe()
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
import time
|
import time
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
from collections import defaultdict
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from enum import StrEnum
|
from enum import StrEnum
|
||||||
from functools import cache, cached_property
|
from functools import cache, cached_property
|
||||||
|
@ -42,7 +43,8 @@ class NotificationSender[N: Notification](ABC):
|
||||||
|
|
||||||
def send(self, notification: N) -> None:
|
def send(self, notification: N) -> None:
|
||||||
now = time.time()
|
now = time.time()
|
||||||
last_notification_time = self._camera_to_last_notification_time.setdefault(notification.camera, 0)
|
last_notification_time = self._camera_to_last_notification_time.get(notification.camera, 0)
|
||||||
if now - last_notification_time >= self._quiet_period.total_seconds():
|
if now - last_notification_time >= self._quiet_period.total_seconds():
|
||||||
# Quiet period has passed since the last notification for this camera
|
# Quiet period has passed since the last notification for this camera
|
||||||
|
self._camera_to_last_notification_time[notification.camera] = now
|
||||||
self._send(notification)
|
self._send(notification)
|
||||||
|
|
Loading…
Reference in New Issue