Update README, change defaults

This commit is contained in:
csd4ni3l
2025-04-21 20:43:39 +02:00
parent b5c73c814f
commit dbf787c069
3 changed files with 38 additions and 34 deletions

View File

@@ -1 +1,23 @@
Frigate MQTT Notifier
A docker container/Python app that watches for MQTT Frigate events and sends them to an Ntfy server.
To deploy it, you can use the official image:
```yaml
services:
frigate-mqtt-notifier:
image: csd4ni3lofficial/frigate-mqtt-notifier:latest
container_name: frigate-mqtt-notifier
environment:
- LOG_LEVEL=INFO
- MQTT_BROKER_IP=eclipse-mosquitto
- MQTT_BROKER_PORT=1883
- MQTT_CLIENT_ID=frigate-mqtt-notifier
- MQTT_BROKER_USERNAME=
- MQTT_BROKER_PASSWORD=
- MESSAGE_TIMEOUT=5
- FRIGATE_BASE_URL=http://frigate:5000
- NTFY_SERVER_URL=https://ntfy.sh
- NTFY_TOPIC=frigate-events
- NTFY_USERNAME=
- NTFY_PASSWORD=
restart: unless-stopped
```

30
app.py
View File

@@ -4,9 +4,9 @@ from copy import deepcopy
from paho.mqtt import client as mqtt_client
from ntfpy import NTFYServer, NTFYClient, NTFYPushMessage, NTFYUrlAttachment
MQTT_BROKER_IP = os.getenv("MQTT_BROKER_IP", "localhost")
MQTT_BROKER_IP = os.getenv("MQTT_BROKER_IP", "eclipse-mosquitto")
MQTT_BROKER_PORT = int(os.getenv("MQTT_BROKER_PORT", 1883))
MQTT_CLIENT_ID = os.getenv("MQTT_CLIENT_ID", "frigate-notifier")
MQTT_CLIENT_ID = os.getenv("MQTT_CLIENT_ID", "frigate-mqtt-notifier")
MQTT_BROKER_USERNAME = os.getenv("MQTT_BROKER_USERNAME")
MQTT_BROKER_PASSWORD = os.getenv("MQTT_BROKER_PASSWORD")
@@ -16,7 +16,7 @@ NTFY_USERNAME = os.getenv("NTFY_USERNAME")
NTFY_PASSWORD = os.getenv("NTFY_PASSWORD")
MESSAGE_TIMEOUT = float(os.getenv("MESSAGE_TIMEOUT", 1.0))
FRIGATE_BASE_URL = os.getenv("FRIGATE_BASE_URL", "http://localhost:5000")
FRIGATE_BASE_URL = os.getenv("FRIGATE_BASE_URL", "http://frigate:5000")
_last_msg_time = 0.0
_seen_new = {}
@@ -69,22 +69,22 @@ def on_connect(client, userdata, flags, rc):
def get_zone_changes(event_id, current):
prev = _entered_zones.setdefault(event_id, [])
logging.debug(f"Event {event_id} previous zones: {', '.join(prev)}")
logging.debug(f"Event {event_id} current zones: {', '.join(current)}")
entered = [z for z in current if z not in prev]
_entered_zones[event_id] = current.copy()
logging.debug(f"Event {event_id} entered zones: {', '.join(entered)}")
return entered
def on_message(client, userdata, mqtt_msg):
global _last_msg_time
now = time.time()
if now - _last_msg_time < MESSAGE_TIMEOUT: # Throttle messages
logging.debug("Event message throttled")
return
@@ -120,7 +120,7 @@ def on_message(client, userdata, mqtt_msg):
_entered_zones[eid] = deepcopy(zones)
logging.debug(f"New {label} event detected in {', '.join(zones)}")
body = f"New {label} Detected with {score:.1f}% certainty in {', '.join(zones)}"
msg = NTFYPushMessage(body, title=f"{label} Detected")
@@ -129,12 +129,12 @@ def on_message(client, userdata, mqtt_msg):
msg.attachment = NTFYUrlAttachment(clip_url)
logging.debug(f"Found Event clip URL: {clip_url}")
elif snap_url:
msg.attachment = NTFYUrlAttachment(snap_url)
logging.debug(f"Found Event snapshot URL: {snap_url}")
ntfy_client.send_message(msg)
else:
@@ -148,7 +148,7 @@ def on_message(client, userdata, mqtt_msg):
if not new_z:
logging.debug(f"No new zones detected for event {eid}")
return
body = f"{label} entered zones: {', '.join(new_z)}"
msg = NTFYPushMessage(body, title=f"{label} Zone Entry")
@@ -156,7 +156,7 @@ def on_message(client, userdata, mqtt_msg):
msg.attachment = NTFYUrlAttachment(snap_url)
logging.debug(f"Found Event snapshot URL: {snap_url}")
ntfy_client.send_message(msg)
elif event_type == "end":
@@ -170,12 +170,12 @@ def on_message(client, userdata, mqtt_msg):
msg.attachment = NTFYUrlAttachment(clip_url)
logging.debug(f"Found Event clip URL: {clip_url}")
elif snap_url:
msg.attachment = NTFYUrlAttachment(snap_url)
logging.debug(f"Found Event snapshot URL: {snap_url}")
ntfy_client.send_message(msg)
client = mqtt_client.Client(mqtt_client.CallbackAPIVersion.VERSION2, MQTT_CLIENT_ID)
@@ -202,4 +202,4 @@ try:
client.loop_forever()
except Exception as e:
logging.error(f"Failed to start MQTT client: {e}")
sys.exit(1)
sys.exit(1)

View File

@@ -1,18 +0,0 @@
services:
frigate-mqtt-notifier:
image: frigate-mqtt-notifier
container_name: frigate-mqtt-notifier
environment:
- LOG_LEVEL=INFO
- MQTT_BROKER_IP=localhost
- MQTT_BROKER_PORT=1883
- MQTT_CLIENT_ID=frigate-mqtt-notifier
- MQTT_BROKER_USERNAME=
- MQTT_BROKER_PASSWORD=
- MESSAGE_TIMEOUT=5
- FRIGATE_BASE_URL=http://localhost:5000
- NTFY_SERVER_URL=https://ntfy.sh
- NTFY_TOPIC=frigate-events
- NTFY_USERNAME=
- NTFY_PASSWORD=
restart: unless-stopped