配置: 使用 MQTT

关于

MQTT 是消息队列遥测传输(Message Queuing Telemetry Transport)的缩写,是一种轻量级且高效的消息通知协议,广泛应用于物联网(IoT)中的设备间通信。它设计用于在网络带宽受限和低功耗设备的环境下工作,非常适合将远程传感器、移动设备和各种小型设备连接到互联网。

Agent DVR 可以向 MQTT 发布事件,也可以通过 MQTT 接收命令,使其成为摄像头与智能家居或家庭自动化系统之间的灵活桥梁。

正在连接

使用"设置"菜单将 Agent DVR 连接到您的 MQTT 服务器。连接后,您可以设置警报操作以将消息发布到您的 MQTT 服务器。查看 MQTT 服务器设置了解详细信息。

要配置此功能,请编辑您的设备并在菜单中选择"操作"。为警报(或其他事件)添加操作,并选择 MQTT 作为任务类型。在这里,您可以指定要发布的主题和消息。

为 MQTT 添加操作

指定要发布到的主题(例如 Agent/alerts)并相应地编写您的消息。

发送命令

Agent DVR 也可以接收并处理 服务器/命令 主题上的 MQTT 消息,其中"服务器"是您的服务器名称(显示在服务器菜单中,可在设置中编辑)。服务器名称中的任何斜杠、下划线和连字符在 MQTT 主题中都会被移除。这些命令的格式与 HTTP API 类似。只需将 /command 替换为 cmd=:

打开所有设备:cmd=allon

在特定设备上拍照:cmd=snapshot&ot=2&oid=1

要重置摄像头上的绊线穿过计数器:cmd=resettripwires&ot=2&oid=1

使用 mosquitto,您可以发送类似以下命令(将 SERVER 替换为您的服务器名称):

mosquitto_pub -t 'SERVER/commands' -m 'cmd=record&ot=2&oid=1'

Agent DVR 将执行该命令并将 JSON 响应发送到 服务器/响应 主题。

自动 MQTT

Agent DVR 具有自动 MQTT 配置功能,可发送默认事件、状态和使用方法统计信息。要启用此功能,请在编辑设备时在 MQTT 标签页上启用"MQTT 事件"选项。

主题发布在 SERVER/cameras/NAME/SERVER/microphones/NAME/ 下,其中 SERVER 是您的服务器名称,NAME 是设备名称(均为小写,删除斜杠)。此配置包括用于移动侦测、已连接、警报、录制、延时摄影、警报(已布防状态)和探测器(移动侦测开/关)等主题的标记,以及来自 AI 对象、人脸、车牌和声音识别的 JSON 结果。

使用绊线探测器且已启用计数的摄像头还会发布(v7.7.4.0+):

  • tripwire:每次计数穿越一条消息,例如
    {"wire":1,"direction":"left","left":3,"right":2,"total":5}
  • tripwire_left、tripwire_right、tripwire_total:当前计数器,保留以便您订阅后立即可用。通过"重置计数"按钮、resettripwires 命令或摄像头重启重置为 0。

如果你使用 Home Assistant,则无需直接使用这些主题:请参阅 Home Assistant 获取自动设置。

故障排除

如果在 MQTT 中频繁遇到断开连接和重新连接的情况,通常表示在服务器设置中 MQTT 下指定的客户端 ID 被多个客户端使用。重要的是确保连接到 MQTT 的每个客户端都有唯一的客户端 ID。

Home Assistant

Agent DVR 可以使用 MQTT 发现功能自动向 Home Assistant 公告其设备。您的摄像头和麦克风随后会在 Home Assistant 中作为具有传感器和开关的设备出现,可以在仪表板和自动化中使用,无需 YAML 配置。

您可以获得的内容

  • 移动侦测传感器:当探测器检测到活动时处于启用状态。
  • 警报传感器:当设备发出警报时处于启用状态。
  • 已连接传感器:设备是否在线。
  • 录制传感器:当设备正在录制时处于启用状态。
  • 已启用开关:从 Home Assistant 打开或关闭设备。
  • 警报开关:从 Home Assistant 启用或禁用警报。
  • 探测器开关:从 Home Assistant 打开或关闭移动侦测。
  • 计数 左、计数 右和计数 总计传感器:使用绊线探测器的摄像头越线计数器,用于人员计数。(v7.7.4.0+)

启用发送统计信息后,服务器也会作为一个带有 CPU、内存和磁盘使用情况传感器的设备出现。当 Agent DVR 离线时,所有实体在 Home Assistant 中均显示为不可用。

设置方法

您需要一个 MQTT 代理(通常是您的 Home Assistant 机器上的 Mosquitto 附加组件)和连接到它的 Home Assistant MQTT 集成。Agent DVR 无需打开额外的端口:它的连接方式与 Home Assistant 相同,都是连接到代理。

在新安装时,只需在欢迎屏幕的 Home Assistant 下输入您的代理地址和登录信息。就这样:MQTT 和发现功能已为您启用,之后添加的每个摄像头和麦克风都会自动出现在 Home Assistant 中。

如要稍后设置(或在现有安装中设置),请转到服务器设置 - MQTT,配置您的代理并启用已启用Home Assistant 发现。然后在要发布的每个设备上启用 MQTT 事件(编辑设备时的 MQTT 标签)。在启用发现时添加的设备会自动启用 MQTT 事件;之前存在的设备保持其当前设置。

备注

  • Agent DVR 连接到代理后的几秒钟内,设备就会在 Home Assistant 中出现。重命名设备或切换 MQTT 事件会自动更新 Home Assistant。
  • 高级 MQTT 设置中的发现前缀必须与 Home Assistant MQTT 集成中的发现前缀相匹配。除非您知道已更改,否则请将两者都保留为默认值 (homeassistant)。
  • 关闭 Home Assistant 发现会从 Home Assistant 中删除这些实体。
  • 这些开关在底层使用 Agent DVR 的 MQTT 命令,因此您 MQTT 网络上的任何其他设备都可以发送相同的命令。