ラズパイでUSB CAMERAを利用したNode-REDフローをぷらっとホーム社OpenBlocksに移植する方法

RaspberryPIやReTerminalをサーバーとしてUSBカメラのデータを受信するNode-REDフローを作成する場合、USB CAMERAというNode-REDのライブラリーを使うことが多いと思います。

前回のBLE Beacon Scannerを使ったNode-REDフローをOpenBlocks IoTに移植する方法と同じように、現場に納入するサーバーとしてOpenBlocksを使う場合はUSB CAMERAのノードは使えないので、OpenBlocksにUSBカメラを直接接続してスナップショットを取得するフローをご紹介します。

2024/4/23追記 (解決済み)
OpenBlocksの電源を再起動するとUSBカメラを認識しなくなることが判明。詳細はこの記事の一番下に記載しましたが、OpenBlocks IoT VX2はUSBハブを経由してUSBカメラを接続することでこの問題は解決しました。
OpenBlocks IoT VX2のカメラ接続について#

OpenBlocks カメラ機能の設定

ぷらっとホームどきゅめんとのカメラ機能に書いてあるとおりに設定します。

https://docs.plathome.co.jp/docs/openblocks/fw5/service/camera

FPS、画質、ポート番号とプロトコルを設定します。

ストリーミングのURI名を設定します。

OpenBlocks URIプロキシの設定

次はOpenBlocksでURIプロキシの設定を行います。

URIプロキシの設定

URIはcamera、IPは127.0.0.1、PORT 8080 で設定。

OpenBlocksに接続したUSBカメラ映像・画像の表示

まずはStream映像(動画)です。

URLは下記の通りとなります。

 http://<IPアドレス>:880/<URIプロキシ名>/?action=stream

OpenBlocksのIPアドレスが192.168.1.77の場合は下記のようになります。

http://192.168.1.77:880/camera/?action=stream

また、OpenBlocksのNode-REDから呼び出す場合は

http://127.0.0.1:880/camera/?action=stream

となります。

次に静止画。

OpenBlocksのIPアドレスが192.168.1.77の場合、外部から呼び出す場合はこのようになります。

http://192.168.1.77:880/camera/?action=snapshot

OpenBlocksのNode-REDから呼び出す場合は次のURLとなります。

http://127.0.0.1:880/camera/?action=snapshot

MJPG-Streamer Demo Pages

OpenBlocksのIPアドレスが192.168.1.77、下記のURLを入力すると、MJPG-Streamer Demo Pagesが表示されます。

http://192.168.1.77:880/camera/index.html

ここを見るといろいろわかるのでよいです。

また、Controlのタブをクリックすると、いろんな設定もできるようです。

Node-RED側の設定

Node-REDのサンプルとしてInjectノードを押すとUSBカメラの映像が送られるフローを作成しました。

これはIO-DATAのIPカメラTS-NS410を使った方法をOpenBlocks+USBカメラでできるようにしたものです。

Node-REDからIO-DATAネットワークカメラTS-NS410のスナップショットを読み込んでメールで送信する方法

全体のフローは上記記事を参照してください。OpenBlocks+USBカメラに関係するのは、http-requestノード(USB-CAMERA)なのでこちらを解説します。

OpenBlocksに接続したUSBカメラは認証をする必要がないので、上記の設定でOKです。URLはOpenBlocksで動かすNode-REDの場合は、OpenBlocksに接続されているUSBカメラになるので、127.0.0.1で大丈夫です。

動作確認

このようにOpenBlocksに接続されているUSBカメラの画像がimage previewに表示されメールの添付ファイルとして送ることができました。

OpenBlocksの電源を再起動するとUSBカメラを認識しなくなる件について

OpenBlocksの電源を再起動するとUSBカメラを認識しなくなることが判明しました。

とりあえず、下記の手順で復活します。

1.OpenBlocksは電源OFF状態でUSBカメラの接続を外す

2.電源を入れ、WEBUIでサービス/カメラにアクセス。

3.USBカメラ使用設定を”使用しない”にして保存

4.再度、USBカメラ使用設定を”使用する”にして保存

これで復活しました。

ただ、この方法だと客先で停電などあった場合に対応が難しくなるので他に方法がないか調べてみます。

>>解決しました。

OpenBlocks VX2はUSBに直接USBカメラを接続すると不安定になるようで、USBハブを間にかませてUSBカメラを接続するとこの問題は解決します。下記公式ドキュメントを参照ください。

OpenBlocks IoT VX2のカメラ接続について

まとめ

以上、「ラズパイでUSB CAMERAを利用したNode-REDフローをぷらっとホーム社OpenBlocksに移植する方法」をご紹介しました。

弊社スマートライトではNode-REDを使ったアプリケーションの開発を行っております。今まで社内で一人でNode-REDの開発をしていて、外部の技術顧問に開発をサポートして欲しいというお話から、アプリケーション開発の依頼まで、どうぞ、お気軽にご相談ください。