メインコンテンツへスキップ

プロトコル概要

Unified Pilot Protocol (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 メッセージは以下の形式に従います:

メッセージタイプ


登録メッセージ

実行ノードは接続直後にこのメッセージを送信します。 方向: Pilot → Qaptly

初回接続 (キーなし)

再接続 (キーを使用)

実行ノード情報フィールド

認証フィールド

機能フィールド


登録応答

Qaptly は登録を処理した後、このメッセージを送信します。 方向: Qaptly → Pilot

成功 (既知の実行ノード)

承認待ち (新しい実行ノード)

承認済み (キー付き)

失敗

エラーコード


コマンドメッセージ

Qaptly はアクション実行のためにコマンドを送信します。 方向: Qaptly → Pilot

フィールド


応答メッセージ

実行ノードは実行結果で応答します。 方向: Pilot → Qaptly

成功

失敗

フィールド


イベントメッセージ

実行ノードは購読者にイベントを送信します。 方向: Pilot → Qaptly
重要: Qaptly が購読したイベントのみを送信します。購読されていないイベントは無視されます。

購読メッセージ

Qaptly は特定のイベントを購読します。 方向: Qaptly → Pilot

イベントを購読

イベントから購読解除

ワイルドカード サポート

  • すべてのイベントを購読: ["*"]
  • ドメインを購読: ["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 が購読したイベントのみを送信:

次のステップ

Authentication

セキュリティモデルとキー管理

Capabilities

JSON Schema で機能を定義

Examples

完全な実装例

Quick Start

最初の実行ノードを構築