節電の夏!「でんき予報」をSlack通知で受け取る方法

節電の夏!でんき予報をSlack通知してみた

こんにちは!アステリアのショウジです。

今年は多くの地域で異例の早さでの梅雨明けとなり、6月末から暑い日が続いています。
熱中症にならないよう、水分・塩分の補給やエアコンの適切な利用が必要ですが、電力の需給状況も気になりますね。

そこで今回は、「電力使用率が基準値を超えていたら節電を促すメッセージをSlackに投稿するフロー」をつくってみました!

電力使用率の実績値は、東京電力パワーグリッド株式会社様から公開されている「でんき予報」の電力使用状況データ(CSVデータ)を利用しています。

処理全体の流れ

処理の流れは、以下のようにしました。

  1. でんき予報のサイトからCSVデータを取得する
  2. そのCSVデータから、最新の実績値が入った1行を抽出する
  3. 抽出したデータを使って、Slackに投稿するメッセージを生成する
  4. Slackに投稿する

Slack側の設定

あらかじめSlack側でAppを作成しておく必要があります。
今回は、「でんき予報bot」という名前でAppを作成しました。

ポイントは「スコープ」の設定です。スコープには「chat:write」「files:write」の2つの設定を入れておく必要があります。前者はテキストメッセージの投稿のため、後者は画像の投稿のために必要です。

Scopes

このあとの手順(ASTERIA Warp側のコネクション設定)で必要になるので、OAuth & Permissions のページにある Bot User OAuth Token の内容をコピーしておきます。

ASTERIA Warp側の設定

ASTERIA Warp側は、以下のような設定を実施しました。

コネクションの設定

フローを作る前に、Slackと接続するためのコネクションを作成しました。
「APIトークン」にはSlack側の Bot User OAuth Token の内容を、「チャンネル」には投稿先のチャンネル名「#東京電力でんき予報」を設定しました。

作成したフロー

フローはこのような内容になりました。
どのコンポーネントでどんな処理をしているのかは、フローの中に書かれている説明の通りですが…これだけだとちょっとわかりにくいですよね。
なので、このあともう少し解説したいと思います。

でんき予報サイトからCSVデータを取得

でんき予報サイトからCSVデータを取得する処理

最初にCSVデータを取得します。これは、HTTPGetコンポーネントでCSVデータのURLを指定するだけで実現できました。

CSVデータの中から必要なデータを取得する処理

これは、CSVデータの中身が若干複雑でしたので、以下のステップ①②③に分けて実現しました。

データレイアウトデータレイアウト

フローでは、以下の部分でこの処理を実現しています。
なお、最初のHTTPGetコンポーネントは、CSV取得と「15行目からデータを取得する」という処理を兼ね備えた形になっています。

でんき予報サイトからCSVデータを取得、対象レコードまで読み飛ばす

実は、この部分では4種類の方法を組み合わせてデータをフィルタリングしています。
詳しくは別の記事でご案内していますので、ご興味あるかたは、この記事の最後にあるリンクからご参照ください!

メッセージを生成する処理

これは、マッパーの中で処理を作りました。
CSVから取得した値をembed関数に差し込んで、メッセージのテキストを生成する仕組みです。

CSVから取得した値をembed関数に差し込んで、メッセージのテキストを生成

Slackへ投稿する処理

今回作ったフローは、Slackへのテキストの投稿に加えて、電力使用率が基準値を超えていたときは「節電のお願い」を画像でも投稿するという仕組みにしました。

これを実現するためにSlackアダプターを使ったのですが、Slackアダプターには2種類のコンポーネントがあり、以下のような仕様になっています。

  • SlackPostコンポーネント:テキストのみの投稿が可能
  • SlackUploadコンポーネント:テキストと画像の両方を含む投稿が可能(画像ファイルの指定が必須)

SlackUploadコンポーネントでの画像ファイルの指定が必須なので、画像が不要な場合にはSlackPostコンポーネントを使う必要があります。そのため今回のフローでは、基準値を超えているか(=画像が必要か不要か)を判定して処理を分岐させました。

基準値を超えているか判定

スケジュール設定

サーバ負荷にも配慮して1時間に1回だけ動作するように設定しました。また、夜間は電力使用率が下がるので、8時~20時までの間だけ動くように設定しました。

フローの実行結果

フローを実行すると、このようにSlackに投稿されました!
このタイミングでは、電力使用率が93%だったので画像つきで投稿されていますね。見た目にもわかりやすくて良い感じです!

でんき予報bot

最後に

今回、Web上からのデータ取得・加工・Slack通知までの流れを、ASTERIA Warp で簡単に実現することができました!

ちなみに、ASTERIA Warpでは「LINE公式アカウント(旧LINE@)」や「Teams」と連携するアダプターもご用意していますので、Slackの代わりにLINE公式アカウントやTeamsに通知する仕組みにアレンジするのもよさそうですね。

ASTERIA Warp ではさまざまなシステムやクラウドサービスとのデータ連携や通知の自動化を手軽に実現いただけます。

体験版『手ぶらde ASTERIA Warp』では、サーバーなどの準備不要で、5日間『ASTERIA Warp』を体験できます。ぜひご活用ください!

なお、本記事でご紹介したフローの詳細については、ASTERIA Warp サポートサイト(ADN)の技術情報記事 「でんき予報」の電力使用率をSlack通知するフローを作る もあわせてご参照ください。プロパティに設定した内容など、より詳しく処理内容をご説明しています。



クラウド版

手ぶら de ASTERIA Warp
体験 5日間を申し込んで
「Slackアダプター」を試そう

サーバー準備の手間なくデータ連携ツール「ASTERIA Warp」の
全ての機能を5日間お試しいただけます。

今すぐ体験してみる 書籍の詳細についてはこちらをご覧ください。
基礎と実践 使い方マニュアル
著者:東海林 賢史

著者:
東海林 賢史

ASTERIA Warpのプリセールスエンジニア。システムエンジニアや情報システム部員としての経験を活かして、ASTERIA Warpをわかりやすくお伝えできるよう日々奮闘中です。

ASTERIA Warp 関連サイトのご紹介

X ASTERIA Warp Developer Network(ADN)サイト

技術情報をお探しの方

ASTERIA Warp Developer Network
(ADN)サイト

ASTERIA Warp製品の技術情報やTips、また情報交換の場として「ADNフォーラム」をご用意しています。

X ASTERIA Warpユーザーグループ(AUG)

ASTERIA Warpデベロッパーの方

ASTERIA Warp オンラインコミュニティ
ADN slack

ASTERIA Warpデベロッパー同士をつなげ、技術情報の共有やちょっとしたASTERIA Warpの疑問解決の場とすることを目的としたコミュニティです。

X ASTERIA Warpユーザーサイト

ASTERIA Warpユーザーの方

ASTERIA Warpユーザーサイト
Login

製品更新版や評価版のダウンロード、各種ドキュメントのご提供、また 技術的なお問合せもこちらで受付ています。

X ASTERIA Warpパートナーサイト

ASTERIA Warpパートナーの方

ASTERIA Warpパートナーサイト
Login

パートナーライセンスの発行や各種ドキュメントのご提供をしています。

ページ先頭へ