THETA XのBluetooth Low Energy (BLE) APIを使ってみましょう。
THETAのBLE APIは、BluetoothのGeneric Attribute Profile (GATT)上に定義した独自プロファイルです。
THETAはBLEのペリフェラル、THETAのAPIを呼ぶデバイスはセントラルとなります。THETAの出すアドバタイズをセントラルがスキャンし、接続要求を出します。接続要求が認められると、接続を行い、GATTによる通信を始めることができます。
BLEのスキャン、接続、GATT通信を行う無料のアプリがいろいろ利用可能ですので、まずはアプリでTHETAのBLE APIを使ってみると理解が早まると思います。
THETAの電源を入れ、Bluetoothをオンにして撮影画面にするとアドバタイズを行います。
アドバタイズパケットには次の情報が入っています。
AA0123456
)0123456
)f74d1ba5-bc52-4f10-99c0-85e785ebe43f
セントラルから接続要求を出せば接続でき、GATT通信を開始できます。GATTではTHETAがサーバ、THETAのAPIを呼ぶデバイスがクライアントとなります。
Theta A1, X, Z1は次のサービスをサポートしています。
ではBLEアプリでCamera Control Command v2サービス(b6ac7a7e-8c01-4a52-b188-68d53df53ea2
)のキャラクタリスティックをいくつか使ってみましょう。
a0452e2d-c7d8-4314-8cd6-7b8bbab4d523
をreadする
カメラの情報をJSON形式で返します。
レスポンス例
{
"_bluetoothMacAddress": "58:38:79:46:F7:61",
"firmwareVersion": "2.30.0",
"manufacturer": "Ricoh Company, Ltd.",
"model": "RICOH THETA X",
"serialNumber": "15001045",
"_wlanMacAddress": "-",
"uptime": 46
}
083d92b0-21e0-4fb2-9503-7d8b2c2bb1d1
をreadする
THETAの状態をJSON形式で返します。
レスポンス例
{
"_batteryInsert": true,
"batteryLevel": 0.97,
"_batteryState": "disconnect",
"_cameraError": [],
"_captureStatus": "idle",
"_capturedPictures": 0,
"_function": "normal",
"_latestFileUrl": "",
"_recordableTime": 3844,
"_recordedTime": 0,
"_batteryTemp": 29,
"_boardTemp": 28,
}
8881ce4e-96fc-4c6c-8103-5dda0ad138fb
をreadする
THETAの状態をJSON形式で返します。
レスポンス例
{
"_externalGpsInfo": {
"gpsInfo": {
"_altitude": 10.0000000000000,
"_dateTimeZone": "2024:01:11 06:03:20+00:00",
"_datum": "WGS84",
"lat": 35.0000000,
"lng": 135.0000000
}
},
"_internalGpsInfo": {
"gpsInfo": {
"_altitude": 0,
"_dateTimeZone": "",
"_datum": "",
"lat": 65535,
"lng": 65535
}
}
}