LoginSignup
18
12

More than 3 years have passed since last update.

LANにあるTHETA Vを見つける

Last updated at Posted at 2019-03-09

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."でアクセスできます。

動作確認方法は以下の通り。
1. THETA Vをルータにつなげる
2. ブラウザを開き、 "http://thetayl00123456.local./osc/info" に接続します。
3. パスワードを聞かれるため、ログイン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を実行します。

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コマンドを使う

直接アクセスする方法で、撮影してみます。
1. THETA Vをルータにつなげる
2. 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/
で接続できます。

18
12
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
18
12