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

カスタム実行ノードとは

カスタム実行ノードは、Qaptly Desktopに接続して追加の自動化機能を提供するサードパーティ拡張機能です。**統一試点協議(UPP)**を使用して、以下を実行する実行ノードを作成できます:
  • WiFiネットワークの制御(スキャン、接続、切断)
  • IoTデバイスの管理(スマートホーム、センサー)
  • ハードウェアとのインタラクション(GPIO、シリアルポート)
  • リモートデバイスでのカスタムコマンド実行
  • リアルタイムイベント通知の送信

ユースケース

ネットワークテスト

Raspberry Piベースの WiFi コントローラーを構築して、異なるネットワーク条件下でのアプリの動作をテストします:
  • テスト実行中に WiFi ネットワークを切り替え
  • ネットワーク切断をシミュレート
  • 信号強度とレイテンシを監視

IoT自動化

テストシナリオの一部として IoT デバイスを制御します:
  • スマートライト、サーモスタット、ドアロック
  • 温度、湿度、モーションセンサー
  • カスタムハードウェア統合

リモートコマンド実行

リモートデバイスでコマンドを実行します:
  • 組込みシステムでスクリプトを実行
  • テスト機器を制御
  • テストインフラストラクチャを管理

動作仕組み

UPP アーキテクチャ: Qaptly Desktop が WebSocket 経由でカスタム実行ノードデバイスと通信
ネットワーク展開: <qaptly_desktop_ip> は、Qaptly Desktop を実行しているマシンのローカルネットワーク IP アドレス(例:192.168.1.100)です。⚠️ セキュリティ: UPP は内部ネットワーク使用専用に設計されています。公共インターネットに公開しないでください。

主要機能

自己記述型

実行ノードは JSON Schema を使用して独自の機能を宣言します。Qaptly は、実行ノードがサポートするアクションを動的に発見します。

デフォルトで安全

  • 初回接続にはユーザー承認が必要
  • 認証用の事前共有キー
  • 内部ネットワーク展開(公共インターネットに公開されない)

リアルタイムイベント

実行ノードは状態変更を Qaptly に通知するイベントを送信できます:
  • wifi.connected - WiFi 接続確立
  • sensor.temperature_changed - 温度読み取り更新
  • ユースケースに固有のカスタムイベント

言語非依存

以下をサポートする任意の言語で実行ノードを実装:
  • WebSocket クライアント
  • JSON シリアライゼーション
  • プラットフォーム(Python、Node.js、Go、Rust、C++ など)

アーキテクチャ

UPP は Qaptly の内部実行ノード(Android、iOS、macOS 自動化)から独立しています。カスタム実行ノードは:
  • ✅ 独立して実行
  • ✅ WebSocket 経由で接続
  • ✅ 独自の機能を宣言
  • ✅ 内部実行ノードに干渉しない

プロトコルの基本

メッセージ形式

すべてのメッセージは UTF-8 エンコーディング付きの JSON を使用:

接続フロー

  1. 接続 - 実行ノードが WebSocket 経由で接続
  2. 登録 - 実行ノード情報と機能を送信
  3. 認証 - ユーザーが承認(初回)またはキーが検証(再接続)
  4. 実行 - Qaptly がコマンドを送信、実行ノードが応答
  5. イベント - 実行ノードがリアルタイムイベントを送信(オプション)
  6. ハートビート - 接続を維持(30秒ごと)

はじめに

最初のカスタム実行ノードを構築する準備はできていますか?

クイックスタート

15分でシンプルな WiFi コントローラーを構築

プロトコルリファレンス

完全なプロトコル仕様

認証

セキュリティとキー管理

例

完全に機能する実装例

要件

カスタム実行ノードを開発するには、以下が必要です:
  • 開発環境: WebSocket をサポートする任意の言語
  • Qaptly Desktop: バージョン 0.15.0 以降
  • 対象デバイス(オプション): Raspberry Pi、Arduino、またはネットワーク接続デバイス

次のステップ

  1. クイックスタートガイドに従って、最初の実行ノードを構築
  2. プロトコルリファレンスを読んで詳細な仕様を確認
  3. 例をチェックして、完全な実装を確認