見守りカメラ IODATA Qwatch TS-NS110W から Node-RED で画像を取得するメモ

見守りカメラ IODATA Qwatch TS-NS110W から Node-RED で画像を取得するメモです。

見守りカメラ Qwatch TS-NS110W

息子のベッドを見守りたく、IODATA TS-NS110W 購入しました。

image

スリーエム 3M コマンドタブを使って、賃貸の家でも壁を傷つけずに、強い粘着力でベッド上に貼り付けています。なにより、TS-NS110Wが約 150 gとめちゃくちゃ軽いために設置がしやすいです。

API の仕様は公開されている

なんとこの Qwatch シリーズ、APIが公開されています。

当社ネットワークカメラ「Qwatch」のAPIを公開いたします | IODATA アイ・オー・データ機器

こちらの記事の通り、ネットワークカメラAPIダウンロードページにアクセスします。TS-NS110Wは記事が出たあとに、発売されたものですが資料の中には入っていました。

image

入力フォームに記入をして、

image

ダウンロード完了です。

画像取得のAPI

image

このように丁寧な資料で API を把握できます。

しいていえば PDF じゃなくて GitHub なりで Markdown で公開していただけたらナレッジも展開しやすく嬉しいところですが、これでも情報としては十分です!ありがとうございます。

このとおり curl で分かりやすいですね。

http://<IPAddress>:<HttpPort>/snapshot.jpg

というURLに対して、Digest 認証で UserName と Password を添えて送信すると画像データが返ってきます。

UserNameとPasswordは以下をメモしておきましょう。

  • UserName
    • Qwatch 管理画面のログインID
  • Password
    • Qwatch 管理画面のパスワード

IPAddressとHttpPortは Qwatch 管理画面を見て参考にします。

image

書いてある設定のうち、以下をメモしておきましょう。

  • IPAddress
    • IPアドレス
  • HttpPort
    • HTTPポート番号(おそらく5桁)

これらの設定で curl でデータを取得することができます。

Node-RED のフロー

さて、とはいえ、 Digest 認証や画像取得後のチェックなど手軽にやりたいので Node-RED のフローを作ってみました。

image

このようなフローで静止画取得ができます。

[{"id":"a65e21de.09c0d","type":"inject","z":"46980af6.f32844","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":340,"y":340,"wires":[["fc41427a.dbc54"]]},{"id":"fc41427a.dbc54","type":"http request","z":"46980af6.f32844","name":"Qwatch TS-NS110W 静止画取得","method":"GET","ret":"bin","paytoqs":"ignore","url":"http://<IPAddress>:<HttpPort>/snapshot.jpg","tls":"","persist":false,"proxy":"","authType":"digest","x":590,"y":340,"wires":[["d2390f10.7a49f","c8bae1cd.bcbc7"]]},{"id":"d2390f10.7a49f","type":"debug","z":"46980af6.f32844","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":890,"y":340,"wires":[]},{"id":"c8bae1cd.bcbc7","type":"image","z":"46980af6.f32844","name":"","width":"320","data":"payload","dataType":"msg","thumbnail":false,"active":true,"pass":false,"outputs":0,"x":540,"y":400,"wires":[]}]

すぐインポートして使えるフローJSONです。

image

インポート後、画像を表示する node-red-contrib-image-outputノードは追加でインストールしておきましょう。

image

こちらの http request ノード、ダブルクリックして API の設定します。

image

このような設定になっているので、さきほどの画像取得APIをアクセスするための設定を反映します。

image

まず、URLの部分は

http://<IPAddress>:<HttpPort>/snapshot.jpg

となっているので、<IPAddress> には Qwatch のIPアドレス、 <HttpPort> にはQwatch 管理画面で見たHTTPポート番号を置き換えます。

Qwatch のIPアドレスが 192.168.10.1 で、Qwatch 管理画面で見たHTTPポート番号が 12345 であれば、

http://192.168.10.1:12345/snapshot.jpg

と、なります。ここは、みなさんの Qwatch の環境によって変わるので、設定をよく確認しましょう。

image

つづいて Digest 認証の設定です。

  • ユーザ名
    • Qwatch 管理画面のログインID
  • パスワード
    • Qwatch 管理画面のパスワード

を設定します。ここも、みなさんの Qwatch の環境によって変わるので、設定をよく確認しましょう。

image

こちらの設定が終わったらデプロイしてアクセスしてみましょう。

画像を取得してみる

image

inject ノードの右にあるボタンをクリックして画像を取得してみましょう。

image

設定がうまくいっていれば、このように画像が取得できます!

余談:このAPIを元に記事を書いていいかは質問して快諾いただいてました

image

ちょっとブログにカジュアルに書いていいか不安だったので、法人窓口から問い合わせました。

image

このように、快諾の返信をその日にすぐにしていただいて、うれしかったです。ありがとうございました!