協議概述
統一執行節點協議 (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 秒發送一次。 方向: 雙向心跳策略
操作命名慣例
操作使用格式:domain.action
標準網域
自訂網域
為自訂網域使用廠商字首:acme.motor.rotateacme.motor.stopmycompany.led.set_color
連接生命週期

斷線
- 正常斷線: 正常關閉 WebSocket
- 逾時: 90 秒無訊息
- 寬限期: 5 分鐘內重新連接 (使用相同金鑰)
最佳實踐
訊息 ID
為所有訊息 ID 使用 UUID v4:時間戳記
使用 ISO 8601 格式 (附 ‘Z’ 後綴,UTC):錯誤處理
始終包含有意義的錯誤代碼和訊息:事件篩選
只發送 Qaptly 已訂閱的事件:後續步驟
認證
安全模型和金鑰管理
功能
使用 JSON Schema 定義功能
示例
完整的工作實現
快速開始
建立您的首個執行節點