enebularでセンサーデータを使ったSlackボットをつくろう

今回は、enebularでセンサーデータを使ったSlackアプリをつくります。

どんなアプリかというと、MESHの温湿度センサーからデータを取得して、enebular の クラウド実行環境にある Slack 連携機能を使ってボットをつくってみます。

完成イメージ

ちなみに、ご存じない方にもお伝えしておくと、Slackは、チームコミュニケーションとコラボレーションのための人気のあるメッセージングツールです。エンタープライズ企業や自治体での導入も増えています。

MESHは、Sonyが開発した無線でつながるセンサーを簡単につなげてプログラミング言語をしらなくてもアプリが作れるユーザーフレンドリーな製品です。

今回の仕組み

enebular-lcdp-slack-bot-with-obniz-and-mesh_29.png

今回の仕組みではMESHが提供するいくつかのセンサーのうち温湿度センサーを使います。obnizというbluetooth接続ができるIoTボードを使うことで全体のデータの流れを実現します。

具体的には、Slack からコマンド指示をすると enebular のクラウド実行環境が反応して obniz に接続します。

obniz につながると obniz から温湿度センサー MESH に温度と湿度を問い合わせて結果を Slack に返答します。

なお、今回のフローは 1 台 obniz と 1 台の温湿度センサー MESH で試すものです。温湿度センサー MESH が複数台あったり、複数人が同時実行する場合はうまくいかないので注意ください。

SlackBot I/F という Slack 連携機能

https://docs.enebular.com/ja/releases/enebular/2.40.0

SlackBot I/F という Slack 連携機能 が enebular 2.40.0 でリリースされました。ドキュメントにあるように、2024/01/31 現在ではトライアルプラン・エンタープライズプランで利用できます。

enebular-lcdp-slack-bot-with-obniz-and-mesh_09.png

こちらでも手順を案内していますが、こちらの記事で詳しく試してみます。

作成手順

Slack API を設定します

2024/01/22 現在の Slack 管理ページの状況で進めます。

enebular-lcdp-slack-bot-with-obniz-and-mesh_18.png

Slack の API ページ https://api.slack.com/ から右上の Create New App ボタンをクリックします。

enebular-lcdp-slack-bot-with-obniz-and-mesh_10.png

Create an app では From scratch をクリックします。

enebular-lcdp-slack-bot-with-obniz-and-mesh_39.png

App name に enebular-test を入力。使いたい Slack ワークスペースを選択して Create App をクリックします。

enebular-lcdp-slack-bot-with-obniz-and-mesh_32.png

アプリが作成されました。

enebular-lcdp-slack-bot-with-obniz-and-mesh_14.png

App Credentials までスクロールして Signing Secret を控えておきます。

enebular-lcdp-slack-bot-with-obniz-and-mesh_24.png

Your Apps に戻って今回作成したアプリを割り当てたワークスペースのドメインを控えておきます。

クラウド実行環境の設定画面でSlackBot I/Fの利用のトグルスイッチをONにします

enebular-lcdp-slack-bot-with-obniz-and-mesh_16.png

今回のプロジェクトページにあるクラウド実行環境のページに行きます。

enebular-lcdp-slack-bot-with-obniz-and-mesh_21.png

クラウド実行環境を作成します。

enebular-lcdp-slack-bot-with-obniz-and-mesh_07.png

クラウド実行環境を作成しました。

enebular-lcdp-slack-bot-with-obniz-and-mesh_06.png

設定画面に移動して編集ボタンをクリックして SlackBot I/F を確認します。

enebular-lcdp-slack-bot-with-obniz-and-mesh_37.png

SlackBot I/F を ON にします。

enebular-lcdp-slack-bot-with-obniz-and-mesh_35.png

ドメインには先ほどメモしたワークスペースのドメイン。スラッシュコマンドは自由に決めれますが今回は「enebular_test」。Signing Secret には先ほど控えたものを入力します。

また、RequestURL をコピーして控えておきます。

SlackアプリのSlash Commandsページを開き、Create New Commandボタンをクリックします

enebular-lcdp-slack-bot-with-obniz-and-mesh_34.png

Slackアプリで今回の Slack アプリの Slash Commands ページを開きます。

enebular-lcdp-slack-bot-with-obniz-and-mesh_01.png

Create New Commandボタンをクリックします。

enebular-lcdp-slack-bot-with-obniz-and-mesh_40.png

Slash Command 作成ページで command と Request URL それぞれにクラウド実行環境設定ページで入力したスラッシュコマンド名と控えた Request URL を入力して保存します。

Slash Command 作成ページのスラッシュコマンド名はクラウド実行環境設定で「enebular_test」の場合は「/enebular_test」と入力します。

Slack へメッセージ投稿できるスコープの追加

ここから Node-REDでSlackへメッセージを投稿する の記事を参考にSlack へメッセージ投稿できるスコープの追加やメッセージ投稿のためのトークンを取得します。

enebular-lcdp-slack-bot-with-obniz-and-mesh_20.png

メニューの「OAuth & Permissions」を選択します。

enebular-lcdp-slack-bot-with-obniz-and-mesh_25.png

下にスクロールして Scopes の Bot Token Scopes に移動します。

enebular-lcdp-slack-bot-with-obniz-and-mesh_11.png

「Add an OAuth Scope」ボタンをクリックして chat:write スコープを追加します。

Workspace に Slack にアプリを登録してトークンを取得

enebular-lcdp-slack-bot-with-obniz-and-mesh_00.png

メニューの Install App を選択して Install to Workspace ボタンをクリックします。

enebular-lcdp-slack-bot-with-obniz-and-mesh_26.png

許可ボタンをクリックします。

enebular-lcdp-slack-bot-with-obniz-and-mesh_36.png

Slackアプリの Bot User OAuth Token トークンが生成されるので Copy ボタンをクリックしてトークンを手元にコピーしましょう。

enebular-lcdp-slack-bot-with-obniz-and-mesh_05.png

アプリがインストールされたことも確認しておきましょう。

チャンネルにアプリを追加

今回の Workspace の Bot にしたいチャンネルにアプリを追加しましょう。

enebular-lcdp-slack-bot-with-obniz-and-mesh_22.png

チャンネル bottest で右クリックして、チャンネル詳細を開くを表示します。

enebular-lcdp-slack-bot-with-obniz-and-mesh_38.png

インテグレーションのタブを選択して、アプリを追加するボタンをクリックします。

enebular-lcdp-slack-bot-with-obniz-and-mesh_23.png

アプリを追加画面に移動するので enebular-test の右側の追加ボタンをクリックします。

enebular-lcdp-slack-bot-with-obniz-and-mesh_27.png

追加されました。

Discover Flow からフローをインポート

今回のサンプルはこちらです。

slack-mesh-th-sample-flow

enebular-lcdp-slack-bot-with-obniz-and-mesh_12.png

こちらをインポートボタンをクリックしてして、インポートしたいプロジェクトを選択してインポートします。

enebular-lcdp-slack-bot-with-obniz-and-mesh_02.png

インポート出来たらエディタで開いてみます。

obniz と MESH に電源を入れる

enebular-lcdp-slack-bot-with-obniz-and-mesh_33.jpg

obniz は obniz Board を使います。MESH は obniz から制御できるようにするため JavaScript (Node.js) – MESH 技術ドキュメント を参考に、ソフトウェアバージョンを 1.2.5 以上にします。

obniz は初期設定が済み電源を入れて obniz ID から動かせる状態で、MESH もボタンを長押しして電源を ON にしておきましょう。

今回のフローは 1 台 obniz と 1 台の温湿度センサー MESH で試すものです。温湿度センサー MESH が複数台あったり、複数人が同時実行する場合はうまくいかないので注意ください。

ここで、obniz ID を控えておきます。

フローの設定

enebular-lcdp-slack-bot-with-obniz-and-mesh_08.png

obniz function ノードをダブルクリックしてプロパティを表示します。

enebular-lcdp-slack-bot-with-obniz-and-mesh_19.png

obniz の欄で 0000-0000 のダミーの obniz ID の設定になっているので鉛筆ボタンをクリックして編集します。

enebular-lcdp-slack-bot-with-obniz-and-mesh_30.png

0000-0000 とある obniz ID の部分を、さきほど控えた自分の obniz ID に入力します。入力できたら更新ボタンをクリックし obniz function ノードのプロパティに戻ったら完了ボタンをクリックします。

enebular-lcdp-slack-bot-with-obniz-and-mesh_15.png

slack-web-out ノードをダブルクリックしてプロパティを表示します。

enebular-lcdp-slack-bot-with-obniz-and-mesh_13.png

Slack Client が my token が選択されていることを確認して鉛筆ボタンをクリックして編集します。

enebular-lcdp-slack-bot-with-obniz-and-mesh_04.png

Token の部分に先ほど控えた Bot User OAuth Token トークンを入力します。入力できたら更新ボタンをクリックし slack-web-out ノードのプロパティに戻ったら完了ボタンをクリックします。

フローをクラウド実行環境へデプロイする

フローをクラウド実行環境に反映します。

新リリースのenebularクラウド実行環境の使い方 の「フローのデプロイ方法」を参考にクラウド実行環境へのフローのデプロイを行います。

動かしてみる

enebular-lcdp-slack-bot-with-obniz-and-mesh_03.png

/enebular_test コマンドを入力して投稿ボタンをクリックします。

enebular-lcdp-slack-bot-with-obniz-and-mesh_31.png

まず Bot が反応します。

enebular-lcdp-slack-bot-with-obniz-and-mesh_28.png

しばらく待っていると無事値が取得できました!

この仕組みができると、たとえば、ある施設で obniz と 複数の MESH を仕掛ければ、いろいろな部屋の現在の温度・湿度データが Slack からすぐに見ることができエアコンの効き具合や換気のタイミングを確認できます。

すぐに見ることができエアコンの効き具合や換気のタイミングを確認できます。

まとめ

今回は、enebularを使って、IoTボードのobnizやMESHのセンサーを使ってSlackに通知するIoTアプリを簡単に作ることができました。

また、ウフルではIoTアプリケーションの構築の他に、企業や自治体向けにSlackの導入支援やSlackを使った自動化のご支援など幅広く御提案しています。ご興味のある方は、ぜひお問い合わせください。