なにができるのか?

今回は、CANDY Pi Lite と環境センサを用いて、オフィスの環境を遠隔で監視できるようにしてみます。気温や湿度などのデータをクラウドに上げ、可視化・アラート通知を行ってみたいと思います。

こんな機器を使ってオフィス環境をモニタリングして

こんな感じのダッシュボートで可視化をします。

これを全てノンプログラミングで行います!!所要時間は約1時間くらい。気軽に試していただける内容になっています。

CANDY Pi Lite は Raspberry Pi および ASUS Thinker Board 向けに通信モジュールで、これによりキャリア回線を使ったインターネットへの接続が可能になります。ハードウェアだけでなく、CANDY RED という Node-RED ベースの開発環境も提供され、センサからデータを収集し、クラウドにアップロードする処理をコーディングなしで記述することもできます。

環境センサは、オムロン社製のUSB型環境センサ『2JCIE-BU01』を使用します。コンパクトな筐体にいくつものセンサが集約されていて使い勝手がよいです。取得できる指標については以下の通りです。

温度・湿度・気圧・照度・騒⾳・eTVOC・3軸加速度を毎秒測定し出⼒します。さらに温度と湿度情報をもとに熱中症警戒度・不快指数といった環境指標と、3軸加速度情報をもとに独⾃アルゴリズムで地震回数、振動回数、SI値といった地震情報をセンサに搭載したMCUにより算出し出⼒します。

https://omronqafs.omron.com/ja_JP/ecb/products/pdf/CDSC-022.pdf

クラウドは、シーメンスが提供する IoT オペレーティングシステム『MindSphere』を使用します。データを収集して、分析・可視化するためのツールやアプリケーションが多数提供されています。また、Cloud Foundry をベースにしており、インフラの運用からも解放されます。

以下の URL より Free 版を使用することができます。機能制限がかかっている部分もあるようですが、Mendix や Visual Flow Creator (Node-RED) といったローコード開発環境も使用可能です。かなり太っ腹だとおもいます。

  • https://siemens.mindsphere.io/en/start

なお、今回使用する機材一式をご購入したい方は、こちらのお問い合わせフォームにてご連絡ください。

さっそく、つないでみよう!

MindSphere の準備

まずは、https://siemens.mindsphere.io/en/start からサインアップして、MindSphere のアカウントを取得してください。ログインすると、以下のような画面が表示されます。ちょうど、スマートフォンみたいな感じで、利用可能なアプリケーションが並んでいます。最初に、左上の「Asset Manager」をクリックして起動します。

「Asset Manager」が起動します。デバイスと接続するためには、ここから「Asset」の登録を行います。

ここでは、「Aspect」、「Type」、「Asset」という3つの概念が出てきます。

「Aspect」は、「Asset」がもつ属性を定義してグループ化します。デバイスと接続する場合には、これらの属性をデータポイントとして、デバイスが持つ属性と関連付けます。

「Type」は「Asset」を作るためのテンプレートのようなもので、「Aspect」を組み合わせて「Type」を作成します。また、ある「Type」を引き継いで、別の「Type」を作るといった、継承のようなこともできます。

「Aspect」はオブジェクト指向言語におけるインタフェース、「Type」はクラス、「Asset」はインスタンスに近いものと考えられそうです。

さっそく、「Aspect」から作っていきましょう。サイド・メニューから「Aspect」を選択します。

「Create aspect」をクリックします。

2JCIE-BU01は1つのセンサーで非常に多くの指標を計測できるのですが、どうも「Aspect」に登録できる変数は5つまでの様なので(Free版の制限でしょうか?)、分割して登録します。

名前は「OMRON_2JCIEBU01_01」と付けます。カテゴリは、時系列データとして変化するものなので「Dyamic」を選択します。

「Add variable」をクリックして、変数を追加していきます。

以下のように変数を登録し、「Save」をクリックします。

NameUnitData typeMax. length
temperaturedegDOUBLE

humidity%DOUBLE

heatStrokedegDOUBLE

discomfortIndexDIDOUBLE

barometricPressurehPaDOUBLE

CSVファイルをインポートして登録することもできます。

「Aspect」が作成されました。

同様に「OMRON_2JCIEBU01_02」という名前で「Aspect」を作成します。

NameUnitData typeMax. length
eco2ppmDOUBLE
etvocppbDOUBLE
illuminanceluxDOUBLE
soundNoisedBDOUBLE

こちらも同様に、CSVファイルからインポートして登録することもできます。

次に「Type」を作るために、サイドメニューから「Types」を選択します。

Raspberry Pi から MindConnect を使って接続するために、「MindConnectLib」を継承した「Type」を作成します。「BasicAgent」の横の「>」をクリックします。

「MindConnectLib」の横の「>」をクリックします。

「MindConnect」で「Create type」をクリックすることで、「MindConnect」の「Aspect」を継承した「Type」を作成することができます。

名前は自由につけて構いませんが、ここでは「CandyPiLite」と付けてみます。

せっかくなので、画像も追加してみましょう。お好きな画像をどうぞ。

「Aspects」に、先ほど作成した「Aspect」を追加します。

最後に「Asset」を作成します。サイドメニューから「Assets」をクリックします。

「Create asset」をクリックします。

「Type」の一覧から、先ほど作成した「CandyPiLite」を選択して、「Create」をクリックします。

名前は「MyCandyPiLite」にしてみましょう。

「Save」をクリックすると、「Asset」が作成されます。

次に、デバイスの Onboarding を行います。証明書を発行して、デバイスが接続すための認証を行います。下の方にスクロールし、「MindConnect Lib」の横の「↗」をクリックします。

デバイスを安全に onboarding させるために、セキュリティ・プロファイルが必要となります。今回は「SHARED_SECRET」を選択して、「Save」をクリックします。

「Generate onboarding key」をクリックして、鍵を生成します。

鍵が生成されるので、テキストエディタなどにコピー&ペーストして保存します。あとで、Raspberry Pi 側で使用します。

右上の「Close」をクリックして、「Asset」の画面に戻ります。MindSphere 側の操作は一旦終了です。

CANDY Pi Lite のセットアップ

機材の購入

まずは、必要な機材を購入しましょう。

Raspberry Pi は、現在入手可能なモデルであれば、どれでも動作すると思いますが、今回は Raspberry Pi 3 Model B+ を使用しています。

nanoSIM は、NTT docomo、 au、 Softbank、どちらのキャリアでも可能ですが、「プリセットされたAPNの一覧」を参考にしてください。使用するキャリアによって、対応している CANDY Pi Lite または CANDY Pi Lite+ のモデルが異なりますのでご注意ください。今回は CANDY Pi Lite LTE と IIJ の Type I を使用しています。

また、必須ではありませんが、CANDY Pi Lite および CANDY Pi Lite+ に対応したアルミ製ケースもございます。是非、ご検討ください。

今回使用する機材一式をまとめてご購入したい方は、こちらのお問い合わせフォームにてご連絡ください。

CANDY Pi Lite のセットアップ

CANDY Pi Lite/CANDY Pi Lite+ 利用ガイド」 および 「セットアップの仕方」を参考に、 CANDY Pi Lite のセットアップを行ってください。OSイメージ は v11.0.0 以上をインストールしてください。

2JCIE-BU01 は Raspberry Pi の USB ポートに接続します。USB ポートが複数あるモデルでは、どのポートに挿しても構いません。他のポートには USB 機器を接続しないでください。接続した場合、この後で使用するフローに変更が必要な場合があります。

CANDY Pi Lite の組立が完了したら、電源を投入し、回線に接続できることを確認してください。回線に接続すると、CANDY Pi Lite の2つの LED のうち、外側のオレンジ色の LED が点滅します。

回線に接続できることが確認できたら、CANDY RED にログインしましょう。PC から Raspberry Pi に有線LAN、もしくは、Wi-Fi で接続してください。

Webブラウザを起動し、http://raspberrypi:8100/ (macOS の場合は http://raspberrypi.local:8100/)にアクセスします。

ユーザー名 / パスワードは pi / raspberry でログインします。(この後で使用するフローの関係上、パスコードの変更は行わないでください。)

ログインすると、次のようなサンプルフローが表示されると思います。本来であれば、自身でノードを配置してセンサーからデータを収集して、クラウドにアップロードするためのフローを作成していくのですが、今回は作成済みのフローをインポートします。

右上の「≡」アイコンをクリックし、プルダウンメニューから「読み込み」をクリックします。

以下のダウンロードし、ファイルの内容をコピー&ペーストしてください。また、「読み込み先」は「新規のタブ」を選択します。

インポートに成功すると「2JCIE-BU01」というタブが追加されます。右上の「デプロイ」をクリックして変更を反映させます。

「/dev/ttyUSB0」ノードのステータスが「接続済み」になっていれば 2JCIE-BU01 との接続に成功しています。「未接続」のままの場合は、2JCIE-BU01の抜き挿しや、Raspberry Pi の再起動などを試してみてください。

フローの説明を簡単にすると、上半分は、10秒に1回、2JCIE-BU01 に対して、現在の状態を取得するコマンドを送信しています。2JCIE-BU01 から返ってきたレスポンス(つまり、現在の測定値)は、メモリ上に10分間保存されます。

下半分は、REST API が実行されると、直近の10分間の平均値・最大値・最小値を返しています。

同様に、以下のファイルをインポートします。

「2JCIE-BU01_MindSphere」というフローがインポートされます。「MindConnect Node-RED Agent」をダブルクリックして、編集画面を開きます。

「Agent Configuration」に、MindSphere で Asset を作成した時に生成した鍵をコピーし、「完了」をクリックします。設定はデフォルトのままとします。

編集画面を閉じて、右上のデプロイをクリックします。

Agent Configuration のダイアログが表示されるので、MindSphere 側で作成した Asset「MyCandyPiLite」をクリックします。(もし、ダイアログが表示されない場合は、ノード編集画面内の「Agent Configuration」をクリックしてください。)

確認画面が出るので「Confirm」をクリックします。

MindSphereと通信し、データマッピングが行われます。

MindSphere側でConfigurationを確認すると、Data Point が作成されているのが確認できます。

Data mappings のタブを開くと、どの Data Point が、Assetのどの変数にマッピングされているかが分かります。

「Every 10 min」ノードをクリックしみましょう。リクエストが成功したことが確認できます。

できたか見てみよう!

MindSphere の Asset Manager で、作成した「MyCandyPiLite」を見てみましょう。データが MindSphere から見れるようになるまで、ちょっと時間がかかるようですが、「Aspect」がオンラインになっていることが確認できます。

Lanchpadに戻って、Fleet Managerでデータを見てみましょう。「Fleet Manager」をクリックしてください。

左側のメニューから「MyCandyPiLite」を選択し、表示する指標を選びます。データがアップロードされていることが確認できました。

「Rules」タブを選ぶと、ルールを追加することができます。「Create」をクリックします。

センサーをしきい値を設定します。単にしきい値を超えたかどうかだけでなく、変動の割合や時間でフィルタリングすることにより、しきい値付近での細かな変動でアラートが頻発するこを防げます。

ウィザードに従って条件を入力していき、最後にメールの送信先アドレスを入力します。

ルールが追加されました。

しきいち超過が発生しすると、このような感じでメールが送信されてきます。

まとめ

CANDY Pi Lite と CANDY RED, MindSphere を使うことによって、IoT アプリケーションをノンプログラミングで作成することができました。おそらく、ITに少し慣れた方であれば、1時間もかからないと思います。

もちろん、不具合が人の生死や莫大な損失に直結するような重要システムであれば、プロフェッショナルが重厚な開発プロセスに従って開発することも必要ですが、IoT や DX では、トライ&エラーを繰り返しながら、自分たちの手で進めていくことが重要だと思います。

これか冬にかけて、コロナウイルスとインフルエンザのツインデミックが危惧されます。こまめに換気しつつ、湿度も保つ必要があります。快適な環境の維持のために、IoTをはじめてみてはいかがでしょうか?