Linuxのcurlコマンドを使ってTHETAのWeb APIを呼び出してみましょう。Windowsのcurl.exeを使う場合は、リクエスト例のに、\\”に変更する必要があります。

コマンドを実行する場合、適宜Web APIのリファレンスを参照して、パラメータを追加・変更したり、オプションを設定すると理解が深まると思います。

事前準備

  1. THETAの無線LANをオンにします。もしクライアントモードになっていたらアクセスポイントモードに切り替えます。
  2. THETAのSSIDはTHETAで始まり、シリアル番号と.OSCが続きます(例: THETAYR15104645.OSC)。PCのWiFiをTHETAに接続します。THETAのIPアドレスは192.168.1.1、Web APIのポートは80です。

THETAの情報を取得する

infoプロトコルを呼ぶリクエスト

$ curl [<http://192.168.1.1/osc/info>](<http://192.168.1.1/osc/info>)

レスポンス

{
    "api": [
        "/osc/info",
        "/osc/state",
        "/osc/checkForUpdates",
        "/osc/commands/execute",
        "/osc/commands/status"
    ],
    "apiLevel": [
        2
    ],
    "_bluetoothMacAddress": "58:38:79:78:A2:35",
    "endpoints": {
        "httpPort": 80,
        "httpUpdatesPort": 80
    },
    "firmwareVersion": "2.30.0",
    "gps": true,
    "gyro": true,
    "manufacturer": "Ricoh Company, Ltd.",
    "model": "RICOH THETA X",
    "serialNumber": "15104645",
    "supportUrl": "<https://theta360.com/en/support/>",
    "uptime": 568,
    "_wlanMacAddress": "3C:21:9C:F0:39:C1"
}

静止画撮影して画像を取得する

THETAを静止画撮影モードにしてから、下記のリクエストを発行します。

camera.takePictureコマンドを呼ぶリクエスト

$ curl -X POST [<http://192.168.1.1/osc/commands/execute>](<http://192.168.1.1/osc/commands/execute>) --data '{"name":"camera.takePicture"}' -H 'content-type: application/json'

camera.takePictureコマンドのレスポンス

{
    "id": "44",
    "progress": {
        "completion": 0
    },
    "name": "camera.takePicture",
    "state": "inProgress"
}

Commands/Statusプロトコルのリクエスト

$ curl -X POST [<http://192.168.1.1/osc/commands/status>](<http://192.168.1.1/osc/commands/status>) --data '{"id":44}' -H 'content-type: application/json'

Commands/Statusプロトコルのレスポンス

{
    "results": {
        "fileUrl": "<http://192.168.1.1/files/100RICOH/R0010144.JPG>"
    },
    "name": "camera.takePicture",
    "state": "done"
}

画像ファイルを取得するリクエスト

$ curl [<http://192.168.1.1/files/100RICOH/R0010144.JPG>](<http://192.168.1.1/files/100RICOH/R0010144.JPG>) > tmp.jpg