跳轉到主要內容

協議概述

統一執行節點協議 (UPP) 使用 WebSocket 上的 JSON 訊息。所有訊息遵循標準結構,包含協議版本管理和訊息相關性。

連接詳細資訊

  • 協議: WebSocket (ws://)
  • 主機: <qaptly_desktop_ip> (區域網路 IP)
  • 連接埠: 18765
  • 路徑: /upp
  • 完整 URL: ws://<qaptly_desktop_ip>:18765/upp
網路配置: <qaptly_desktop_ip> 代表執行 Qaptly Desktop 的機器在區域網路上的 IP 位址(例如:192.168.1.100、10.0.0.5)。⚠️ 僅限內部網路: UPP 專為區域網路部署而設計。請勿將 WebSocket 伺服器暴露到公共網際網路。

協議版本

目前版本: 1.0.0 (語義版本控制) 所有訊息必須包含 protocolVersion: "1.0.0" 以進行相容性檢查。

基礎訊息結構

每個 UPP 訊息遵循此格式:

訊息類型


註冊訊息

執行節點在連接後立即發送此訊息。 方向: 執行節點 → Qaptly

首次連接 (無金鑰)

重新連接 (使用金鑰)

執行節點資訊欄位

認證欄位

功能欄位


註冊回應

Qaptly 在處理註冊後發送此訊息。 方向: Qaptly → 執行節點

成功 (已知執行節點)

待核准 (新執行節點)

已核准 (附金鑰)

失敗

錯誤代碼


命令訊息

Qaptly 發送命令以執行操作。 方向: Qaptly → 執行節點

欄位


回應訊息

執行節點以執行結果回應。 方向: 執行節點 → Qaptly

成功

失敗

欄位


事件訊息

執行節點為訂閱的監聽器發送事件。 方向: 執行節點 → Qaptly
重要: 只發送 Qaptly 已訂閱的事件。未訂閱的事件會被忽略。

訂閱訊息

Qaptly 訂閱特定事件。 方向: Qaptly → 執行節點

訂閱事件

取消訂閱事件

萬用字元支援

  • 訂閱所有事件: ["*"]
  • 訂閱網域: ["wifi.*"] (所有 WiFi 事件)

心跳訊息

保持連接活躍。雙方每 30 秒發送一次。 方向: 雙向

心跳策略

如果您的執行節點 90 秒內未發送心跳,Qaptly 將關閉連接。

操作命名慣例

操作使用格式: domain.action

標準網域

自訂網域

為自訂網域使用廠商字首:
範例:
  • acme.motor.rotate
  • acme.motor.stop
  • mycompany.led.set_color

連接生命週期

UPP 連接生命週期:從 WebSocket 連接到斷線的逐步流程

斷線

  • 正常斷線: 正常關閉 WebSocket
  • 逾時: 90 秒無訊息
  • 寬限期: 5 分鐘內重新連接 (使用相同金鑰)

最佳實踐

訊息 ID

為所有訊息 ID 使用 UUID v4:

時間戳記

使用 ISO 8601 格式 (附 ‘Z’ 後綴,UTC):

錯誤處理

始終包含有意義的錯誤代碼和訊息:

事件篩選

只發送 Qaptly 已訂閱的事件:

後續步驟

認證

安全模型和金鑰管理

功能

使用 JSON Schema 定義功能

示例

完整的工作實現

快速開始

建立您的首個執行節點