2022-10-31 21:18:36 +00:00

48 lines
1.8 KiB
Python

from gotify import Gotify
import paho.mqtt.client as mqtt
import json
import time
frigate_http="https"
frigate_url="example.com/"
# Must point to PATH api/events/ of frigate
frigate_api_path="snapshots/"
# Basic HTTP Auth Fomat (e.g username:password@)
frigate_auth="username:password@"
mqtt_ip="ip"
mqtt_port=1883
gotify = Gotify(
base_url="https://gotify.example.com/",
app_token="token",
)
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("frigate/events")
def on_message(client, userdata, msg):
data = msg.payload
decoded_data = json.loads(data.decode())
if decoded_data["type"] == "new":
print(f'{time.ctime(1545925769.9618232)}: A {decoded_data["after"]["label"]} has been detected at {decoded_data["after"]["camera"]}. See at {frigate_http}://{frigate_url}api/events/{decoded_data["after"]["id"]}/snapshot.jpg')
frigate_title = f'A {decoded_data["after"]["label"]} has been detected at {decoded_data["after"]["camera"]}.'
frigate_msg = f'A {decoded_data["after"]["label"]} has been detected at {decoded_data["after"]["camera"]}. See at {frigate_http}://{frigate_url}api/events/{decoded_data["after"]["id"]}/snapshot.jpg'
frigate_extras = {
"client::notification": {
"bigImageUrl": f'{frigate_http}://{frigate_url}{frigate_api_path}{decoded_data["after"]["id"]}/snapshot.jpg',
"click": { "url": f'{frigate_http}://{frigate_auth}{frigate_url}events?camera={decoded_data["after"]["camera"]}&label={decoded_data["after"]["label"]}' }
}
}
gotify.create_message(frigate_msg,frigate_extras,title=frigate_title,priority=7)
print(frigate_extras)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(mqtt_ip, mqtt_port, 60)
client.loop_forever()