配置: 使用 MQTT

關於

MQTT 是訊息佇列遙測傳輸 (Message Queuing Telemetry Transport) 的縮寫,是一種輕量級且高效的訊息通知通訊協定,廣泛用於物聯網 (IoT) 的裝置對裝置通訊。它的設計可以在有限的網路頻寬和低耗電裝置的環境下運作,非常適合將遠端感測器、行動裝置和各種小型小工具連接到網際網路。

Agent DVR 既可以發佈事件至 MQTT,也可以透過 MQTT 接收指令,使其成為您的攝影機與智慧家庭或家庭自動化系統之間靈活的橋樑。

正在連線

使用「設定」選單將 Agent DVR 連線到您的 MQTT 伺服器。連線後,您可以設定警示動作以將訊息發布到您的 MQTT 伺服器。如需詳情,請參閱 MQTT 伺服器設定

若要設定此項,請編輯您的裝置並在選單中選擇「動作」。為警示(或其他事件)新增動作,並選擇 MQTT 作為工作項目類型。在此處,您可以指定要發布的主題和訊息。

新增 MQTT 的動作

指定要發布的主題(例如 Agent/alerts)並相應地撰寫您的訊息。

發送指令

Agent DVR 也可以在 伺服器/commands 主題接收及處理 MQTT 訊息,其中伺服器是您的伺服器名稱(顯示在伺服器功能表中,可在設定中編輯)。伺服器名稱中的任何斜線、底線和連字符都會被移除以供 MQTT 主題使用。這些命令的格式與 HTTP API 類似。只需用 cmd= 取代 /command:

若要開啟所有裝置:cmd=allon

若要在特定裝置上拍照:cmd=snapshot&ot=2&oid=1

若要重設攝影機上的絆線穿越計數器:cmd=resettripwires&ot=2&oid=1

使用 mosquitto,您可以傳送類似的命令(將伺服器替換為您的伺服器名稱):

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

Agent DVR 將執行該命令並將 JSON 回應傳送到 伺服器/responses 主題。

自動 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 Discovery 會從 Home Assistant 中移除這些實體。
  • 開關在內部使用 Agent DVR 的 MQTT 指令,因此 MQTT 網路上的任何其他設備都可以傳送相同的指令。