4
4
from paho .mqtt import client as mqtt_client
5
5
from ntfpy import NTFYServer , NTFYClient , NTFYPushMessage , NTFYUrlAttachment
6
6
7
- MQTT_BROKER_IP = os .getenv ("MQTT_BROKER_IP" , "localhost " )
7
+ MQTT_BROKER_IP = os .getenv ("MQTT_BROKER_IP" , "eclipse-mosquitto " )
8
8
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" )
10
10
MQTT_BROKER_USERNAME = os .getenv ("MQTT_BROKER_USERNAME" )
11
11
MQTT_BROKER_PASSWORD = os .getenv ("MQTT_BROKER_PASSWORD" )
12
12
16
16
NTFY_PASSWORD = os .getenv ("NTFY_PASSWORD" )
17
17
18
18
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" )
20
20
21
21
_last_msg_time = 0.0
22
22
_seen_new = {}
@@ -69,22 +69,22 @@ def on_connect(client, userdata, flags, rc):
69
69
70
70
def get_zone_changes (event_id , current ):
71
71
prev = _entered_zones .setdefault (event_id , [])
72
-
72
+
73
73
logging .debug (f"Event { event_id } previous zones: { ', ' .join (prev )} " )
74
74
logging .debug (f"Event { event_id } current zones: { ', ' .join (current )} " )
75
75
76
76
entered = [z for z in current if z not in prev ]
77
-
77
+
78
78
_entered_zones [event_id ] = current .copy ()
79
79
80
80
logging .debug (f"Event { event_id } entered zones: { ', ' .join (entered )} " )
81
-
81
+
82
82
return entered
83
83
84
84
def on_message (client , userdata , mqtt_msg ):
85
85
global _last_msg_time
86
86
now = time .time ()
87
-
87
+
88
88
if now - _last_msg_time < MESSAGE_TIMEOUT : # Throttle messages
89
89
logging .debug ("Event message throttled" )
90
90
return
@@ -120,7 +120,7 @@ def on_message(client, userdata, mqtt_msg):
120
120
_entered_zones [eid ] = deepcopy (zones )
121
121
122
122
logging .debug (f"New { label } event detected in { ', ' .join (zones )} " )
123
-
123
+
124
124
body = f"New { label } Detected with { score :.1f} % certainty in { ', ' .join (zones )} "
125
125
126
126
msg = NTFYPushMessage (body , title = f"{ label } Detected" )
@@ -129,12 +129,12 @@ def on_message(client, userdata, mqtt_msg):
129
129
msg .attachment = NTFYUrlAttachment (clip_url )
130
130
131
131
logging .debug (f"Found Event clip URL: { clip_url } " )
132
-
132
+
133
133
elif snap_url :
134
134
msg .attachment = NTFYUrlAttachment (snap_url )
135
135
136
136
logging .debug (f"Found Event snapshot URL: { snap_url } " )
137
-
137
+
138
138
ntfy_client .send_message (msg )
139
139
140
140
else :
@@ -148,15 +148,15 @@ def on_message(client, userdata, mqtt_msg):
148
148
if not new_z :
149
149
logging .debug (f"No new zones detected for event { eid } " )
150
150
return
151
-
151
+
152
152
body = f"{ label } entered zones: { ', ' .join (new_z )} "
153
153
msg = NTFYPushMessage (body , title = f"{ label } Zone Entry" )
154
154
155
155
if snap_url :
156
156
msg .attachment = NTFYUrlAttachment (snap_url )
157
157
158
158
logging .debug (f"Found Event snapshot URL: { snap_url } " )
159
-
159
+
160
160
ntfy_client .send_message (msg )
161
161
162
162
elif event_type == "end" :
@@ -170,12 +170,12 @@ def on_message(client, userdata, mqtt_msg):
170
170
msg .attachment = NTFYUrlAttachment (clip_url )
171
171
172
172
logging .debug (f"Found Event clip URL: { clip_url } " )
173
-
173
+
174
174
elif snap_url :
175
175
msg .attachment = NTFYUrlAttachment (snap_url )
176
176
177
177
logging .debug (f"Found Event snapshot URL: { snap_url } " )
178
-
178
+
179
179
ntfy_client .send_message (msg )
180
180
181
181
client = mqtt_client .Client (mqtt_client .CallbackAPIVersion .VERSION2 , MQTT_CLIENT_ID )
@@ -202,4 +202,4 @@ def on_message(client, userdata, mqtt_msg):
202
202
client .loop_forever ()
203
203
except Exception as e :
204
204
logging .error (f"Failed to start MQTT client: { e } " )
205
- sys .exit (1 )
205
+ sys .exit (1 )
0 commit comments