以下で、利用するための手順とその機能を解説します。
必要なモノ
- Wiimote-over-HTTP
- BLUECOVE 2.0.2
- Bluetoothアダプタ
- WIDCOMMドライバ
- Wiiリモコン
WiiリモコンはWii本体との情報のやり取りにBluetoothという汎用の無線通信規格を利用しています。そのため、BluetoothアダプタとドライバさえあればPC上でも認識させることが可能です。ただしWoHを利用する場合では、BLUECOVEとの相性の問題なのか、今のところ「WIDCOMM」のドライバでしか動作確認がとれていません。
![]() |
図2: Wiiリモコンの認識画面 |
WoHの起動
ダウンロードしてきたWiimote-over-HTTP-0.6-executable.zip(Web アプリケーションサーバ同梱版)の展開後にできるlibディレクトリの下に、同様にダウンロードしてきたbluecove-2.0.2.jar
を配置し、あとは startup.bat
を実行するだけです。8080番ポートでJettyベースのWebアプリケーションサーバが起動します。
起動の確認後、「http://127.0.0.1:8080/WiimoteOverHTTP/
」にアクセスするとWoHのコントロールパネルが表示されます。
![]() |
図4: WoH コントロールパネル |
WoHとWiiリモコンの接続
WoHのコントロールパネルで「[findWiimote] Wiiリモコン探索・接続」を実行するか、「http://127.0.0.1:8080/WiimoteOverHTTP/execute?method=findWiimote
」にアクセスすることで、周辺にあるWiiリモコンの探索が開始されます。続けてWiiリモコンの[1]ボタンと[2]ボタンを同時に押すことで接続を確立します。Wiiリモコンが正しく認識されると、認識された順番により図5のようなパターンでLEDが点灯します(最大7台まで接続可能)。
Wiiリモコンの情報取得
接続が確認できたら、後は用意されている様々なメソッドを指定することで、Wiiリモコンの操作や情報の取得が行えます。例えば、1番目のWiiリモコンの傾きやボタンの押下状況を取得したい場合は、コントロールパネルで「wiimote」を「1」、「method」を「[getStatus] Wiiリモコン操作情報取得」として実行するか、「http://127.0.0.1:8080/WiimoteOverHTTP/execute?method=getStatus&wiimote=1
」にアクセスします。
指定可能なパラメータとメソッドは以下の通りです。詳しくはWoHのWikiに掲載してあるAPIを参照してください。
パラメータ一覧
パラメータ | 説明 |
---|---|
method | メソッドを指定(メソッド一覧参照) |
wiimote | Wiiリモコンの番号を指定 |
button | Wiiリモコンのボタンを指定 |
time | 実行時間をミリ秒で指定 |
light | LEDの点灯パターンを指定 |
responseType | レスポンスの形式を指定 |
callback | JSONP形式のコールバック関数名を指定 |
メソッド一覧
メソッド | 説明 |
---|---|
findWiimote | Wiiリモコン探索・接続 |
isConnected | Wiiリモコン接続状況取得 |
setVibrate | バイブレーション操作 |
isPressed | ボタン押下状況取得 |
getStatus | Wiiリモコン操作情報取得 |
getInfo | Wiiリモコン情報取得 |
setLED | LED点灯・消灯操作 |
releaseWiimote | Wiiリモコン切断 |
以下は、メソッドを実行した際のレスポンスの例です。
リスト1: XMLの例
<?xml version="1.0" encoding="UTF-8" ?>
<response>
<method>getStatus</method>
<status>200</status>
<data>
<wiimote index="1">
<xPos>-0.446601</xPos>
<yPos>0.028301</yPos>
<zPos>0.900990</zPos>
<pitch>0.028305</pitch>
<roll>-0.462963</roll>
<a>0</a>
<b>0</b>
<one>0</one>
<two>0</two>
<minus>0</minus>
<plus>0</plus>
<home>0</home>
<up>0</up>
<down>0</down>
<left>0</left>
<right>0</right>
<nunchuk>
<xPos>0.0</xPos>
<yPos>0.0</yPos>
<zPos>0.0</zPos>
<pitch>0.0</pitch>
<roll>0.0</roll>
<c>0</c>
<z>0</z>
<xVec>0.0</xVec>
<yVec>0.0</yVec>
</nunchuk>
</wiimote>
</data>
</response>
リスト2: JSONPの例
callback(
{"response":{
"method":"getStatus",
"status":"200",
"data":{
"wiimote":[
{
"@index":"1",
"xPos":"-0.446601",
"yPos":"0.028301",
"zPos":"0.900990",
"pitch":"0.028305",
"roll":"-0.462963",
"a":"0",
"b":"0",
"one":"0",
"two":"0",
"minus":"0",
"plus":"0",
"home":"0",
"up":"0",
"down":"0",
"left":"0",
"right":"0"
"nunchuk":{
"xPos":"0.0",
"yPos":"0.0",
"zPos":"0.0",
"pitch":"0.0",
"roll":"0.0",
"c":"0",
"z":"0",
"xVec":"0.0",
"yVec":"0.0"
}
}
]
}
}}
);