Alerts
アラート(Alerts)は、システムの状態を人に知らせる機能です。たとえばセンサー監視では、測定値が基準を超えると、ユーザーの注意が必要な状況かもしれません。
入力と出力は、単独ではメールを送信しません。入力や出力にメールのオプションはありません。通知は次のいずれかの経路で送られます。
- Conditional関数のメール送信アクション。 もっとも汎用的な経路です。ConditionalのPythonコードが条件(例:測定値がない、限界を超えた)を確認し、メール送信アクション(または写真付きメール送信)を呼び出します。条件付き機能(Conditional)を参照してください。
- pH/EC調整機能自身のメール欄。 pH/EC調整機能は、pHが危険範囲を外れたとき、ECが高すぎるとき、最近の測定値が見つからないときに、自身の欄に入力したアドレスへメールを送ります。繰り返し送信を防ぐタイマーも独自に持っています。
- AI異常アラート。 AIの自律機能が有効な場合、警告レベル以上の異常が管理者へメールで通知されます。
- カスタムPythonコード。 利用できる場所では、ほかの方法で通知を送ることもできます。
これらはすべてアラート設定に入力したSMTPアカウントを使うため、まずその画面で設定し、テストメールで確認してください。
1時間あたりのメール上限~
メール送信と写真付きメール送信のアクションは、アラート設定の 1時間あたりの最大メール送信数 で決めた上限を共有します。上限を超えたメールはキューに溜まらず破棄され、1時間が過ぎても後から送られることはありません。破棄されたメールごとに、デーモンログ(ログビューア)にエラー行が残ります。上限のためにメールが届かなくなったら、診断設定の メールカウンターをリセット でカウンターを空にしてください。SMTP接続やログインの失敗も、ログビューアの デーモン ソースに記録されます。
条件が解消するまで1回だけ送る~
Conditionalは確認のたびに実行されるため、条件が真のままだと確認のたびにメールが送られ、1時間あたりの上限をすぐ使い切ります。組み込みのオプションができるまでは、実行と実行のあいだ保持される self にフラグを持たせ、メールを1回だけ送り、条件が終わってからフラグを下ろしてください。
measurement = self.condition("asdf1234")
if not hasattr(self, "alert_sent"): # 最初の実行時のみ
self.alert_sent = False
if measurement is not None and measurement > 30: # アラート条件
if not self.alert_sent:
self.run_all_actions() # メールを1回送信
self.alert_sent = True
elif measurement is not None: # 正常範囲に戻った有効な測定値
self.alert_sent = False # 次の発生に備えて再度有効化
補足:
- フラグを下ろすのは有効な測定値が来たときだけです。入力が値を報告しない間(
None)はフラグをそのままにするため、センサーが一時的に途切れてもメールは再送されません。 - フラグはメモリ上にだけあります。関数を無効化して再度有効にした場合やデーモンを再起動した場合は消え、次の確認で条件が真ならメールが1回送られます。
- 逆に測定値がない状況を知らせたい場合は、条件を
if measurement is None:にし、値が戻ったときにフラグを下ろします。
根本の条件が真であり続ける間アラートが確認のたびに繰り返し送られないようにするには、そのアラートを送るConditional機能に不応期(Refractory Period)を設定してください。
メール設定の詳細はアラート設定を参照してください。