2. My-IoTシステム構築手順
本ガイドでは、エッジコンピュータ(以下、エッジ)で現在の気温と湿度を測定し、 クラウドコンピュータ(以下、クラウド)で不快指数を計算する 「不快指数測定システム」 を開発し、My-IoT上に構築します。
2.1. 開発環境
今回の開発では次のエッジを用います。
Raspberry Pi 3B+ あるいは 4B (英国ラズベリーパイ財団製)
開発環境は、以下のようにRaspberry Pi単体で構成するだけでなく、 開発用PCと併用した構成とすることもできます。
構成1: Raspberry Pi のみの単体構成
Raspberry Pi + 液晶モニタ + キーボード
マイクロSDカード(16GB以上、Raspberry Pi OS用)
マイクロSDカードリーダー
USBメモリ(FAT32フォーマット、小容量)
インターネット接続環境(Wifi接続の場合はSSIDとパスフレーズを用意)
構成2: Raspberry Pi + PC の併用構成
開発用PC(Webブラウザ、テキストエディタを利用)
Raspberry Pi
マイクロSDカード(16GB以上、Raspberry Pi OS用)
マイクロSDカードリーダー
USBメモリ(FAT32フォーマット、小容量)
インターネット接続環境(Wifi接続の場合はSSIDとパスフレーズを用意)
Tip
構成2)Raspberry Piのヘッドレス(画面無し)セットアップ
Raspberry Piを使う際に、モニタやキーボードをつながずにネットワーク経由で操作する方法です。 My-IoTの開発ではWebブラウザ経由でRaspberry Piにアクセスするため、遠隔地に設置したRaspberry Piでの開発や操作を行うこともできます。設定方法についてはインターネットで検索して下さい。
さて、お気づきのように本開発では、 IoTシステムで重要なセンサやアクチュエータ(LED、モータなどの駆動装置) を使っていません。 初級編では、 多くの方が短期間で作れるようシンプルなシステム構成としつつ、 IoTの本質であるエッジとクラウドの連携を理解できることを一番の目標としています。
2.2. システムの動作
開発システムの具体的な動きは以下のように簡単なものですが、IoTシステムの基本動作をすべて含んでいます。
エッジ周辺の温度と湿度をクラウドに定期的に送信する。
クラウドにある最新の温度と湿度から不快指数を計算し、エッジに送信する。
クラウドから不快指数を受信し、表示する。
不快指数は次の計算式で求めます。
不快指数 = 0.81×温度+0.01×湿度(0.99×温度ー14.3)+46.3
また、温度と湿度はセンサーを使わずに、下図のようにブラウザ画面のスライドバーを操作して入力するものとします。 そして、クラウドから受信した不快指数をメーターゲージに表示します。
2.3. 開発項目
まず、My-IoTのシステム開発者は以下の3項目を開発します。 下方にそれぞれの関係を示した図がありますので、そちらもあわせて理解を深めて下さい。
エッジアプリ
エッジコンピュータにインストールされ、センサーやアクチュエータを動作させるためのプログラムです。 また、クラウドに対してセンサーデータを送信したり、アクチュエータへの制御データを受信します。
クラウドアプリ
クラウドコンピュータにインストールされ、エッジコンピュータと連携しながら動作するプログラムです。 クラウド内のデータベースから種々のデータを読み出して処理したり、その結果をエッジコンピュータに送信します。 アプリケーション外部からの指示によって動作しますが、定期的に自己発動するための機構も備えています。
コネクタ
エッジとクラウド間でやり取りするデータ形式(インタフェース)をJSONスキーマと呼ぶ表現方法で定義したものです。 コネクタが合致(インタフェースが同じ)するエッジアプリとクラウドアプリのペアによってシステムが連携動作します。言い換えると、コネクタが異なるアプリ同士では動作しません。
一方、My-IoTのシステム利用者は、コネクタ形状が同じエッジアプリとクラウドアプリを選択し組合せ、 「パッケージ」 をつくります。 これが、My-IoTで動作させるIoTシステム全体のアプリケーションとなります。 そして、このパッケージをエッジとクラウドに 「グループ」 として紐付けることで、 直ちにMy-IoTにインストールされ動作を開始します。
2.4. アプリケーション開発の流れ
これからの開発作業の流れを以下に示します。
重要
My-IoTアプリケーション開発工程
My-IoTストアへのサインアップ
OSイメージ/証明書ファイルのダウンロード
OSイメージの書込み
証明書ファイルの準備
Raspberry Piの起動確認
Node-REDの設定
コネクタ仕様をJSON形式で入力(
コネクタファイル
)コネクタ登録
Node-REDによるフロー開発(
エッジアプリ
)My-IoT out のコネクタ設定
http request のURL設定
クラウドで実行するプログラムをPython言語で入力(
クラウドアプリ
)1.をZIP形式で圧縮(cloudapp.zip)
クラウドフォーメーションファイルをYAML形式で入力(
クラウドフォーメーションファイル
)クラウドアプリ登録(2.と3.)
パッケージ作成
グループ作成
2.5. 開発ファイル(雛形)のダウンロード
本ガイドで開発するファイルの雛形を用意しています。 下記の4ファイルをそれぞれのリンクから適当なディレクトリにダウンロードしてご利用ください。
コネクタファイル (工程 2-1.):
connector.json
エッジアプリ (工程 3-1.):
nodered-thi-calc.json
クラウドアプリ (工程 4-1.):
cloudapp.py
クラウドフォーメーションファイル (工程 4-3.):
cloudformation.yaml