【2021年2月4日 追記】フォローの作成について、動画 (https://youtu.be/whPNNexaMv8)を追加しました。あわせてご参考にしたください。


2021年1月27に開催される、マクニカ主催のオンラインセミナー「センサーを使ったクラウドアプリ開発セミナー」にて、CANDY Pi Lite の紹介をさせていただくことになりました。

下記の URL よりお申し込みいただけます。アンケートに回答いただいた方には CANDY Pi Lite+ D をプレゼントさせていただきますので、ご参加、お待ちしております。

その準備のため、SmartMesh IP搭載のセンサー端末「EH-Terminal G2S」と、その親機となる「USB Network Manager DC2274A(アナログ・デバイセズ社製)」をお借りしたので、さっそく、動かしてみたいと思います。

センサー・デバイス・クラウドの説明

SmartMesh IP について

アナログ・デバイセズの SmartMesh IP を使うことで、非常に信頼性の高いマルチホップ・メッシュ・ネットワークを、低消費電力で実現することができます。これにより、工場や倉庫のような非常に広い施設であっても、各所に設置されたセンサーを SmartMeshIP で接続することにより、施設まるごとを監視することができます。また、低消費電力であるため、電池駆動で長期間にわたって運用することもできます。詳細はアナログ・デバイセズ社のウェブサイトをご覧ください。

EH-Terminal G2S について

EH-Terminal G2S は、アナログ・デバイセズ社の SmartMesh IP を搭載したセンサー端末で、電源投入するだけで自動的にメッシュネットワークを構築できます。

センサーは以下のものが搭載されています。

詳細はマクニカ社のウェブサイトをご覧ください。

CANDY Pi Lite について

CANDY Pi Lite は Raspberry Pi および ASUS Thinker Board に対応した通信ボードで、これにより、Raspberry Pi 等を、キャリア回線を使ってインターネットに接続させることができます。CANDY Pi Lite にはいくつかのラインナップが存在しますが、今回は、高速通信に対応した「CANDY Pi Lite+」を使用します。

CANDY RED & CANDY EGG について

CANDY RED と CANDY EGG は、それぞれ、デバイスとクラウドに対応した、Node-RED ベースのローコード開発環境、かつ、実行環境です。CANDY RED と CANDY EGG を活用することにより、簡単に短期間で IoT システムを構築することが可能です。赤が CANDY RED(デバイス側)、青が CANDY EGG(クラウド側)と覚えてください。

まとめると、システム構成は以下のようになります。

データを取得してみよう!

さっそく、EH-Terminal と Raspberry Pi を接続して、センサーからのデータを取得してみましょう。

CANDY Pi Lite を接続した Raspberry Pi に電源を投入し、親機(DC2274A)を USB ポートに接続します。CANDY Pi Lite 用の OS イメージ (https://github.com/CANDY-LINE/candy-pi-lite-os-image/releases) をお使いであれば、最初から udev rules が登録されているので、自動的にマウント・ポイントへのシンボリックリンクが作成されます。

pi@raspberrypi:~ $ ls -l /dev/
合計 0
lrwxrwxrwx 1 root root           7 11月  2 16:19 DC2274A-A.API -> ttyUSB3
lrwxrwxrwx 1 root root           7 11月  2 16:19 DC2274A-A.CLI -> ttyUSB2
... (snip) ...

PC と Raspberry Pi を Wi-Fi や有線 LAN で接続し、ウェブブラウザから http://raspberrypi:8100/ (macOS / Linux の場合は http://raspberrypi.local:8100/) にアクセスし、CANDY RED にログインします。空のフローを新規に作成し、初期登録されているサンプルフローは削除してしまいます。

左側のパレットから 「SmartMesh in」というノードを検索して、ドラッグ&ドロップします。

「SmartMesh in」ノードをダブルクリックし、プロパティを開きます。「Manager」の編集ボタンをクリックします。「Subscribe」には「All Events」が設定されているはずなので、そのままとします。

「API Port」が「/dev/DC2274A-A.API」となっていることを確認します。これは、先ほど確認した、親機のマウント・ポイントへのシンボリック・リンクです。

ここまで確認でしたら、プロパティを閉じて、一度、デプロイを行います。

すると、「SmartMesh」ノードの下に「connected 0」と表示されます。これは、まだ、1台も子機が接続されていないことを意味します。

EH-Terminal の電源を ON にします。しばらくすると「connected」が「1」に変ります。

先ほど同様に、ノードのプロパティから「Manager」のプロパティを開くと、「Active Motes」に電源を投入した子機が追加されていることが分かります。その端末かどうかは MAC アドレスで確認できます。

すでにデータは送られてきているのですが、バイナリデータのままなので、実際にどんな値なのかが分かりません。

そこで、「EH Terminal G2」ノードを使って、バイナリデータを翻訳します。パレットから「EH Terminal G2」ノードを検索し、ドラッグ&ドロップします。そして、「SmartMesh」ノードのアウトプットと、「EH Terminal G2」ノードのインプットを接続します。

さらに、「dedug」ノードをドラッグ&ドロップして、「EH Terminal G2」ノードのアウトプットと接続します。

デプロイしてログメッセージを確認すると、照度、加速度(x, y z)、VOC、温度、湿度、バッテリー残量が送られてきていることが分かります。

これで、EH Terminal G2 からデータを取得することができました。次は、クラウドにデータをアップロードして、可視化してみましょう。

パレットから「CANDY EGG websocket out」ノードをドラッグ&ドロップし、「EH-Terminal G2」ノードと接続します。

「CANDY EGG websocket out」ノードをダブルクリックし、プロパティを開きます。「Account」で「新規に CANDY EGG account を追加…」を選び、選択ボタンをクリックします。

「Account FQN」にお使いの CANDY EGG の URL を入力します。同様に User ID と Password を入力します。

Account FQN は「xxxx@yyyyy」の形式に自動的に変換されます。

「更新」をクリックして、アカウント設定を保存します。

「CANDY EGG websocket out」ノードのプロパティ設定に戻り、「Path」の設定を行います。好きなパス名をつけることができますが、ここでは「/ehterminal1」と設定します。

ここで、デプロイをします。この時点では、まだ、CANDY EGG(クラウド)側の設定をしていないのでエラーとなります。

クラウドアプリを作ろう!

センサー・データを受信する

今度は、CANDY EGG を使って、クラウドアプリを作っていきます。CANDY EGG にログインして、新規のフローを作成します。

「CANDY RED Endpoint IN」ノードと「debug」ノードをドラッグ&ドロップして接続します。

「CANDY RED Endpoint IN」ノードのプロパティを開き、「Add new

CANDY RED websocket listener…」を選び、横の編集ボタンをクリックします。

「Path」に CANDY RED 側で設定した「/ehterminal1」を設定します。

デプロイすると、「CANDY RED Endpoint IN」ノードのステータスが「connected 1」に変わります。また、CANDY Pi から送られてきたデータがログとして表示されているのも分かります。

CANDY RED 側も確認してみましょう。こちらも、ステータスが「Error」から「conneceted 1」に変わっています。

センサー・データを可視化する

クラウド側でセンサー・データを受信できるようになったので、今度はこれを可視化してみます。

全てのセンサーのデータを1つのグラフに表示させてしまうと分かりにくいので、ここでは、変化の分かりやすい照度を可視化してみましょう。

様々なセンサー・データの中から、照度センサーの値だけ取り出すためには、「change」ノードを使います。パレットから「change」ノードをドラッグ&ドロップします。プロパティを開き、Rulesに「Move」、「msg.payload.data.illuminance.value」to 「msg.payload」と設定します。

パレットから「gauge」ノードと「chart」ノードをドラッグ&ドロップし、「change」ノードと接続します。。

「gauge」ノードのプロパティを開き、「Add new ui_group…」を選択し、隣の編集ボタンをクリックします。

「Name」に「EH-Terminal」と設定します。

「Chart」ノードの方も、プロパティを開き、先ほど作成した「[Home] EH-Terminal」を Group に設定します。最後にデプロイします。

EH-Terminalの照度センサの部分に光を当ててみます。

ダッシュボードで確認すると、照度が変化していることが分かります。

フロー開発のまとめ

CANDY RED ・CANDY EGG のフロー作成を動画にもまとめました。あわせてご参考にしたください。

CANDY RED ・ CANDY EGG フロー作成

通信量について

気になる通信量ですが、10秒間隔でデータを送信しているのですが、WebSocket で通信しているおかげか、ぼほ、アップロードのみで、約250KiB / 時でした。1ヶ月で 200MB 程度になりそうです。

まとめ

CANDY Pi と CANDY RED、CANDY EGG を活用することで、ものの数十分でセンサーをIoT化することができました。これをベースに、複数端末対応、しきい値設定によるメール送信、デバイスに対する遠隔制御なども簡単に行うことができます。

是非、みなさんもセンサーと CANDY Pi / RED / EGG を活用して、IoT システムを構築してみてください!