madokaのブログ

勉強したことのoutput先として使ってます。内容はpythonがらみが多いかもです。

雨の予報をslackに通知する

外に出かけると屋内にいることが多くて、雨が降ったことも気付かないことがしばしばある。雨が降っているのであれば雨が止むまで待てば良いし、降り止んでいるのならそのまま帰ればいいしで、とくに問題があることはない。しかし、そんな日に洗濯物を外に干しているとなれば話は別だ。外に出ていてもこれから雨が降るとなればダッシュで帰って洗濯物を取り込みたい。そんな理由から今回、雨が降るから帰らなきゃみたいなアクションのきっかけになればと、雨の予報を通知するアプリを作ることに。

要件定義

指定した地域で雨が降っている、もしくは近々1時間くらいに雨が降りそうだという情報の通知の通知

必要な機能

  • 気象情報と取ってくる
  • 通知を投げる
  • ある一定の間隔で繰り返しを行う

今回使ったものたち

  • 気象情報を取ってくる -> YOLP

  • 通知を投げる -> slack

    • 雨が継続してるのに連続で投げられると嫌 -> Amazon DynamoDB
  • ある一定の間隔で繰り返しを行う -> Amazon Cloud Watch

  • serverの代わり -> AWS lambda

大体の流れ

sourceをlambdaにあげて、Amazon Cloud Watchに実行してもうようにしました。

  1. Amazon Cloud WatchのEventをきっかけにlambda起動 (以下lambdaの動き)
  2. YOLPから1時間以内の降水量を5分ごとのデータとして取得。
  3. 現在(10分前)から1時間後までのデータで降水量が0ではないところがあるかないかを判断。
  4. DynamoDBに通知をなげる必要があるかの情報を取得 -> 更新の必要があれば更新。
  5. さきほど取得したデータから通知の必要があった場合にのみ、slackに通知を投げる。

f:id:xmadoka:20190104224951p:plain
連携イメージ

githubにコードをあげました。 github.com

AWSと連携しないオンプレバージョンの記事はこちら

xmadoka.hatenablog.com

追記

こちら製作したのが去年の12月23日とかで、それから2週間近く雨なんて無縁な晴れた日が続いたため、slackのこのチャンネルがまったく動かなかった。。そんなところにやっと!!!

slackに通知が来た様子
slackに通知が来た様子
通知が来ました!!!test以来初!すごいうれしい!!