清水理史の「イニシャルB」【特別編】

「技術の無駄遣い」でネットワークカメラを使い倒す!! API制御で趣味にビジネス、果ては「動くパペット」まで……

アイ・オー・データ機器「Qwatch」シリーズ、APIはじめてガイド

 アイ・オー・データ機器のネットワークカメラ「Qwatch」シリーズの自由度がすごい。

 2019年からカメラの各種機能を制御できるAPIが公開され、介護の分野や農業など、さまざまな分野で活用されてきたが、その用途が「技術の無駄遣い」分野にも波及し、動くパペット型カメラやVRカメラなど、さまざまな方向へと拡大しつつある。応用次第で、ビジネスへの活用から、趣味の世界まで、なんでもできるネットワークカメラの活用例と、Node-REDを利用して誰でも簡単にGUIではじめられるQwatch APIの使い方を解説する。

ネットワークカメラを動くパペットに
お辞儀をさせたり手をふらせたり……

Qwatchシリーズが切り開いたネットワークカメラのビジネス&非ビジネス活用

 ネットワークカメラのビジネス活用がさかんになってきた。

 以前は防犯目的やペットの見守りなどが主だったが、最近では、飲食店での混雑状況把握や介護施設での見守りなどに使われるケースも増えてきている。また、AIを活用した事例も増えており、人の検出によって滞在時間や動線を把握するなど、カメラの映像から得られるデータがビジネスに活用される例も登場してきた。

APIを利用してさまざまな用途に活用できるアイ・オー・データ機器のネットワークカメラ「Qwatch」シリーズ。左が「TS-NA230WP」、右が「TS-NS410W」

 このようなネットワークカメラのビジネス活用には、これまでは高額な製品が必要だったり、製品の内部仕様が公開されていない関係で自社開発が難しかったりと、さまざまな課題があったが、この状況に一石を投じたのがアイ・オー・データ機器だ。

 2019年、アイ・オー・データ機器は、同社が販売するネットワークカメラ QwatchシリーズのAPIを公開した。ペットの見守りなどにも使われる比較的低価格なネットワークカメラも含めてAPIを公開したことで、比較的小規模な環境や個人ユーザーでも、APIを利用したカメラの活用が可能となった。

QwatchシリーズのAPI仕様書ダウンロードできる

 それから4年。この試みは成功し、今では法人、個人を問わず、幅広いユーザー層に「APIでシステムと連携できる自由度の高いネットワークカメラ」としてQwatchシリーズは認知され、ビジネス活用だけでなく、個人ユーザーの趣味としての活用も広がっている。

 同社の中でも、APIの活用コンテストが開催されており、その中には以下のようなユニーク、というよりも「はじけた」感覚の活用例もある。

お辞儀や手招きもできる動くパペット型ネットワークカメラ

 パンチルトできるカメラにパペットを被せることで動きが楽しめる活用例。TS-NS310Wならライン出力端子とラジコンサーボと電池を電線でつなぐだけで、特殊な電子部品は使わずに手を動かせるようになる。APIを活用することで、連続した動きを自動で制御できる。店頭での呼び込みや商品説明などのビジネス活用も可能。詳しくは動画および動画の説明欄を参照のこと。

APIで変身!動くパペット型ネットワークカメラ(3分36秒)

VRを活用した透視カメラ

 ブラウザー上のVR空間に、APIで取得したカメラ画像を並べ、スマートフォンのセンサーと連動させることで、向きに合わせた映像を表示することができる。使い方次第で以下のような使い方が可能になる。詳しくは動画および動画の説明欄を参照のこと。

APIを使って、ネットワークカメラで360度VR体験!(3分23秒)

 Qwatchシリーズは、カメラによる映像の撮影だけでなく、マイクやスピーカーを利用したサウンドの活用、AIによる人の検知や人数カウント、センサーによる温度や湿度の検知など、さまざまな機能が搭載されているが、こうした機能をAPI経由で利用可能になったことで、アイデア次第で、その可能性は無限大に広がった。

QwatchのAPIをダウンロードしよう

 このようなQwatchシリーズのAPI仕様書は、使用許諾書に同意することで、以下のアドレスから無料でダウンロード可能になっている。また、GitHubでサンプルコードが公開されており、具体的な使い方を参照することもできる。

▼ネットワークカメラ「Qwatch」API仕様書ダウンロード
https://www.iodata.jp/product/lancam/api/index.htm

▼GitHubサンプルコード
https://github.com/iodata-solution/qwatch-api

 対象となるカメラは、現状、「TS-WRFE」「TS-WRLC」「TS-NS410W」「TS-NS310W」「TS-NA230WP」「TS-WRLP」「TS-NA220W」「TS-NA220」「TS-NS210」「TS-NS110W」となっている。機種によって若干APIの仕様が異なっているため、3種類提供される仕様書から対象機種を選んで内容を確認する必要がある。

公開されているAPI仕様書の例

 「API」と聞くと難しいイメージを持つ人もいるかもしれないが心配ない。

 QwatchのAPIは、一般的なHTTPリクエストで利用できるWeb APIとなっており、簡単なものであればブラウザーでもすぐに呼び出せる。

 例えば、静止画の取得であれば、ブラウザーで以下のURLにアクセスして、カメラのユーザー名とパスワードを入力すれば表示できる。

http://[カメラのIPアドレス]:[ポート番号]/snapshot.jpg
静止画を取得する例。仕様書を読めば、比較的簡単にカメラを制御できる

 このように、Qwatch上の使いたい機能、設定したい項目に割り当てられたアドレスに対して、パラメーターを指定してリクエストすればいいので、仕様書をよく読めば誰でも利用できる。

 IoTには興味があるものの、シングルボードコンピューターなどはちょっとハードルが高そうと、敬遠していた人の入門用にお勧めだ。機種によっては、気温や湿度などのセンサーも読み出せるので、映像+環境情報など、複合的な情報を取得するIoT機器として扱うこともできる。

はじめてのQwatch API

 とはいえ、冒頭で紹介したような動画の事例は、さすがに初心者にはハードルが高い。

 そこで、今回は、組み込み機器向けの開発環境となる「Node-RED」を利用する方法を紹介する。Node-REDは、ノードと呼ばれるパーツをつなぎあわせていくことで誰でも簡単にIoT機器の動作をプログラミングできるGUIの開発ツールだ。

GUI環境でIoT機器のプログラミングができるNode-RED

 以下のサイトで、日本語のインストールガイドやユーザーガイドを参照できる。

▼Node-RED ドキュメント
https://nodered.jp/docs

 今回は、このNode-REDを一般的なWindows環境にインストールし、そこからAPIを利用してQwatchのステータスランプを制御する方法をステップバイステップで解説する。

STEP1 Node.jsインストール

 まずは、Node-REDをインストールしておこう。Node-REDは、Node.jsで動作するので、まずは以下のサイトからNode.jsをインストールする。今回は本稿執筆時点で推奨版となっている18.18.1 LTSを利用した。ダウンロード後、全て標準設定のままインストールしておこう。

▼Node.jsダウンロード
https://nodejs.org/ja

Node.jsをインストールする

STEP2 Node-REDインストール

 Node.jsがインストールできたら、コマンドプロンプトで以下のコマンドを実行してNode-REDをインストールする。

npm install -g --unsafe-perm Node-RED
Node-REDをインストールする

STEP3 Node-RED起動

 最後に以下のコマンドでNode-REDを起動すれば完了だ。コンソールに表示された「http://127.0.0.1:1880」にブラウザーでアクセスすればNode-REDを利用できる。

Node-RED
Node-REDを起動する

Qwatch APIを使ってみよう

 いよいよQwatchのAPIを利用してみよう。まずは、例としてQwatchのステータスランプを制御する例を見てみよう。この方法で基本を押さえておけば、あとはURLやパラメーターを変えるだけで、ほかの設定に応用することが可能だ。

 なお、今回利用した機種はTS-NS410Wとなる。ステータスランプ関連のAPIが機種によって異なる場合もあるので、機種に合わせて適宜修正して利用して欲しい。

STEP4 Qwatchの設定情報の確認

 APIを利用するには、QwatchのIPアドレスとHTTPのポート、ユーザー名とパスワードが必要になるので、事前に確認しておく。

カメラのIPアドレス、HTTPポート、ユーザー名、パスワードを確認しておく

STEP5 [inject]ノードの配置

 それでは、簡単なフローを作ってみよう。まずはフローを開始するための[inject]ノードを配置する。このボタンをクリックすることで処理を開始することになる。左側の一覧の[共有]カテゴリから[inject]をドラッグして配置する。

Injectノードを配置

STEP6 [change]ノードの配置

 次に、APIで利用するパラメーターを設定する。公式のAPIドキュメントによると、ステータスランプは次のようにリクエストすることで制御できる。

POST http://192.168.1.2:80/camera-cgi/admin/param.cgi?action=update&LED_status=0

LED_status
0 - 消灯
1 - 最も暗い
2 - 暗い
3 - 標準

 このリクエストをNode-REDで送信する方法はいくつかあるが、今回は変数に値を代入するときなどに利用する[change]ノードを利用してパラメーターの値をJSONで記述しておく。

 左側のノード一覧の[機能]カテゴリから[change]を配置し、ダブルクリックしてノードを編集する。[代入する値]で[J:JSONata式]を選択し、[…]からJSON形式でパラメーターを入力する。

[change]ノードを配置

 前述したように、ステータスランプは「action=update」と「LED_status=0」の2つの値で制御できるので、これを以下のようにJSON形式で記述すればいい。

{
   		 'action': 'update',
     'LED_status': 0
}
パラメーターをJSONata式で設定

 パラメーターを設定できたら前のステップで配置した[inject]ノードとつないでおく。

ノードをつないでおく

STEP7 [HTTP request]ノードの配置

 パラメーターができたら、それをQwatchに送信する。送信には[HTTP request]ノードを利用するので、左側の[ネットワーク]カテゴリから[HTTP request]を配置する。

 このノードは構成する値が多いので、以下の画面を参考に設定して欲しい。URLにAPIのリクエスト先のアドレスを記述。認証方法で[Digest認証]を選択してQwatchのユーザー名とパスワードを設定。[ヘッダ]欄で[追加]をクリックし、「Content-Type」に対して「application/x-www-form-urlencoded」設定しておく。

 設定ができたら、前のステップの[change]ノードと接続しておく。

[HTTP Request]の設定

STEP8 [debug]ノードの配置

 最後に出力結果を確認するために、[共通]カテゴリの[debug]ノードを追加し、同様に線でつないでおく。

[debug]ノードを追加

STEP9 実行する

 完成したら、右上の[デプロイ]ボタンをクリックして、フローの保存と実行準備をする。デプロイできたら、最初に配置した[inject]ノードのボタンをクリックすればフローが実行される。

 問題なければ、QwatchにHTTPリクエストが送信され、ステータスランプが消灯するはずだ。

 また、Node-REDの右側のウィンドウを[デバッグ]に切り替えておけば、実行結果を確認できる。エラーなどが発生した場合は、メッセージから何が問題なのかを確認して、フローを修正しよう。なお、ステータスランプを戻したい場合はパラメーターを「'LED_status': 3」などに変更すればいい。

[デプロイ]後に実行。カメラのステータスランプが消えることを確認。デバッグ画面でも実行結果を確認できる

 このように、Node-REDでは、[change]でパラメーターを設定し、[HTTP Request]とつなぐことで、簡単にQwatchを制御できる。今回はステータスランプを変更したが、基本的にパラメーターとリクエスト先のURLを変えるだけで、ほかのAPIも呼び出せるので活用してみるといいだろう。

 主なAPIのNode-RED用サンプルを用意したので、こちらからダウンロードして活用してほしい(右クリックしてリンク先を保存してください)。Node-REDの右上のメニューボタンから[読み込み]を選択することで読み込むことができる。ただし、筆者が個人的に作成したものなので、ミスが含まれている場合もある。あくまでも参考のためのものなので、動作は保証しない。自己責任で利用してほしい。

主なQwatchのAPIの利用例

アイデアでいろいろ使える! 子供の教育用にも

 以上、QwatchのAPIの活用例や基本的な使い方を紹介した。基本的な使い方を覚えてしまえばあとは応用なので、冒頭で紹介した動画のようにさまざまな活用が可能になるはずだ。

 もちろん、ビジネスへの活用例も多くあり、前述したAPI仕様書ダウンロードページでは、飲食店や介護施設、動物病院向け見守りシステムなどでの活用例も紹介されている。

 Qwatchを利用するメリットは、カメラ、マイク、スピーカー、温度センサー(一部機種)などのデバイスが一体化されていることだ。このため、シングルボードコンピューターのように後からカメラやセンサーなどのモジュールを追加しなくても、すぐにさまざまな用途に活用できる点にある。

 だからこそ、冒頭で紹介した動画のような、面白い活用も可能だし、ビジネスへの展開もアイデア次第で無限に広がるわけだ。

 場合によっては、STEM教育に活用するのもいいだろう。今回紹介したNode-REDを使えば子供でもGUIで本格的なプログラミングが学べるし、ハードウェアの工作の手間を省いてカメラやセンサーなどのソフトウェア部分を集中的に学ぶことができる。

 ビジネスでも趣味でも教育でも、誰でも簡単にカメラを制御できるという面白さを味わえるのはもちろんだが、「何をしようか?」「どう使おうか?」と発想を膨らませることに、何よりもワクワクさせられる製品と言えるだろう。

清水 理史

製品レビューなど幅広く執筆しているが、実際に大手企業でネットワーク管理者をしていたこともあり、Windowsのネットワーク全般が得意ジャンル。最新刊「できるWindows 11」ほか多数の著書がある。