この記事について
特殊な事例だと思いますが、THETAをクライアントモード(以下CLモード)で使用する際に固定のIPアドレスを付与させる方法がないかと思い、調べてみました。
なお、今回は対象は THETA V としています。
試していませんが Z1 でも同じだと思います。
S/SC/SC2 はそもそもCLモードという概念がないので対象外です。
THETAに固定のIPアドレスを付与する
やり方は2つあるかと思います。
- Wi-Fiルーターに設定する
- 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アドレスを固定したい場合は、素直にルーターの機能を使おう。