RICOH THETA VをCLモードでネットワークに繋がっているときに、LAN内のTHETA Vを見つけるいくつかの方法を記載します。THETA VはNSD(DNS-SD)を使って見つけることができますが、ユースケースによっては直接接続する方法で済み、探索は不要かもしれません。
環境
- RICOH THETA V, ver.2.50.1 (ファームアップ必須)
- 無線LANクライアントモード(CLモード)はver.2.00.2以降で対応)
- シリアル番号"YL00123456"の端末をパスワード"00123456"で運用しているものと仮定。
THETA Vへのアクセス方法
方法1. 直接アクセス
THETA+シリアル番号+".local."というアドレスを作って、アクセスします。
今回の例では、"THETAYL00123456.local."となります。
この方法の場合、直接THETA Vと接続しているとき(THETAが192.168.1.1の時)にも同じように"THETAYL00123456.local."でアクセスできます。
動作確認方法は以下の通り。
- THETA Vをルータにつなげる
- ブラウザを開き、 "http://thetayl00123456.local./osc/info" に接続します。
- パスワードを聞かれるため、ログインID;THETAYL00123456、パスワード:00123456で接続します。
ブラウザ上でカメラの情報が得られます。
方法2. DNS-SDで探索
方法2-1. dns-sdコマンドを使う場合
macOSの場合はdns-sdコマンドが使えるため、dns-sd -B _osc._tcp.
でLAN内のTHETA Vを見つけられます。見つけたTHETA Vの名前から、dns-sd -q THETAYL00123456.local
とすると、THETA VのIPアドレス(ここでは192.168.1.74)を得られます。
$ dns-sd -B _osc._tcp.
Browsing for _osc._tcp.
DATE: ---Sat 09 Mar 2019---
21:02:07.744 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
21:02:07.745 Add 2 8 local. _osc._tcp. THETAYL00123456
$ dns-sd -q THETAYL00123456.local.
DATE: ---Sat 09 Mar 2019---
21:02:13.900 ...STARTING...
Timestamp A/R Flags if Name Type Class Rdata
21:02:13.901 Add 2 8 THETAYL00123456.local. Addr IN 192.168.1.74
方法2-2. Pythonを使う場合
Pythonのzeroconfパッケージを使って探索します。手順はzeroconfパッケージのサイトの通りです。ここではPython3を使って、pip3 install zeroconf
でzeroconfをインストールし、以下のファイル(testDNSSD.py)を作成、python3 testDNSSD.py
を実行します。
from zeroconf import ServiceBrowser, Zeroconf
import socket
from typing import cast
class MyListener:
def remove_service(self, zeroconf, type, name):
print("Service %s removed" % (name,))
def add_service(self, zeroconf, type, name):
info = zeroconf.get_service_info(type, name)
print("Service %s added, service info: %s, IP-Address: %s" %
(name, info, socket.inet_ntoa(cast(bytes, info.address))))
zeroconf = Zeroconf()
listener = MyListener()
browser = ServiceBrowser(zeroconf, "_osc._tcp.local.", listener)
try:
input("Press enter to exit...\n\n")
finally:
zeroconf.close()
実行すると、
$ python3 testDNSSD.py
Press enter to exit...
Service THETAYL00123456._osc._tcp.local. added, service info: ServiceInfo(type='_osc._tcp.local.', name='THETAYL00123456._osc._tcp.local.', address=b'\xc0\xa8\x01J', port=80, weight=0, priority=0, server='THETAYL00123456.local.', properties={}), IP-Address: 192.168.1.74
Service THETAYL00123456._osc._tcp.local. removed
のようにTHETA VがLANに接続されたとき、切断されたときに教えてくれます。
撮影してみる
アクセス方法がわかったので、POSTコマンドを使って撮影してみます。
curlコマンドを使う
直接アクセスする方法で、撮影してみます。
- THETA Vをルータにつなげる
- curlコマンドを送る
curl -X POST http://THETAYL00123456.local./osc/commands/execute --data '{"name":"camera.takePicture"}' -H 'content-type: application/json' --digest -u THETAYL00123456:00123456
CLモードではダイジェスト認証が必要なため、--digestパラメータで認証情報を送ります。
もちろん、"THETAYL00123456.local." 部分をTHETA VのIPアドレス(ここでは192.168.1.74)にしても同じです。
シリアル番号(とパスワード)がわかればIPアドレスを知ることなくLAN内のTHETA Vで撮影できます。
WebUIのあるプラグインへの接続
THETAのプラグインでWebUIを持っている場合は、8888ポートで公開されています。そのためプラグインのWebUIには、
http://THETAYL00123456.local:8888/
で接続できます。