配置: 使用 MQTT

关于

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

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

连接

通过设置菜单将 Agent DVR 连接到 MQTT 服务器。连接后,可以设置警报操作以向 MQTT 服务器发布消息。查看 MQTT 服务器设置了解详情。

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

添加 MQTT 操作

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

发送命令

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

要打开所有设备:cmd=allon

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

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

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

Agent DVR 将执行该命令并将 JSON 响应发送到 SERVER/responses 主题。

自动 MQTT

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

此配置包括运动、连接、警报、录制、延时摄影、警报(武装状态)和检测器(运动检测开关)等主题的标志。

如果您使用 Home Assistant,则无需直接处理这些主题:请参阅 Home Assistant 了解自动设置。

故障排除

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

家庭助手

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

您将获得的功能

  • 动作传感器: 检测器识别到活动时启用。
  • 告警传感器: 设备告警时启用。
  • 连接传感器: 设备是否在线。
  • 录制传感器: 设备录制时启用。
  • 启用开关: 从 Home Assistant 打开或关闭设备。
  • 告警开关: 从 Home Assistant 启用或禁用告警。
  • 检测器开关: 从 Home Assistant 打开或关闭动作检测。

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

设置

您需要一个 MQTT broker(通常是 Home Assistant 机器上的 Mosquitto 附加组件)和连接到它的 Home Assistant MQTT 集成。Agent DVR 不需要打开额外的端口:它像 Home Assistant 一样连接到 broker。

在新安装时,只需在欢迎屏幕的Home Assistant下输入您的 broker 地址和登录信息。就这样:MQTT 和发现已为您打开,之后添加的每个摄像头和麦克风都将自动显示在 Home Assistant 中。

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

注意

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