MobiServer: 日曜ユビキタスのための手軽なミドルウェア群

作成日: 2008/10/19  最終更新日: 2010/07/17



◆はじめに

生活環境で利用する実世界指向インタフェースを開発するためには,さまざまな規格の入出力デバイスを活用する必要がありますが,それらの使い方を覚えるのは面倒です.

そこで,ここでは,さまざまな入出力デバイスを同一の作法で手軽に扱うことができるミドルウェア群「MobiServer」を紹介します.MobiServerの対象とするデバイスの一例を図1に示します.

MobiServerの仕組みは,以前公開したPhidgetServerを拡張したもので,(1)デバイスの動作テストを行うためのGUIと(2)TCPソケット経由でデバイスを制御するサーバーから構築されます(図2).表1に示すような,シンプルなテキストメッセージを送受信するだけで,さまざまな環境・言語から手軽にデバイスを制御することができます.次に,MobiServerの具体的なソフトウェア群を紹介します.

◆更新情報
icon2010/07/17:
XBeeServerを公開しました.無線通信モジュールXBeeを多数組み合わせて,無線センサシステムとして手軽に扱うことができます.
icon2010/06/15:
DMXServerを公開しました.舞台照明制御用の通信規格DMX512を用いて,フルカラーLED 照明などを手軽に制御できます.
図1 MobiServerの対象デバイスの一例
(上: パソコン用学習リモコン, 左中: USB/パラレル変換デバイス,
左下: Phidget InterfaceKit, 右下: X10デバイス)
phidgetserver parallelserver

図2 MobiServerのソフトウェアの一例
(左: PhidgetServer2.0,右: PrallelServer)

コマンド例

解説

Phidgets,In,InterfaceKit,27249,Analog,0,512 Phidget InterfaceKit(ID:27249)のアナログ入力0が512へと変化した.
Phidgets,Out,Servo,3633,0,230 Phidget ServoMotor(ID:3633)のチャンネル0のモータ角度を230に変更する.
X10,Out,A,1,Power,1 アドレスA-1のX10モジュールの電源をOnにする.
X10,Out,B,1,Bright,5 アドレスB-1のX10ランプモジュールを明るくする(電圧を上げる).
IR,Out,TV,Sharp1,Power テレビ(シャープ製)の電源を入れる.
IR,Out,Audio,Sony2,Play オーディオコンポ(ソニー製)の再生を開始する.
Parallel,In,A4001WtG,3,1 USBパラレルモジュール(ID: A4001WtG)のポート3がHighに変化した.
Parallel,Out,0,0,1 USBパラレルモジュールのポート1をHighに変更する.
表1 MobiServerのコマンド例





◆MobiServerのソフトウェア群

PhidgetServer2.0
USB接続のセンサ/アクチュエータ群Phidgetsを手軽に制御できます.
X10Server
電灯線通信を行うX10デバイスを用いて,さまざまな照明/家電の電源を手軽に制御できます.
IRServer
USB接続の学習リモコンを用いて,さまざまな家電機器を赤外線で手軽に制御できます.
ParallelServer
安価なUSBパラレル変換モジュールを用いて,デジタルI/Oを手軽に制御できます.
DMXServer new
舞台照明制御用の通信規格DMX512を用いて,フルカラーLED 照明などを制御できます.
XBeeServer new

無線通信モジュールXBeeを多数組み合わせて,無線センサシステムとして手軽に扱うことができます.

※上記以外にも対応デバイス(RFID,Felica,指紋センサ,USBカメラ...etc)を順次追加していきます.



◆基本的な使い方
ここでは,MobiServerに共通する基本的な使い方を簡単に説明します.
0.デバイスの接続
各サーバーに対応するデバイスをPCに接続し,デバイスの接続操作を行います.(詳細は各ソフトウェアのページを参照してください.)
1.サーバーの起動/停止

サーバーを起動するためには,フォーム左上の「サーバー」において,任意のポートを指定し,「開始」ボタンを押します.

  • 標準ではIPは自動的に取得されます.「ローカルホストで利用する」をチェックしておくと,ローカルホスト(127.0.0.1)でサーバーを起動します.
  • 各コマンドの区切り子(終端文字)は「デリミタ(行)」のプルダウンメニューから選択できます.三種類の改行コード("\r\n", "\r", "\n")と,NULL文字("\0")のいずれかを選択します.
  • 各コマンド内の区切り子は「デリミタ(項目)」からカンマ(",")とタブ文字("\t")のいずれかを選択します.

次に,開始に成功すると,確認メッセージが表示され,停止ボタンがアクティブになります.この状態で,クライアントの接続を待機します. 最後に,サーバーを停止する場合は,「停止」ボタンを押します.全てのクライアントとの接続を切断し,サーバーを終了します.

2. サーバーへの接続
まず,各サーバーの動作してい るIP/Portを確認します.たとえば,IP:127.0.0.1,ポート:4321で動作しているサーバーにtelnetを用いて 接続する場合,以下のようにコマンドプロンプトから入力します.
  • % telnet 127.0.0.1 4321
3. デバイスの接続/切断
デバイスが新たに接続/切断されると,たとえば以下のようなメッセージがサーバー→クライアントへ送信されます.
  • Phidgets,Attach,InterfaceKit,27249 【Phidget InterfaceKit(ID:27249)が接続】
  • X10,Attach,A,1,Lamp 【X10 Lampモジュール(アドレス:A-1)が接続】
  • Phidgets,Detach,InterfaceKit,27249 【Phidget InterfaceKit(ID:27249)が切断】
  • X10,Dettach,A,1 【X10 モジュール(アドレス:A-1)が切断】

詳細については,各ソフトウェアのページを参照してください.

4. デバイスからの入力

入力系デバイスの状態が変化すると,以下のようなメッセージがサーバー→クライアントに送信されます.

  • Phidgets,In,InterfaceKit,27249,Analog,0,512 【Phidget InterfaceKitのアナログ入力(ポート0)の入力が512に変化】
  • Parallel,In,A4001WtG,3,1 【USB Prallelモジュール のデジタル入力(ポート3)がHighに変化】
5. デバイスへの出力/設定

出力系デバイスの制御,および入力系デバイスの設定は,以下のようなメッセージをクライアント→サーバーに送信することで行います.

  • Phidgets,Out,InterfaceKit,27249,Digital,0,1 【Phidget InterfaceKitのデジタル出力(ポート0)をHighにする】 
  • X10,Out,A,1,Power,1 【X10モジュール(アドレス: A-1)の電源をOn/Offする】
  • IR,Out,TV,Sharp1,Power 【赤外線デバイス(TV-Sharp1)の電源を入れる】
  • Parallel,Out,0,0,1 【Parallelモジュールのデジタル出力0をHighにする】
  • Phidgets,Set,InterfaceKit,27249,Threshold,0,50 【Phidget InterfaceKitのアナログ入力(ポート0)の閾値を50に設定】
  • Parallel,Set,0,2,0 【Parallelモジュールのデジタルポート2を入力モードにする】



◆おわりに

ここでは,さまざまな入出力デバイスを同一の作法で手軽に扱うことができるミドルウェア群「MobiServer」について紹介しました.MobiServerを利用すれば,日曜プログラミングのような感覚で身の回りのさまざまなデバイス・家電機器などを制御できる「日曜ユビキタス環境」を実現できるのではないかと思います.是非,生活の中で実践的に使えるような実世界指向システムに挑戦してみてください.