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を利用するための設定
- SORACOM HarvestにPOSTするプログラムの作成
- SORACOM HarvestにPOSTするプログラムの実行
- SORACOM Lagoonの利用設定
- SORACOM Lagoon でダッシュボードの作成
- SORACOM Lagoon でアラートの設定
- SORACOM 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から次のようなアラームの通知メールが送られてきます。