名称: frigate
描述: 通过基于会话的身份验证访问 Frigate NVR 摄像头。获取实时快照、检索运动事件并获取流媒体 URL。包含用于门铃、车道、前门、东侧、邮箱和车库摄像头的 CLI 辅助脚本。
通过环境变量 FRIGATE_USER 和 FRIGATE_PASS 中的凭据,访问位于 FRIGATE_URL 的 Frigate NVR 服务器。
Frigate 使用基于会话的身份验证(非 HTTP 基本认证):
import requests
session = requests.Session()
response = session.post(
f"{FRIGATE_URL}/api/login",
json={"user": FRIGATE_USER, "password": FRIGATE_PASS},
verify=False # 用于自签名证书
)
# session.cookies 包含后续请求所需的 frigate_token
response = session.get(f"{FRIGATE_URL}/api/config", verify=False)
config = response.json()
cameras = list(config.get('cameras', {}).keys())
# 返回:['driveway', 'front', 'east', 'mailbox', 'garage', 'doorbell']
snapshot = session.get(
f"{FRIGATE_URL}/api/{camera_name}/latest.jpg",
verify=False
)
# 保存:with open(f"/tmp/{camera_name}.jpg", "wb") as f: f.write(snapshot.content)
events = session.get(
f"{FRIGATE_URL}/api/events?cameras={camera_name}&has_clip=1",
verify=False
).json()
# 返回带时间戳的运动检测事件列表
config = session.get(f"{FRIGATE_URL}/api/config", verify=False).json()
stream_config = config.get('go2rtc', {}).get('streams', {}).get(camera_name)
# 返回 RTSP/WebRTC 流媒体 URL
必需:
- FRIGATE_URL - Frigate 服务器 URL(例如:https://server.local:8971/)
- FRIGATE_USER - 身份验证用户名
- FRIGATE_PASS - 身份验证密码
可选:
- 除上述外无需其他变量
import requests
session = requests.Session()
session.post(f"{FRIGATE_URL}/api/login",
json={"user": FRIGATE_USER, "password": FRIGATE_PASS}, verify=False)
# 获取门铃快照
snapshot = session.get(f"{FRIGATE_URL}/api/doorbell/latest.jpg", verify=False)
# 发送到 Telegram
from clawdbot import message
message(action="send", channel="telegram", target="3215551212",
message="Doorbell snapshot", path="/tmp/doorbell_snapshot.jpg")
verify=Falsesession_length 配置)/api/cameras 端点不存在;请使用 /api/config 获取摄像头信息list、snapshot、events、stream 命令的 CLI 实用工具