水温が高くなると警告する
https://scrapbox.io/files/6122496fd7b709001d206daa.png
逆に冬場は水温が低くなり過ぎた時に警告する、などにも利用できる
前提条件
このページは以下がそれぞれ実現できていることを前提とする
システム構成図内「Water temp sensor」
システム構成図内「Twitter API」
システム構成図
システム構成図.icon
要件
水温が一定の温度を越えた時にTwitterBotから警告メンションを受け取れる
仕様
仕様1:水温の定期計測時に許容上限温度を超えていればその旨がメンションの送信により通知される
設計
流れは以下の通り
10分おきに水温計測
警告実施判定にて警告が必要な場合は特定のアカウントに警告メンションを送信
10分おきに水温計測
水温の自動計測にて定期的な計測(10分おき等)システムを構築していない場合は先にこちらを実現する 警告実施判定にて警告が必要な場合は特定のアカウントに警告メンションを送信
毎回の水温計測で実施するget_temperature.pyに警告実施の要否を決定する処理を追加する
実装済みのget_temperature()に警告実施判定を追加する
警告メンション送信処理alert_temp()を追加
code:get_temperature.py
TEMP_LIMIT_HIGH = 28.0
def alert_temp(alert_date, now_temp):
### TwitterAPIの認証処理 ###
### api = tweepy.API(auth) まで実施 ###
mention_text = '@Asyley_ ' + '\n水温超過 ' + alert_date + '\n現在温度:' + str(now_temp) + ' °C' + '\n上限温度:' + str(TEMP_LIMIT_HIGH) + ' °C' api.update_status(status=mention_text)
def get_temperature():
### 水温を計測してログファイルに出力する処理(実装済み)###
if temp > TEMP_LIMIT_HIGH:
alert_temp(timestamp, temp)
else:
pass
alert_date(通知時刻)をメンションツイートの内容に含ませることで通知のたびに必ず異なるツイート内容となり、同一ツイートの重複によるツイート失敗を回避することができる
完了 ⇒仕様1:水温の定期計測時に許容上限温度を超えていればその旨がメンションの送信により通知される
注意:
水温が設定値を超えている間は10分おきに毎回メンションが届くので、以下のような対策を適宜検討すると良い
警告メンションしてから3時間は警告しない
設定温度を2段階(1段階:28.0℃、2段階:29.0℃)に分け、1段階目は連続通知を抑制、2段階目を越えた時は毎回必ず警告
活用