LoginSignup
2
2

More than 5 years have passed since last update.

THETA SCをPowerShellで操作してみる(THETA API v2.0)

Last updated at Posted at 2016-11-06

先日購入したRICOHの360度カメラ「THETA SC」がAPI公開されていたので
ちょっと触ってみた記録です。

公式サイト

THETA DEVELOPERS
https://developers.theta360.com/ja/

実行環境

OS: Windows 10 Pro
Poweshell: ver 5.1.14393.206
THETA API: v2.0

公式サイトをよく読めば書いてありましたが,
明示的にv2.1に切り替えを行わないとAPI v2.0になります。

PSコマンドの試し方

  1. THETA SCを立ち上げ、WIFIをONにする
  2. WindowsからTHETAにWIFI接続する(接続時のパスワードは説明書を参照)
  3. WindowsのPowerShellを立ち上げPSコマンドを実行

実行してみたAPIとPSコマンド

公式サイトみながら適当にAPI (v2.0)実行してみました。
なお、別の環境で実行する場合、コマンド中のsessionID、ファイル名などはお使いの環境に合わせて変更してください。

【Protocol】Info

カメラに関する基本情報や、サポートしている機能を取得

実行したPSコマンド

Invoke-RestMethod -Uri "http://192.168.1.1:80/osc/info" -Method GET

実行結果



manufacturer    : RICOH

model           : RICOH THETA SC

serialNumber    : 30102839

firmwareVersion : 01.00

supportUrl      : https://theta360.com/en/support/

apiLevel        : {1, 2}

endpoints       : @{httpPort=80; httpUpdatesPort=80}

gps             : False

gyro            : False

uptime          : 536

api             : {/osc/info, /osc/state, /osc/checkForUpdates, /osc/commands/execute...}

【Protocol】State

カメラの状態を取得

実行したPSコマンド

Invoke-RestMethod -Uri "http://192.168.1.1:80/osc/state" -Method POST

実行結果



fingerprint state

---------- -----

FIG_0004    @{sessionId=SID_0002; batteryLevel=0.33; storageChanged=False; _captureStatus=idle; _recordedTime=0; _re...

【protocols】checkForUpdates

現在の状態IDを取得し、Stateの状態変化を確認

実行したPSコマンド

Invoke-RestMethod -Uri http://192.168.1.1:80/osc/checkForUpdates -Method POST -Body (ConvertTo-Json @{"stateFingerprint"="FIG_0005"}) -ContentType "application/json"

実行結果



stateFingerprint throttleTimeout

---------------- ---------------

FIG_0004                       1

【commands】camera.startSession

セッションを開始。セッションIDを発行

実行したPSコマンド

Invoke-RestMethod -Uri http://192.168.1.1:80/osc/commands/execute -Method POST -Body (ConvertTo-Json @{"name"="camera.startSession";"parameters"=@{}}) -ContentType "application/json"

実行結果



name                state results

----                ----- -------

camera.startSession done  @{sessionId=SID_0005; timeout=180}

【commands】camera.takePicture

静止画撮影を開始

実行したPSコマンド

Invoke-RestMethod -Uri http://192.168.1.1:80/osc/commands/execute -Method POST -Body (ConvertTo-Json @{"name"="camera.takePicture";"parameters"=@{"sessionId"="SID_0005"}}) -ContentType "application/json"

実行結果



name               state      id progress

----               -----      -- --------

camera.takePicture inProgress 1  @{completion=0.00}

【commands】camera.listImages

静止画ファイルリストを取得

実行したPSコマンド

Invoke-WebRequest -Uri http://192.168.1.1:80/osc/commands/execute -Method POST -Body (ConvertTo-Json @{"name"="camera.listImages";"parameters"=@{"entryCount"=50;"maxSize"=160;"includeThumb"="false"}}) -ContentType "application/json"

実行結果



StatusCode        : 200

StatusDescription : OK

Content           : {"name":"camera.listImages","state":"done","results":{"entries":[{"name":"R0010045.JPG","uri":"100R

ICOH/R0010045.JPG","size":4116645,"dateTimeZone":"2016:11:05 16:18:56+09:00","width":5376,"height":

26...

RawContent        : HTTP/1.1 200 OK

Pragma: no-cache

Max-Age: 0

X-Content-Type-Options: nosniff

Connection: close

Accept-Ranges: bytes

Content-Length: 4778

Cache-Control: no-cache, no-store, max-age=0, must-revali...

Forms             : {}

Headers           : {[Pragma, no-cache], [Max-Age, 0], [X-Content-Type-Options, nosniff], [Connection, close]...}

Images            : {}

InputFields       : {}

Links             : {}

ParsedHtml        : mshtml.HTMLDocumentClass

RawContentLength  : 4778

【commands】camera.getImage

静止画をPCにコピー

実行したPSコマンド

Invoke-RestMethod -Uri http://192.168.1.1:80/osc/commands/execute -Method POST -Body (ConvertTo-Json @{"name"="camera.getImage";"parameters"=@{"fileUri"="100RICOH/R0010044.JPG"}}) -ContentType "application/json" -OutFile C:\temp\test.jpg

実行結果


無し(C:\temp\にtest.jpgが作成されている)

感想

PowerShellでお気軽にTHETAを操作できるのが新鮮でした。

はまった点はTHETA SCのデフォルトAPIがv2.0だったこと。
発売されたばかりだしとAPIは最新のv2.1だと思い込んでました。
camera.takePictureでエラーになり、おもむろにv2.0の引数で試すと成功。
公式サイトをよく読むとcamera.setOptionsをするとv2.1が使えることを発見しましたが、
時間ないのでv2.0で記事書いちゃいました

作業する上で大変だったのは、PCからTHETAにWIFIで接続するとPCでインターネットに接続できないこと。
1台のPCで「調べる&試す」の繰り返しをしようとすると都度接続先を変えるのが手間です。
自分の場合はPCはTHETAに接続しっぱなしで、調べ物はLAN接続させた7インチのタブレットで行いました。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2