こんにちは!アステリアのショウジです。
今年は多くの地域で異例の早さでの梅雨明けとなり、6月末から暑い日が続いています。
熱中症にならないよう、水分・塩分の補給やエアコンの適切な利用が必要ですが、電力の需給状況も気になりますね。
そこで今回は、「電力使用率が基準値を超えていたら節電を促すメッセージをSlackに投稿するフロー」をつくってみました!
電力使用率の実績値は、東京電力パワーグリッド株式会社様から公開されている「でんき予報」の電力使用状況データ(CSVデータ)を利用しています。
処理の流れは、以下のようにしました。
あらかじめSlack側でAppを作成しておく必要があります。
今回は、「でんき予報bot」という名前でAppを作成しました。
ポイントは「スコープ」の設定です。スコープには「chat:write」「files:write」の2つの設定を入れておく必要があります。前者はテキストメッセージの投稿のため、後者は画像の投稿のために必要です。
このあとの手順(ASTERIA Warp側のコネクション設定)で必要になるので、OAuth & Permissions のページにある Bot User OAuth Token の内容をコピーしておきます。
ASTERIA Warp側は、以下のような設定を実施しました。
フローを作る前に、Slackと接続するためのコネクションを作成しました。
「APIトークン」にはSlack側の Bot User OAuth Token の内容を、「チャンネル」には投稿先のチャンネル名「#東京電力でんき予報」を設定しました。
フローはこのような内容になりました。
どのコンポーネントでどんな処理をしているのかは、フローの中に書かれている説明の通りですが…これだけだとちょっとわかりにくいですよね。
なので、このあともう少し解説したいと思います。
最初にCSVデータを取得します。これは、HTTPGetコンポーネントでCSVデータのURLを指定するだけで実現できました。
これは、CSVデータの中身が若干複雑でしたので、以下のステップ①②③に分けて実現しました。
データレイアウト
フローでは、以下の部分でこの処理を実現しています。
なお、最初のHTTPGetコンポーネントは、CSV取得と「15行目からデータを取得する」という処理を兼ね備えた形になっています。
実は、この部分では4種類の方法を組み合わせてデータをフィルタリングしています。
詳しくは別の記事でご案内していますので、ご興味あるかたは、この記事の最後にあるリンクからご参照ください!
これは、マッパーの中で処理を作りました。
CSVから取得した値をembed関数に差し込んで、メッセージのテキストを生成する仕組みです。
今回作ったフローは、Slackへのテキストの投稿に加えて、電力使用率が基準値を超えていたときは「節電のお願い」を画像でも投稿するという仕組みにしました。
これを実現するためにSlackアダプターを使ったのですが、Slackアダプターには2種類のコンポーネントがあり、以下のような仕様になっています。
SlackUploadコンポーネントでの画像ファイルの指定が必須なので、画像が不要な場合にはSlackPostコンポーネントを使う必要があります。そのため今回のフローでは、基準値を超えているか(=画像が必要か不要か)を判定して処理を分岐させました。
サーバ負荷にも配慮して1時間に1回だけ動作するように設定しました。また、夜間は電力使用率が下がるので、8時~20時までの間だけ動くように設定しました。
フローを実行すると、このようにSlackに投稿されました!
このタイミングでは、電力使用率が93%だったので画像つきで投稿されていますね。見た目にもわかりやすくて良い感じです!
今回、Web上からのデータ取得・加工・Slack通知までの流れを、ASTERIA Warp で簡単に実現することができました!
ちなみに、ASTERIA Warpでは「LINE公式アカウント(旧LINE@)」や「Teams」と連携するアダプターもご用意していますので、Slackの代わりにLINE公式アカウントやTeamsに通知する仕組みにアレンジするのもよさそうですね。
ASTERIA Warp ではさまざまなシステムやクラウドサービスとのデータ連携や通知の自動化を手軽に実現いただけます。
体験版『手ぶらde ASTERIA Warp』では、サーバーなどの準備不要で、5日間『ASTERIA Warp』を体験できます。ぜひご活用ください!
なお、本記事でご紹介したフローの詳細については、ASTERIA Warp サポートサイト(ADN)の技術情報記事 「でんき予報」の電力使用率をSlack通知するフローを作る もあわせてご参照ください。プロパティに設定した内容など、より詳しく処理内容をご説明しています。
ASTERIA Warpのプロダクトマネージャー。システムエンジニアや情報システム部員としての経験も活かしながら、ASTERIA Warpをわかりやすくお伝えしていきます。
Related Posts
ASTERIA Warp製品の技術情報やTips、また情報交換の場として「ADNフォーラム」をご用意しています。
アステリア製品デベロッパー同士をつなげ、技術情報の共有やちょっとしたの疑問解決の場とすることを目的としたコミュニティです。