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をオンにして撮影画面にするとアドバタイズを行います。
アドバタイズパケットには次の情報が入っています。
セントラルから接続要求を出せば接続でき、GATT通信を開始できます。GATTではTHETAがサーバ、THETAのAPIを呼ぶデバイスがクライアントとなります。
THETA Xは現時点ではCamera Control Command v2サービスのみをサポートしています。このサービスは次の4つのキャラクタリスティックを含みます。
プロパティは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
}
プロパティは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,
}
プロパティは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
}
}
}
プロパティはnotify
のみ
状態に変化があればJSON形式で通知します。
通知例:
{ "batteryLevel": 0.91 }