SORACOM Lagoon 3 (以下 Lagoon 3) を使うと、IoT デバイスが収集したデータに基づく通知の機能があります。通知機能を使用するには、3 つの要素を関連づけて組み立てます。その 3 つの要素、Alert rule、Contact points、Notification policy については、別のブログで比喩を交えて解説しましたので、全体像を把握されたい方はそちらを参照ください。
今回の記事では、Lagoon 3 の通知を構成する要素の 1 つ Alert rule に焦点を当て、その考え方を解説します。Alert rule は 3 つの中でも設定項目が多く、慣れるまでは少し難しく感じてしまうかもしれません。しかし、キホンとなる考え方をマスターすれば、思い通りの通知システムを作れるようになります。
詳しい操作方法を知りたい方は Users ドキュメントもご参照ください。
Alert rule の考え方は「取り出す」「まとめる」「比べる」
考え方を知るのが、Lagoon 3 の Alert rule を理解する近道です。Lagoon 3 で Alert rule 設定では、次の 3 つの手順を踏みます。
- まず、蓄積されたデータの中から Alert rule の判定に関係するデータを取り出す
- 次に、取り出したデータを 1 つの数値にまとめる (= 集計・集約する)
- 最後に、計算した 1 つの数値としきい値を比べる (= Alert を出すか否かを判定する)
この 3 つの手順「取り出す」「まとめる」「比べる」が Lagoon 3 の Alert rule の基本です。
つまり、「通知条件を 3 つの手順に分けて考える」が Alert rule を設定するコツです。
例えば「過去3時間以内に平均温度が20℃を超えた時」に通知を出したければ、それを 3 つのステップに分解してこのように当てはめるのです。
- まず、蓄積された温度データのうち、3 時間前から現在までのデータを取り出す
- 次に、取り出したデータの平均値を計算する
- 最後に、平均値をしきい値 20 ℃ と比較し、それより大きければ通知を出す
それでは、実際の画面を見てみましょう。
データを取り出す
まず、蓄積データから、Alert rule の判定に関係するデータを取り出します。
具体的に言えば、Alert rule で使うのは「いつからいつまでに」「どの SIM が取得した」「どのデータ」かを設定します。下の画像の赤四角で囲った 3 つの部分の設定が重要です。
例えば上の画像は、「3 時間前から現在までに」「SIM 名 ‘tau mu’ が取得した」「temp (温度) のデータ」を Alert rule に使用する、という設定です。GPS マルチユニットなどは「温度」や「湿度」など複数のデータを収集しますので、最後の項目でデータ系列を指定します。
● “Harvest” となっているプルダウンメニューは、データソース(データの参照先)です。ここではデータ収集・蓄積サービス「SORACOM Harvest」を参照先としています
● “Air” となっているプルダウンメニューはは、コネクティビティ(回線種)です。 “Air” SORACOM Air for セルラー(SIM)、その他には “Sigfox” 等があります。
● “Standard” となっているプルダウンメニューは、データフォーマットの扱い方です。ここでは “Standard” としています。その他の値についてはデータフォーマットを御覧ください。
データを 1 つの数値にまとめる
次に、取り出したデータを 1 つの数値に集計 (集約) します。
上の画像の赤四角で囲った部分で集計・集約方法を選びます。方法は 6 種類あります。例えば Mean を選べば、過去 3 時間の平均温度を使って通知を出す/出さないを判定することになります。
- Min – データから最小値を抜き出す
- Max – データから最大値を抜き出す
- Mean – データの平均値を計算する
- Sum – データの合計値を計算する
- Count – データの個数を数える
- Last – データから最後 (= 最新) の値を抜き出す
たとえば電灯のON/OFFのような「状態」を知るには、最後の 1 点のデータのみを対象とする Last を利用します。
まとめた数をしきい値と比べる
最後に、計算した 1 つの数値としきい値を比べて、通知を出すべきか否かを判定します。設定した条件式が成り立つときに通知を出すべき状態となり、成り立たないときはその状態になりません。これを設定するには、下の画像の赤四角で囲った 2 つの部分を編集します。
左側の赤四角は「判定方法」で、次の 4 つの中から選びます。例えば上の画像のように設定すれば「過去 3 時間の温度の平均が 20 ℃を超えたら通知を出す」となります。
- Is above – 値が大きくなったら通知する
- Is below – 値が小さくなったら通知する
- Is within range – 値が範囲に入ったら通知する
- Is outside range – 値が範囲から出たら通知する
これらを使って、例えば「高温になったら通知」「低電圧になったら通知」「湿度の適正範囲から外れたら通知」のような設定ができます。
最後に、忘れずに [Make this the alert condition] をクリックします (クリックした項目を Alert 条件として利用できます) 。
Alert rule の状態と通知の関係
Alert rule は状態を持ちます。状態は主に「Normal」か「Firing」であり、Alert rule の評価間隔ごとに再評価され、状態が更新されます。そして、この状態の変化に応じて通知が送信されるかどうかを判定しれます。
注意点としては、この状態が変化した際に通知が送信されるということです。たとえば Firing 状態が継続しても、繰り返し通知が送信されることはありません。
前の状態 | 後の状態 | 通知の有無 |
---|---|---|
Normal | Normal | 通知しません |
Normal | Firing | [FIRING] を通知します |
Firing | Firing | 通知しません |
Firing | Normal | [RESOLVED] を通知します |
おさらい
おさらいすると、Lagoon 3 の Alert rule の設定手順は、データを「取り出す」「まとめる」「比べる」です。通知を送信する条件をこの枠組みに当てはめて整理し、それを画面で設定するのです。「どのデータを取り出して」「それをどのように集計・集約して」「それをどんなしきい値と比較する」かをそれぞれ考えるのが、Alert rule 設定のコツです。
多くの通知のユースケースは、Alert rule 設定画面に最初からある 3 つを設定するだけで実現できます。さらに高度な通知条件は、[+ Add query] や [+ Add expression] でデータの取り出し、集計、比較の処理を追加して設定できます。
Lagoon 3 の Alert rule の設定で重要な「取り出す」「まとめる」「比べる」の考え方。この考え方に沿って必要な通知条件を整理し、Lagoon 3 で最適な通知を作り上げてください。
― ソラコム 小林 (tau)