FASTIO LOGGERの仮想データ項目を使って “一定時間計測値がある状態だったらメール送信” をやってみる

こんにちは!開発部の古川です。

弊社のデータ計測サービスである、FASTIO LOGGERには、仮想データ項目 という機能があります。
時々、お客様の声で「こんな計測はできませんか?」というご質問をいただくのですが、実は、標準で搭載されている機能の組み合わせで実現できたりすることもあります。

今回は、”一定時間異常値が続いたらメールを送信” する、という設定で、そのようなケースを実現する方法をご紹介したいと思います!

仮想データ項目とは

仮想データ項目は、計測端末等から送信されるデータに対して、サーバ側で演算を行って、異なるデータ項目として記録するFASTIO LOGGERの機能です。
端末等から送信されるデータを「実データ項目」として、それに対して「仮想データ項目」と表現しているんですね。

仮想データ項目の一覧

今現在、標準のFASTIO LOGGERには、下記のような仮想データ項目が標準で搭載されています。

仮想データ項目名 説明
差分計 データ項目同士、又はデータ項目と特定の値との差を計算します。
比率計 データ項目同士、又はデータ項目と特定の値との除算を行います。
乗算計 データ項目同士、又はデータ項目と特定の値との乗算を計算します。
正時積算計 あるデータ項目に対して、正時毎の積算値を計算します。
連続積算計 あるデータ項目に対して、連続で積算値を計算します。
移動計 データの計測時点から、一定期間過去に遡りながら集計します。
データレンジフィルター あるデータ項目に対して、指定した上下限範囲を超えた場合の値の調整を行います。

今回は、冒頭の設定を実現するために使用する2つの仮想データ項目を簡単に説明します。

連続積算計

連続積算計は、あるデータ項目について、連続で積算値を計算します。
ただ積算を行うだけでなく、ポイントとなる機能を一つ持っていて、それは、リセットの条件に該当した場合、値をリセットし、リセット値から積算が開始される、というものです。

連続積算計の設定画面は次のような画面です。

このように、累加雨量という計測を実現するために用いたりします。
実際、この機能は、累加雨量を実現するために開発したもので、他の用途にも使えるように機能を汎化させたものです。

上記の設定例では、雨量計で計測する雨量0mmの状態が6時間続いた場合、累加の値を0にリセットし、その後また雨が降ったら累加していく、ということを行っています。

データレンジフィルター

データレンジフィルターは、はある計測値に対して、指定した上下限範囲を超えた場合の値の調整を可能にします。

この仮想データ項目では、下記のようなデータ範囲を定義し、
[異常データ] <= [誤差範囲データ] <= [正常データ] <= [誤差範囲データ] <= [異常データ]

上記の範囲に対して、次の処理を行います。

  • [異常データ]には、画面で設定した異常値を出力。
    ※空文字で欠損扱いを示すことも可能。
  • [誤差範囲データ]には、画面で設定した訂正値を出力。
  • [正常データ]は、そのままの値を出力。

データレンジフィルターの設定画面は次のような画面です。

この設定では、濁度計の値がマイナスの場合、0として表示するという設定を行っています。

センサによっては、通常計測範囲からの外れ値が上がったりすることがあるので、それを除外してデータを確認する、という事ができます。

仮想データ項目の組み合わせ

そして、これらの仮想データ項目は、他の仮想データ項目に対して演算することもできます。
これを使って、色々な演算を組み合わせたデータ項目を作り出すことができる、という訳です。
※それぞれの設定画面の最下部に「計算順」という項目があることに気づきましたか?

警戒線イベント

警戒線イベントの機能

FASTIO LOGGERでは、データ項目に対して、閾値を設定して、その閾値を超えたり戻ったりした時にイベント処理を行う、という機能があります。
このイベント処理でメールを送信することができます。
そして勿論、この機能は、前に紹介した仮想データ項目に対しても、設定することができます。

警戒線の機能の詳細については、また別の機会にご紹介します。

“一定時間異常値が続いた場合にメールを送信する”をやってみる

組み立て方

では、実際に冒頭のケースを実現してみましょう。
今回は、冷凍庫のドアが開け放しによって、温度が異常に上がった場合にメールをする例で考えてみます。

まず、メールを送信する為には警戒線イベントの設定が必要です。
何らかの項目に対して、閾値設定を行う必要がありますが、今回は、一定時間異常値が続いた場合なので、一定時間経過したら、ある計測値が閾値を超える、という設定を行う必要がありますね。

一定時間というのは、連続積算計の「ある値が指定時間続いたら」というリセット条件を用いるだけでもできそうな気がします。
例えば、温度が10分間、5℃を超えたら、特定の値にリセット、その値を条件に警戒イベントでメール送信、という設定だけでも実現できそうですが、連続積算計はその名の通り、値を積算し続けてしまうため、今回のケースでは、

  • 冷凍庫の温度がプラスで続いた場合は、リセット値を超えてしまう
  • 逆に、マイナスが続いた場合は、リセット値を下回ってしまう

ということになってしまいそうです。

これを回避するために、データレンジフィルターが利用できます。
データレンジフィルターの想定用途は、前述したような計測値の上下限調整ですが、指定した範囲のデータをある値に収れんする用途でも利用できます。

今回の例では、下記のように分類することができますね。

状態の分類 値の分類
冷凍庫内の温度が正常に保たれている状態 正常範囲 値A
ドアが開け放しで温度が異常に高い状態 異常範囲 値B

連続積算計では、その値を次のように受けることで、前述の問題を回避することができそうですね。

  • 値Aが続く限り値の積算を継続する
  • 値Bが一定期間続いた場合、値Aより低い値にリセットする

まとめると、次の手順で設定を組み立てます。

  1. 温度計の温度をデータレンジフィルターを使って正常/異常に分類
  2. 連続積算計で異常値が一定期間継続する場合、値をリセット
  3. リセット値を閾値をして警戒線イベントを設定

説明が長くなりましたが、実際にやってみます。
FASTIO LOGGERの計測データ項目で、「温度」を計測しているものとします。

データレンジフィルター

まず、値の分類をしましょう。

設定は次のようになります。

冷凍庫の温度が5℃以上の場合、1に分類
冷凍庫の温度が5℃未満の場合、2に分類、と設定しています。
最初に演算するので、計算順は、「0」としていますね。

連続積算計

次に、分類した値の連続性を見る設定をします。

設定は次のようになります。

ポイントは、「10分間、計測値が1」、即ち、5℃以上の場合に、-1にリセットする、という設定です。
-1としているのは、その時点の積算値に1が加算されるので、値が増加しないようにしています。
これは、後に示す実際のデータを見てもらうと理解しやすいかと思います。

警戒線イベント

最後に、警戒線イベントを設定します。

今回は、通常は正の方向に増加している値が0に下がった時、にイベント処理を行いたいので、連続積算計に対する警戒線の設定は次のようになります。

値の方向は「下方向」になりますね。
警戒値/警戒解除値は、共に0で設定しておきます。
これで、「正常値」から「異常値」に「下がった」時に警戒状態とする、という設定が実現できます。

そして、登録した警戒線に対するイベント設定を行います。

指定のアドレスにメールを送る設定ですね。

動作確認

では、実際にデータを送ってみます!
今回は、1分サンプリング1分送信データを送信しています。

14:03から「冷凍庫の温度」が上昇していますね。
14:14に「10分間温度異常監視」が「0」を示しており、14:04 ~ 14:14 に、5℃が10分間継続したことがわかります。
14:19に「10分間温度異常監視」が再び積算を続けていて、「冷凍庫の温度」が5℃を下回って降下していることがわかります。

メールはどうでしょうか。

14:14 ~ 14:18まで、きちんと受信できていますね!

おわりに

いかがでしょうか。
FASTIO LOGGERの仮想データ項目は、それぞれの機能を組み合わせることで、一見実現できなさそうな計測を実現できたりもします。
また、エコモット開発チームでは、このような組み合わせで実現できることを増やしていくために、色々なニーズの中から、新しい仮想データ項目を作成したり、既存の項目のパラメータを増やしたりしています。

「こういった計測をしたい!」というご要望があれば、
既存の機能で実現できたり、既存機能の幅を少し広げるだけで実現できることもあるかもしれませんので、担当の窓口までご相談ください!