清水理史の「イニシャルB」
UiPathでネットワークカメラを操作! アイ・オーが公開したAPIを活用!
2019年3月4日 06:00
アイ・オー・データ機器から公開されたネットワークカメラ「Qwatch」のAPIを使い、カメラに搭載されたHTTPサーバーに対してAPIコマンドを送信すると、設定情報の取得や変更、静止画や動画の取得が可能になる。今回は、「Curl」を使いつつ、RPAツール「UiPath Studio」も組み合わせることで、処理を自動化できるようにしてみた。
ネットワークカメラのAPIをアイ・オーが広く公開
2019年2月19日、アイ・オーから、ネットワークカメラ「Qwatch」シリーズのAPIが公開された。
開発者やパートナー限定ではなく、誰もが入手可能なかたちで広くAPIが公開されるのは、コンシューマー向けネットワーク製品としては、なかなか珍しい例だろう。
詳細は、こちらのニュース記事、またはアイ・オーのウェブサイトを参照していただきたいが、これにより、カメラに内蔵されたウェブページや純正アプリだけでなく、Curlのコマンドやウェブブラウザーなどを利用して、ある程度自由にネットワークカメラをコントロールできるようになった。
APIの仕様書は、基本的に対象製品を購入したユーザー向けとされているが、カメラAPI使用許諾への同意と利用内容、所属先、従業員規模、氏名、住所、電話番号、メールアドレス、の各情報を入力することで、誰でも無料でダウンロードすることが可能となっている。
対象機種は、TS-WRLP、TS-WRFE、TS-WRLC、TS-NA220W、TS-NA220、TS-NS210。このうちTS-WRLPは、クラウドサービスへの組み込み用APIも提供されているが、上記ダウンロードページでは、カメラ内部のHTTPサーバーにアクセスするためのローカルサービスへの組み込み用APIのみとなっている。
SNSやクラウドストレージ、AIといったウェブサービスでは、公開されているAPIを使って独自アプリからのサービスの利用やサービス間の連携を実現できることが多い。しかし、本製品のようなハードウェアで、しかもコンシューマー向けに提供されているもので、広くAPIが公開されることは、これまであまり例がないのではないだろうか。
ネットワークカメラは、従来の防犯や見守りを目的とした使い方だけでなく、店舗のオペレーション改革や顔認証による顧客サービスなど、さまざまな用途への応用が始まっている。こうした中でAPIを公開することで、より広い層にさまざまな使い方を検討してもらえれば、という狙いだろう。
一般ユーザーでも比較的簡単に利用できるAPIとなるため、ちょっと工夫するだけで、用途の幅を広げることができる可能性がある。今回の事例をきっかけとして、コンシューマー向けのネットワーク機器でも、こうしたAPIの公開が広まることを期待したいところだ。
ウェブブラウザーさえあれば、すぐにAPIを試せる
それでは、実際に試してみよう。今回利用したのは、円盤のようなユニークな形状のネットワークカメラ「TS-WRLP」だ。200万画素カメラを搭載し、1920×1080ピクセルの動画撮影に対応した製品で、IEEE 802.11n/g/b対応の無線LANか、100Mbps対応の有線LANでのネットワーク接続が可能。気温と湿度を検知できるセンサーも搭載している。
先に触れたように、本製品だけは、クラウドサービスへ組み込むためのAPIも提供されているが、今回は広く公開されているローカルサービス向けAPIの方を試した。
公開されているAPIでできることは、主に次の通りだ。
- 設定情報の取得
- 映像設定の変更(解像度やビットレートなどの変更)
- 静止画の取得
- 映像の取得
- YouTube連携
利用方法は簡単だ。HTTPでアクセスできる環境さえあればいいので、例えばウェブブラウザーを使って、仕様書に記載されているアドレスに対して特定のパラメーターを指定し、リクエストを投げるだけでいい。
例えば、「action=listall」のように指定し、あらかじめ設定しておいた管理者アカウントとパスワードでログインすれば、次のように、カメラの設定情報が一覧表示される。
取得できるのは、ファームウェアのバージョン、および映像関連の設定のみで、ネットワーク設定など、すべての情報が表示されるわけではない。このため、あくまでもカメラの映像を活用するための操作や、情報の表示のみに限定される。
前述したように、TS-WRLPでは、温度と湿度を検知するセンサーが搭載されるので、この情報くらいは表示できるかと思ったが、今回のAPIでは対象外だった。
バッチ処理や後述するRPAツールなどを使えば、複数台のカメラの設定を一括操作できるので、センサー情報やネットワーク設定など、もう一歩踏み込んだ情報もAPIで扱えると面白そうだ。
仕様書の例をそのまま使いたいなら、「Curl」か「POSTMAN」を
このようにウェブブラウザーを使って、APIを簡単に利用可能だが、先に掲げた仕様書には、「curl」を使う使用例が紹介されている。
curlは、最新バージョンのWindows 10であれば、標準でインストールされている。ただし、1つ注意が必要なのは、PowerShell環境の場合だ。スタートボタンを右クリックして「Windows PowerShell」を起動し、「curl」と実行しても、認証情報の指定でエラーが発生してしまう。
これは、pcurl」が「Invoke-WebRequest」に割り当てられているためだ。このため、「c:\windows\system32\curl.exe」とパスを指定して実行するか、PowerShellではなくコマンドプロンプト上でcurlを実行する必要がある。
コマンドラインにあまり馴染みがないのであれば、「POSTMAN」というツールを使うのがお勧めだ。GETやPOSTなどのメソッド、アクセス先のURL、指定したいパラメーター、認証方式とアカウントなどを指定し、リクエストを送ると、画面上に結果が表示される。
直感的に操作できる上、履歴が保存されるので、何度も同じリクエストを送るのも簡単。いろいろなAPIを試すのにも便利だ。
UiPathでロボットに処理させてみる
このほか、さまざまな言語を使って自分でAPIへのアクセス用プログラムを作ることも可能だ。今回は、もう少し敷居を下げて、RPAツールで操作できるようにしてみた。
個人および小規模な組織であれば無料で利用できるRPAツール「UiPath Community Edition」を利用すると、画面上でパーツを組み合わせていくだけで、こうした処理を簡単に作成できる。
今回、作った処理は次のようなものだ。詳細を説明するとスペースが足りないので、その概要のみ紹介しよう。
- Excelファイルからカメラのリストを読み込み(IPアドレスやIDが記載されている)
- リストから取得した情報を元に、リクエスト用のアドレスを生成
- Curlを呼び出して使ってリクエストを実行
- 読み込んだ設定情報(XML)から指定した情報(RTSPポート番号)を取得して表示
- RTSPポート番号を変更
- 静止画を取得して画像を保存
PowerShellの心得があれば、コマンドラインで作成することもできるが、UiPathを使えば、こうしたExcelとの連携やXMLの構造化や値の取得が簡単にできる。これにより、Excelファイルに複数台のカメラをリストとして記述しておき、一括で設定を変更したり、静止画を取得するといった処理を自動化できるわけだ。
なお、UiPathからリクエストを投げるのに、今回はCurlを使っている。UiPathは「HTTPリクエスト」という専用のアクティビティを備えているので、本来は、そちらを使った方がスマートなのだが、「HTTPリクエスト」でサポートする認証方式はBASIC認証、OAth1、OAth2のみで、QWatchへのアクセスに必要なダイジェスト認証に対応していないのだ。
ウェブサービスの場合、HTTPリクエストの対応のみで十分なのだが、今回のように、デバイスへのアクセスにダイジェスト認証が使われるケースも増えてくる。個人的には、ぜひサポートをお願いしたいところだ。
まあ、標準でサポートされていなくても、今回のようにCurlを使うなど、ほかの方法でどうにでも対応できてしまうのが、UiPathの面白いところではあるのだが……。
ルーターやNASもAPI公開されないかなぁ
以上、アイ・オーから公開されたQwatch用のカメラAPIを実際に試してみたが、思った以上に簡単に使えるので、対応カメラを持っている人はぜひ試してみることをお勧めしたい。
現在公開されている情報によれば、できることが限られているものの、工夫次第ではいろいろなことができそうだ。少なくとも、複数台のカメラの管理や設定変更などは、劇的に楽になる。
こうなってくると、身近な機器のAPIがもっと公開されないかなぁ、と期待したくなってくる。ルーターやNASが公開されると実用性が高まりそうだ。遠からず、そういった製品の登場を期待したいところだ。