xPLは、ホームオートメーションデバイスの制御と監視を可能にするオープンプロトコルです。xPLの主な設計目標は、洗練されたシンプルなメッセージ構造を維持しながら、豊富な機能を提供することです。このプロトコルには、完全な「プラグアンドプレイ」アーキテクチャをサポートする完全な検出機能と自動設定機能が含まれており、優れたエンドユーザーエクスペリエンスの実現に不可欠です。
xPLは、異なるベンダーのxPL対応デバイスが非互換性のリスクなしに通信できることを保証するために必要な、厳密に指定されたメッセージ構造の恩恵を受けています。 [1]
ローカルエリアネットワーク(LAN)上のxPLアプリケーション間の通信には、ポート3865のUDPが使用されます。[2]
xPLの開発は主にDIYコミュニティで行われており、ユーザーは既存のプロトコルやデバイスに接続するソフトウェアを開発してきました。例としては、Z-Wave [3]やUPB [4]といった他のホームオートメーションプロトコルへのブリッジが挙げられます。商用では、 Squeezebox用のLogitech SqueezeCenterソフトウェアがxPLをサポートしています。[5]
建築
ローカルネットワーク内では、さまざまなデバイスがxPLを使用して通信します。これらのデバイスはすべて、他のデバイスが処理できるように、IANAに登録されたUDPポート3865でメッセージをブロードキャストします。
現代のオペレーティングシステムでは、特定のポートをリッスンできるのは1つのプログラムだけであるため、同じマシン上のすべてのデバイスにメッセージを転送するハブが必要です。デバイスはハブのプライベートUDPポートに登録し、ハブはすべての受信メッセージをこれらのプライベートポートに転送します。
ハブ
ハブは、xPL デバイスを実行するマシンに必要な最初の xPL コンポーネントです。
すべてのデバイスは、定期的に(通常5分間隔で)ハブにハートビートメッセージを送信します。また、接続が切断される際には、ハブがデバイスをリストから削除するための特別なハートビート終了メッセージを送信することもできます。
ハブはリスト内のすべてのデバイスにすべてのメッセージを転送します。メッセージのフィルタリングは行われず、すべてのメッセージがブラインド再配信されます。
XPLデバイス
アプリケーションは、照明制御、日の出/日の入り、天気情報などの機能をホームオートメーション ソリューションに追加します。
デバイスは空いている UDP ポートを選択し、そのポートから IANA 登録済み UDP ポート 3865 上のハブにハートビート メッセージを送信します。
その時点から、デバイスはプライベート ポートでメッセージをリッスンしますが、xPL ポート 3865 でメッセージをブロードキャストとして送信します。メッセージ タイプは次のいずれかになります。
- 他のデバイスを制御するためのコマンド
- ステータス、通常は命令に対する返答として
- トリガーは、デバイスの状態の変化を通知するために使用されます。
豊富なアプリケーションリストをインターネットからダウンロードできます。また、独自のデバイスを開発したいユーザー向けにTooklitsも提供されています。
橋
ネットワークプロトコルはUDP/IPを前提としていますが、これは必須ではありません。XPLメッセージをあるトランスポートメディアから別のトランスポートメディア(例えばUDP/IPからRS232)へ転送する場合は、ブリッジが必要になります。
ルール
Windowsでは、xPL HALは受信したxPLメッセージを処理し、スクリプトを実行して様々なタスクを実行します。設定はWindowsベースのマネージャーまたはブラウザ経由で行います。xPL HALにはxPL構成マネージャーも含まれています。
Linux または Mac OS では、xpl-central はすべての xPL メッセージを監視し、XML ファイルに保存されている一連のルールに基づいて他のメッセージをトリガーできます。
伝送媒体
xPL プロトコルは、イーサネット、RS232、RS485 などのさまざまな伝送メディア上で動作できます。
イーサネット
すべての xPL デバイスは、IANA 登録ポート 3865 でUDP経由でメッセージをブロードキャストします。
しかし、特定のポートを一度にリッスンできるアプリケーションは1つだけであるため、xPLプロトコルはハブを使用して、すべてのブロードキャストメッセージを同一マシン上の異なるアプリケーションに再送信します。アプリケーションは、リッスンしているポートを指定するハートビートメッセージを送信することで、ハブの空きポートをサブスクライブします。ハブは受信したすべてのxPLブロードキャストメッセージを、リスト内のすべてのアプリケーションに転送します。
プロトコル
設計により、ワイヤー上のライト
例
xPLメッセージは行ベースで、各行は改行文字(ASCII:10進数)で終わります。以下は典型的なxPLメッセージの例です。
xpl-cmnd
{
ホップ=1
ソース=xpl-xplhal.myhouse
ターゲット=acme-cm12.server
}
x10.基本
{
コマンド=dim
デバイス=a1
レベル=75
}
メッセージ構造
すべてのメッセージは次のものから構成されます:
- メッセージタイプ(xpl-cmnd、xpl-stat、またはxpl-trig)
- 中括弧内のヘッダー ブロックには次の内容が含まれます。
- hop= n、xPLメッセージが1つの物理ネットワークから別の物理ネットワークに転送されるたびに増加するホップ数
- source= vendor_id - device_id . instance_id は、メッセージの送信者を識別するために使用されます。
- target= vendor_id - device_id . instance_id は、メッセージの宛先を識別するために使用されます。
- メッセージスキーマ(形式:クラス.タイプ)
- メッセージ本文は中括弧で囲まれ、名前=値のペアを含む[6]
ヘッダーブロックでは、ブロードキャストメッセージの場合、ターゲット名はワイルドカード記号「*」に置き換えられます。これは、tiggerメッセージとステータスメッセージの場合に当てはまります。
メッセージスキーマ
xPLは、明確に定義されたメッセージスキーマを使用することで、異なるベンダーのアプリケーションが適切に連携できるようにします。メッセージスキーマは拡張可能であり、メッセージ内に存在するべき要素だけでなく、それらの出現順序も定義します。
これにより、シンプルなデバイスやアプリケーションでメッセージをより簡単に解析できるようになります。
既存のメッセージスキーマはすべてxPLプロジェクトのホームページに掲載されています。新しいスキーマを作成したい開発者は、ぜひご応募ください。 [7]
参照
- xAP ホームオートメーションプロトコル- 実質的に同様のホームオートメーションプロトコル
参考文献
- ^ 「プロジェクトについて」xPLプロジェクトウェブサイト. 2012年4月23日閲覧。
- ^ Lansell, Mal. 「xPL入門」xPL Monkey Webサイト. 2012年3月31日時点のオリジナルよりアーカイブ。 2012年4月23日閲覧。
- ^ Lansell, Mal. 「xPLMonkey Z-wave Page」xPL Monkey Webサイト. 2012年4月16日時点のオリジナルよりアーカイブ。 2012年4月23日閲覧。
- ^ Duprey, Gerald R Jr (2008年7月5日). 「UPB4Java V1.2c - UPB自動化プロトコル用Java API」. xPL4Java Webサイト. 2014年1月9日時点のオリジナルよりアーカイブ。 2012年4月23日閲覧。
- ^ 「SqueezeboxWiki xPLページ」SqueezeboxWiki . 2012年4月23日閲覧。
- ^ 「XPL仕様書」. xPLプロジェクトウェブサイト. 2011年8月3日. 2015年7月23日閲覧。
- ^ 「xPLプロジェクトドキュメント」。xPLプロジェクトWebサイト。2011年8月3日。 2015年7月23日閲覧。
外部リンク
正式
- xPLホームオートメーションプロジェクトのホームページ
- xPL ホームオートメーション プロジェクト WIki
- xPLフォーラムは2010年10月11日にWayback Machineにアーカイブされました
- xPLプロジェクトのURLリンク
発達
- xPL Monkey 2024年2月16日アーカイブ - Wayback Machine
- Perlツールキット
- xPL Perl
- Perl および Python xPL スクリプト
- Arduino用xPLプロトコルの実装
- Arduino xPLライブラリ
他の
- MisterhouseはxPLをサポート
- Logitech Media ServerはxPL、Logitech Media Serverメッセージスキーマをサポートしています