ラズベリーパイ本体が持っているCPU動作状態の情報を、Node-REDで取得しクラウドへ格納すると同時にグラフ表示するアプリケーションを作成してみましょう。環境構築編で構築したNode-REDを起動し、chromeブラウザで接続します。
ラズパイCPU状態ノード
まず、パレットから[Rpi CPU状態]ノードを、ワークスペース上にドラッグ&ドロップします。パレットの[iaCloud devices]カテゴリーの下の方にありますが、見つからない場合は[ノードを検索]とある検索ウインドウに「CPU」と入れてください。名前に文字列「CPU」を含むノードが表示されます。おそらく[Rpi CPU状態]ノードしかないはずです。このノードをワークスペース上にドラッグ&ドロップします。
以下の画像ではノードの名称が[ラズパイCPU状態]となっていますが、最新版では、[Rpi CPU状態]に変わっています。
このノードは、ラズパイのCPUの持つ情報
- CPU温度
- CPU使用率
- 空きメモリの容量
を取得し、ia-cloudオブジェクトとして出力するノードです。ワークスペースに配置したノード本体をダブルクリックすると、ノードのプロパティの設定ウインドウが開きます。このノードには、[オブジェクトの設定]と[データ項目の設定]の二つのタブの設定があり、それぞれ以下の設定項目があります。
- オブジェクトの設定
- 定期収集周期(このデータオブジェクトを収集する周期を秒単位で設定)
- 非同期収集有り(このデータオブジェクトのデータに変化があった場合にそのデータを出力)
- オブジェクトキー(このデータオブジェクトにつけるユニークな名称、以下の動画では、handsonuser0.raspi-cpuを使用)
- オブジェクトの説明(このデータオブジェクトの任意の説明、省略できます。)
- データ項目の設定
- CPU温度
- データ名称(デフォルトでCPU温度と設定されています。)
- 単位(デフォルトで°Cと設定されています。)
- CPU使用率
- データ名称(デフォルトでCPU使用率と設定されています。)
- 単位(デフォルトで%と設定されています。)
- 空きメモリ
- データ名称(デフォルトで空きメモリと設定されています。)
- 単位(デフォルトでMBと設定されています。)
- CPU温度
デフォルトの設定は変更しなくてもOKです。
以下の画像ではノードの名称が[ラズパイCPU状態]となっていますが、最新版では、[Rpi CPU状態]に変わっています。
また最下部に、[ノード名称]の項目があります。この[ノード名称]は、ワークスーペス上でノードに表示される名称で、空欄のままだとパレットにある時と同じ名称が使われます。同一のノードを複数使用する場合など、ワークスペース上で区別しやすくするため任意の名前を設定できます。
必須項目が設定されていないと、ノードには赤い三角マークがつきます。設定は終わったら、右上の[デプロイ]ボタンを押してデプロイ(編集した結果をラズパイ上に展開し、実行を開始すること)します。編集したがデプロイされていないノードには、青い丸印がつきます。
フローがデプロイされ動作を開始すると、設定した周期でタイムスタンプの打たれたia-cloudオブジェクトが、出力メッセージとして出力されます。
以下は、[ラズパイCPU状態]ノードの設定時の動画です。
以下の動画ではノードの名称が[ラズパイCPU状態]となっていますが、最新版では、[Rpi CPU状態]に変わっています。
この動画では、[ラズパイCPU状態]の出力を、共通カテゴリーにある[debug]ノードに繋いで、サイドバーにあるデバッグメッセージ欄で確認しています。このデバッグメッセージは、フローの動作を確認するためによく使用します。この単純なフローで、一定周期(動画の設定では10秒)でラズパイのCPU状態を、デバッグメッセージとして表示できました。
ia-cloud接続ノード
次にこのデータを、ia-cloudサービス(CCSと呼びます。)へ送りクラウドのデータベースに格納するフローを作成しましょう。データのia-cloud格納には、ia-cloudのURLとユーザID、パスワードが必要です。ia-cloudのハンズオンワークショップ等に参加された方には、1年間の無償体験ユーザのIDが発行されています。IDを持っていない方で無償体験利用を希望の方は、ia-cloudまで連絡ください。
パレット上の[ia-cloud services]カテゴリーから[ia-cloud接続]ノードをワークスペース上にドラッグ&ドロップします。このノードは入力されたia-cloudリクエストを設定されたia-cloudサービス(CCS)に配信する機能のノードです。先に設定した[ラズパイCPU状態]ノードは、出力メッセージとしてia-cloudオブジェクトをia-cloudサービスに格納するリクエストを出力するので、この出力を直接[ia-cloud接続]ノードの入力に接続することで、ia-cloudサービスへのデータオブジェクトの格納ができます。
[ia-cloud接続]のノードの設定では、ia-cloudサービス(CCS)の接続先URL、接続に使用するIDとパスワードを保持する設定ノード[CCS接続設定]を使用します。この設定ノードは一度作成すると、フロー上のどこからでも指定して利用することができます。また、ia-cloudサービス(CCS)にia-cloudオブジェクトを格納するデータ元を明示するため、[データソースのユニークキー]プロパティを設定する必要があります。任意の名称を指定できますが、ia-cloudサービス(CCS)の接続先URL内でユニークでなければなりません。
設定を終了後、[デプロイ]ボタンを押すと、[ia-cloud接続]ノードはia-cloudサービスへ接続要求を送り接続が確立すると、ノードのしたのステータス表示が[接続済み]に変わります。また、[ラズパイCPU状態]ノードからia-cloudオブジェクトが入力されるたびに、ia-cloudサービスへデータの格納を行います。この時、ノード下のステータス表示は、[要求中…]から[要求完了]を表示します。[ia-cloud接続]ノードの出力メッセージには、ia-cloudサービス(CCS)レスポンスメッセージが出力されるため、[debug]ノードを接続するとこれが確認できます。
CPU温度のグラフ表示
次に、ラズベリーパイのCPUの温度のグラフを書いてみましょう。Node-REDには様々なグラフやメータ表示などを描画するダッシュボードノードがあります。詳細はダッシュボードノードの入門編で学びますが、ここでは簡単に試してみましょう。ダッシュボードにia-cloudオブジェクトを繋ぐには、iaCloud functionカテゴリーにある[データ抽出]ノードを使います。このノードは、ia-cloudオブジェクトから指定のオブジェクトキーとデータ名称のデータを抽出し、ダッシュボードノードで使用するラベルをつけて出力します。以下の動画は、CPU温度を[データ抽出]ノードで抽出し、ダッシュボードノードの[chart]に繋いでグラフを表示したものです。[ラズパイCPU状態]ノードはは15秒ごとにCPU状態データをia-cloudオブジェクトとして出力していますので、このia-cloudオブジェクトから、「CPU温度」データを抽出して[chart]ノードへ渡します。
ダッシュボードを表示するには、サイドバーのタブを「dashboard」に切り替え、ダッシュボード切り替えボタンをクリックします。そうするとChromeブラウザの新しいタブが生成され、そこにダッシュボードが表されます。
ダッシュボードには、タブ・グループなどのレイアウトを管理する機能がありますが、詳細は後ほど。動画の後半のグラフは、早送りで作成しています。実際には15秒おきにグラフ線が伸びていきます。