THETA に固定IPアドレスを付与する(が残念だった件)


この記事について

特殊な事例だと思いますが、THETAをクライアントモード(以下CLモード)で使用する際に固定のIPアドレスを付与させる方法がないかと思い、調べてみました。

なお、今回は対象は THETA V としています。
試していませんが Z1 でも同じだと思います。
S/SC/SC2 はそもそもCLモードという概念がないので対象外です。

THETAに固定のIPアドレスを付与する

やり方は2つあるかと思います。 

  1. Wi-Fiルーターに設定する
  2. THETAに設定する

1 については、ルーターによくある機能で、MACアドレスごとに固定IPアドレスを紐付ける機能があるかと思います。
今回はこの方法はあえて使わず、2 の方法で試してみます。

APIを使ってTHETAに固定IPアドレスを付与する

THETAのAPIリファレンスを確認すると、以下のようなAPIがあります。
https://api.ricoh/docs/theta-web-api-v2.1/commands/camera._set_access_point/

Wi-Fiのアクセスポイントを設定するAPIで、固定IPアドレスの設定もできるようです。
ということで、試してみます。

設定してみる

THETAをAPモードに設定し、PCからTHETAのWi-Fiに接続します。
その後、以下のコマンド(API)を叩いてみます。
(なお、以下は例です。実際にはパラメータには適切な値を設定します。)

$ curl -v -XPOST -H 'content-type:application/json' \
http://192.168.1.1/osc/commands/execute -d '
{
  "name":"camera._setAccessPoint", 
  "parameters": {
    "ssid": "hogehoge",
    "ssidStealth": false,
    "security": "WPA/WPA2 PSK",
    "password": "fugafuga",
    "connectionPriority": 3,
    "ipAddressAllocation": "static",
    "ipAddress": "192.168.1.250",
    "subnetMask": "255.255.255.0",
    "defaultGateway": "192.168.1.1"
  }
}
'

実行後、{"name":"camera._setAccessPoint","state":"done"} と表示されたら設定OKです。

確認してみる

THETAをCLモードに設定してみます。
THETAのWi-FiのLEDが緑の点灯になったらOKです。

THETAをPCとUSB接続して、adb shell で内部にアクセスして確認してみます。

# ここはPCのshellです
$ adb shell

ipコマンドでIPアドレスを見てみます。

# これ以下はTHETA(Android)のShellです
$ ip a s wlan0
# 設定した固定IPアドレスが表示される

無事、設定した固定IPアドレスが付与されたようです。
ちょっと動作確認してみます。

$ ping 8.8.8.8
# 問題なさそう。

$ ping www.google.com
# 名前解決できず...

$ getprop | grep dns 
[net.dns1]:[]
# dns設定されていない...

ということで、IPアドレスは固定できたのですが、DNSの設定ができていないようです。
THETAのAPIではDNSを設定するパラメータは存在せず、どうやら詰みのようです。

まとめ

  • THETAのAPIから固定IPアドレスは設定できるが、DNS設定ができず、激しくイマイチ。
  • THETAのIPアドレスを固定したい場合は、素直にルーターの機能を使おう。