Skip to content

Commit dbf787c

Browse files
committed
Update README, change defaults
1 parent b5c73c8 commit dbf787c

File tree

3 files changed

+38
-34
lines changed

3 files changed

+38
-34
lines changed

README.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,23 @@
1-
Frigate MQTT Notifier
1+
A docker container/Python app that watches for MQTT Frigate events and sends them to an Ntfy server.
2+
3+
To deploy it, you can use the official image:
4+
```yaml
5+
services:
6+
frigate-mqtt-notifier:
7+
image: csd4ni3lofficial/frigate-mqtt-notifier:latest
8+
container_name: frigate-mqtt-notifier
9+
environment:
10+
- LOG_LEVEL=INFO
11+
- MQTT_BROKER_IP=eclipse-mosquitto
12+
- MQTT_BROKER_PORT=1883
13+
- MQTT_CLIENT_ID=frigate-mqtt-notifier
14+
- MQTT_BROKER_USERNAME=
15+
- MQTT_BROKER_PASSWORD=
16+
- MESSAGE_TIMEOUT=5
17+
- FRIGATE_BASE_URL=http://frigate:5000
18+
- NTFY_SERVER_URL=https://ntfy.sh
19+
- NTFY_TOPIC=frigate-events
20+
- NTFY_USERNAME=
21+
- NTFY_PASSWORD=
22+
restart: unless-stopped
23+
```

app.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
from paho.mqtt import client as mqtt_client
55
from ntfpy import NTFYServer, NTFYClient, NTFYPushMessage, NTFYUrlAttachment
66

7-
MQTT_BROKER_IP = os.getenv("MQTT_BROKER_IP", "localhost")
7+
MQTT_BROKER_IP = os.getenv("MQTT_BROKER_IP", "eclipse-mosquitto")
88
MQTT_BROKER_PORT = int(os.getenv("MQTT_BROKER_PORT", 1883))
9-
MQTT_CLIENT_ID = os.getenv("MQTT_CLIENT_ID", "frigate-notifier")
9+
MQTT_CLIENT_ID = os.getenv("MQTT_CLIENT_ID", "frigate-mqtt-notifier")
1010
MQTT_BROKER_USERNAME = os.getenv("MQTT_BROKER_USERNAME")
1111
MQTT_BROKER_PASSWORD = os.getenv("MQTT_BROKER_PASSWORD")
1212

@@ -16,7 +16,7 @@
1616
NTFY_PASSWORD = os.getenv("NTFY_PASSWORD")
1717

1818
MESSAGE_TIMEOUT = float(os.getenv("MESSAGE_TIMEOUT", 1.0))
19-
FRIGATE_BASE_URL = os.getenv("FRIGATE_BASE_URL", "http://localhost:5000")
19+
FRIGATE_BASE_URL = os.getenv("FRIGATE_BASE_URL", "http://frigate:5000")
2020

2121
_last_msg_time = 0.0
2222
_seen_new = {}
@@ -69,22 +69,22 @@ def on_connect(client, userdata, flags, rc):
6969

7070
def get_zone_changes(event_id, current):
7171
prev = _entered_zones.setdefault(event_id, [])
72-
72+
7373
logging.debug(f"Event {event_id} previous zones: {', '.join(prev)}")
7474
logging.debug(f"Event {event_id} current zones: {', '.join(current)}")
7575

7676
entered = [z for z in current if z not in prev]
77-
77+
7878
_entered_zones[event_id] = current.copy()
7979

8080
logging.debug(f"Event {event_id} entered zones: {', '.join(entered)}")
81-
81+
8282
return entered
8383

8484
def on_message(client, userdata, mqtt_msg):
8585
global _last_msg_time
8686
now = time.time()
87-
87+
8888
if now - _last_msg_time < MESSAGE_TIMEOUT: # Throttle messages
8989
logging.debug("Event message throttled")
9090
return
@@ -120,7 +120,7 @@ def on_message(client, userdata, mqtt_msg):
120120
_entered_zones[eid] = deepcopy(zones)
121121

122122
logging.debug(f"New {label} event detected in {', '.join(zones)}")
123-
123+
124124
body = f"New {label} Detected with {score:.1f}% certainty in {', '.join(zones)}"
125125

126126
msg = NTFYPushMessage(body, title=f"{label} Detected")
@@ -129,12 +129,12 @@ def on_message(client, userdata, mqtt_msg):
129129
msg.attachment = NTFYUrlAttachment(clip_url)
130130

131131
logging.debug(f"Found Event clip URL: {clip_url}")
132-
132+
133133
elif snap_url:
134134
msg.attachment = NTFYUrlAttachment(snap_url)
135135

136136
logging.debug(f"Found Event snapshot URL: {snap_url}")
137-
137+
138138
ntfy_client.send_message(msg)
139139

140140
else:
@@ -148,15 +148,15 @@ def on_message(client, userdata, mqtt_msg):
148148
if not new_z:
149149
logging.debug(f"No new zones detected for event {eid}")
150150
return
151-
151+
152152
body = f"{label} entered zones: {', '.join(new_z)}"
153153
msg = NTFYPushMessage(body, title=f"{label} Zone Entry")
154154

155155
if snap_url:
156156
msg.attachment = NTFYUrlAttachment(snap_url)
157157

158158
logging.debug(f"Found Event snapshot URL: {snap_url}")
159-
159+
160160
ntfy_client.send_message(msg)
161161

162162
elif event_type == "end":
@@ -170,12 +170,12 @@ def on_message(client, userdata, mqtt_msg):
170170
msg.attachment = NTFYUrlAttachment(clip_url)
171171

172172
logging.debug(f"Found Event clip URL: {clip_url}")
173-
173+
174174
elif snap_url:
175175
msg.attachment = NTFYUrlAttachment(snap_url)
176176

177177
logging.debug(f"Found Event snapshot URL: {snap_url}")
178-
178+
179179
ntfy_client.send_message(msg)
180180

181181
client = mqtt_client.Client(mqtt_client.CallbackAPIVersion.VERSION2, MQTT_CLIENT_ID)
@@ -202,4 +202,4 @@ def on_message(client, userdata, mqtt_msg):
202202
client.loop_forever()
203203
except Exception as e:
204204
logging.error(f"Failed to start MQTT client: {e}")
205-
sys.exit(1)
205+
sys.exit(1)

docker-compose.yml

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)