SORACOM Harvestに保存したデータをLagoonで表示

SORACOM Harvestは、IoT デバイスからのデータ収集および可視化サービスです。SORACOM Airで接続することにより、SIM自体が認証キーとなるので認証情報は不要となり、キャリア閉域網内で処理されるため、非常にセキュアです。SORACOM Lagoonは、SORACOM Harvest を使って収集・蓄積したデータに対し、目的に応じて複数のグラフ、テーブル、地図等を組み合わせたダッシュボードを作成でき、それらを公開もしくは共有できるサービスです。今回はRaspberry Pi 3を使って、SORACOM Harvestには、メカトラックス社が開発したRaspberry Pi専用の3G通信モジュール「3GPi」にSORACOM AirのSIMカードを実装して接続します。3G通信モジュール「3GPi」にSIMカードを実装する手順については、「メカトラックス3GPIでSORACOM Airをつなぐ」を参照してください。3GPiからテストデータを Harvestに転送し、Lagoonで表示でグラフ表示させます。Lagoonで予め設定した閾値を超えると、アラーム機能により通知メールを送信させます。

目次

SORACOM Harvestを利用するための設定

グループを作成してHarvest機能をONに設定し、SIMをグループに追加するため、SORACOMユーザーコンソールから次の設定を行います。

1.SORACOMユーザーコンソールにログインし、右上の「MENU」ボタン を押すと次のメニューが表示されます。

2.メニューの「SIMグループ」をクリックし、表示された画面で「グループを作成する」ボタンをクリックすると、次の画面が表示されます。

3.表示された画面で、グループ名「xxx」を設定して「グループ作成」ボタンをクリックすると、SIMグループの一覧に作成されたグループ名が表示されます。このグループ名をクリックすると、次の画面が表示されます。

4.「SORACOM Harvest 設定」を展開し「ON」に変更し、「保存」をクリックします。右上の「MENU」ボタン をクリックして、表示されたメニューで「SIM管理」を選択すると、SORACOMユーザーコンソールにログインしたときの画面に戻ります。

5.登録したSIMカードを作成したグループに登録するために、対象となるSIMカードにチェックを付け、「操作」ボタンをクリックして「所属グループの変更」を選択します。

6.表示された画面で、作成したグループを選択して「グループ変更ボタン」をクリックすると、SIM管理画面の一覧表で変更したグループ名が表示されます。

SORACOM HarvestにPOSTするプログラムの作成

HarvestにPOSTするプログラム「uploadharvest.py」を次に示します。テストデータ「time」「temp_sensor」「temp_target」をjson形式に変換します。「time」は1づつ、「temp_target」は5づつ増加させます。SORACOMのエンドポイント「http://harvest.soracom.io」に作成したJSON形式のテストデータでHTTP POSTします。

uploadharvest.py

import json
import requests
from time import sleep

def upload_temp(time, temp_sensor, temp_target):
    # JSONを整形
    json_data = {"time": time, "temp_sensor": temp_sensor, "temp_target": temp_target}
    encode_json_data = json.dumps(json_data)
    # SORACOM Harvestに送信
    print(
        requests.post('http://harvest.soracom.io', data=encode_json_data, headers={'Content-Type': 'application/json'}))


if __name__ == "__main__":
    now = 0
    sensor = 24
    target = 0
    while True:
        upload_temp(now, sensor, target)
        sleep(1)
        now += 1
        target += 5

SORACOM HarvestにPOSTするプログラムの実行

次のコマンドでSORACOM HarvestにPOSTするプログラム「uploadharvest.py」を実行します。

$ python3 uploadharvest.py
<Response [201]>
<Response [201]>
<Response [201]>
<Response [201]>
   ・・・
   ・・・

SORACOMユーザーコンソールから使用中のSIMをチェックし、「操作」をクリックして表示されたメニューから、「データを確認」をクリックします。次のグラフが表示されます。

次の一覧表がグラフの下に表示されます。

SORACOM Lagoonの利用設定

SORACOM Lagoonを使用するために、SORACOMユーザーコンソールの右上の「MENU」ボタン を押し、表示される次のメニューで、「ダッシュボードの作成・共有」を選択します。

ダッシュボード作成・共有サービスの画面が表示されるので、「SORACOM Lagoonの利用を開始する」ボタンをクリックします。パスワードの入力画面が表示されるので設定します。設定が完了すると、次のLagoon ユーザー管理画面が表示されます。

SORACOM Lagoon でダッシュボードの作成

Lagoon ユーザー管理画面の「SORACOM Lagoon consoleにアクセス」をクリックし、ログイン画面が表示されるので、「SORACOM Lagoonの利用設定」で設定したメールアドレスとパスワードを入力して、「ログイン」ボタンをクリックすと、Home Dashboard画面が表示されます。

次のようにマウスを左端に移動させて表示された「+」にマウスを置くと作成メニューが表示されます。

まずは「ダッシュボード」を選択すると、New dashboardという名前でダッシュボードが作成され、「Graph」を選択すると、データポイントのないグラフが表示されます。パネル上部の「Panel Title」プルダウンから「編集」をクリックしすると、次の画面が表示されます。

「メトリックス」タブを選択し、グラフ化したい変数名「temp_target」と「temp_sensor」を設定します。なお、SORACOM Harvestにデータを転送しないとグラフは表示されません。

ダッシュボードを画面上部の「ダッシュボードを保存」アイコンをクリックして作成したダッシュボードを「testdisplay」として保存します。

SORACOM Lagoon でアラートの設定

SORACOM Lagoon を利用してアラートを設定します。最初にアラートチャンネルでメールによる通知設定を行い、値が「100」になるとアラートになりメール通知が送られるように設定します。

Lagoon でアラートチャンネルの設定

SORACOM Lagoon console画面で次のようにマウスを左端に移動させて表示された「アラーム」アイコンにマウスを置く「通知チャンネル」を選択します。

アラーム画面が表示されるので「チャンネルを追加」ボタンをクリックすると、次の追加画面が表示されます。

「名前」と「Email addresses」にデータを設定し、「送信テスト」ボタンをクリックしてメールが届くことを確認し、確認後、「保存」ボタンをクリックします。

Lagoon でアラートの設定

パネル上部の「Panel Title」プルダウンから「編集」をクリックして、ダッシュボードに作成したグラフを編集します。 「アラート」タブから「アラートを作成」ボタンで新規にアラートを設定します。

アラート設定を次のように設定します。

  • 名前
    デフォルトで「ダッシュボード名+alert」になります。
  • 評価間隔
    設定された条件を、ここで設定する時間間隔で評価します。
    例えば「10m」と設定した場合、10分ごとにアラートを出力する状態であるかが評価されることになります。
    今回はすぐにアラート結果が欲しいので「10s」とします。
  • 条件
    「WHEN」の1つ右の設定項目ではデータの集計方法が選択できます。例えば「max():最大値」では、集計したデータ値がアラート閾値に対しての評価対象となります。

    「OF」の1つ右の設定項目では監視するデータとその時間範囲を選択できます。例えば「メトリック」タブで作成した「A」(temp_target)というデータの現在時刻から、10分間前までのデータを監視対象としたい場合、「query(A, 10m, now)」といったように書くことができます。

    「IS ABOVE」の1つ右の設定項目に、例えば「100」と設定するとデータが「100」を超過した時にアラートが出力されます。「IS ABOVE」はクリックすると変更することも可能で選択できます。

今回の設定は、「評価間隔:10秒」ごとに「データAの現在から10分前の間」の「最大値」が「100」を超過していた場合にアラートを出力します。

作成した画面を次に示します。

設定したアラートのパラメータをアラートチャンネルと紐付けます。 「アラート」タブの左にある「通知」タブから送り先を設定します。「+」ボタンから先ほど作成したアラートチャンネル「Lagoon Alert」を選択し任意のメッセージを設定します。次のような画面になります。

ダッシュボードを画面上部の「ダッシュボードを保存」アイコンをクリックして、変更したダッシュボードを「testdisplay」として保存します。

SORACOM Lagoonへのグラフ表示

SORACOM HarvestにPOSTするプログラムの作成」で作成したプログラム「uploadharvest.py」を次のコマンドで実行し、SORACOM Lagoonへのグラフ表示とアラーム機能を確認します。

$ python3 uploadharvest.py

Lagoon のダッシュボードに作成したグラフに、次のように表示されます。グラフの表示範囲を拡大するには、マウスで拡大したい範囲をドラッグします。

Lagoonから次のようなアラームの通知メールが送られてきます。