見守りカメラ IODATA Qwatch TS-NS110W から Node-RED で画像を取得するメモです。
見守りカメラ Qwatch TS-NS110W
息子のベッドを見守りたく、IODATA TS-NS110W 購入しました。
スリーエム 3M コマンドタブを使って、賃貸の家でも壁を傷つけずに、強い粘着力でベッド上に貼り付けています。なにより、TS-NS110Wが約 150 gとめちゃくちゃ軽いために設置がしやすいです。
API の仕様は公開されている
なんとこの Qwatch シリーズ、APIが公開されています。
当社ネットワークカメラ「Qwatch」のAPIを公開いたします | IODATA アイ・オー・データ機器
こちらの記事の通り、ネットワークカメラAPIダウンロードページにアクセスします。TS-NS110Wは記事が出たあとに、発売されたものですが資料の中には入っていました。
入力フォームに記入をして、
ダウンロード完了です。
画像取得のAPI
このように丁寧な資料で API を把握できます。
しいていえば PDF じゃなくて GitHub なりで Markdown で公開していただけたらナレッジも展開しやすく嬉しいところですが、これでも情報としては十分です!ありがとうございます。
このとおり curl で分かりやすいですね。
http://<IPAddress>:<HttpPort>/snapshot.jpg
というURLに対して、Digest 認証で UserName と Password を添えて送信すると画像データが返ってきます。
UserNameとPasswordは以下をメモしておきましょう。
- UserName
- Qwatch 管理画面のログインID
- Password
- Qwatch 管理画面のパスワード
IPAddressとHttpPortは Qwatch 管理画面を見て参考にします。
書いてある設定のうち、以下をメモしておきましょう。
- IPAddress
- IPアドレス
- HttpPort
- HTTPポート番号(おそらく5桁)
これらの設定で curl でデータを取得することができます。
Node-RED のフロー
さて、とはいえ、 Digest 認証や画像取得後のチェックなど手軽にやりたいので Node-RED のフローを作ってみました。
このようなフローで静止画取得ができます。
[{"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です。
インポート後、画像を表示する node-red-contrib-image-output
ノードは追加でインストールしておきましょう。
こちらの http request ノード、ダブルクリックして API の設定します。
このような設定になっているので、さきほどの画像取得APIをアクセスするための設定を反映します。
まず、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 の環境によって変わるので、設定をよく確認しましょう。
つづいて Digest 認証の設定です。
- ユーザ名
- Qwatch 管理画面のログインID
- パスワード
- Qwatch 管理画面のパスワード
を設定します。ここも、みなさんの Qwatch の環境によって変わるので、設定をよく確認しましょう。
こちらの設定が終わったらデプロイしてアクセスしてみましょう。
画像を取得してみる
inject ノードの右にあるボタンをクリックして画像を取得してみましょう。
設定がうまくいっていれば、このように画像が取得できます!
余談:このAPIを元に記事を書いていいかは質問して快諾いただいてました
ちょっとブログにカジュアルに書いていいか不安だったので、法人窓口から問い合わせました。
このように、快諾の返信をその日にすぐにしていただいて、うれしかったです。ありがとうございました!