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

ちなみに、ご存じない方にもお伝えしておくと、Slackは、チームコミュニケーションとコラボレーションのための人気のあるメッセージングツールです。エンタープライズ企業や自治体での導入も増えています。
MESHは、Sonyが開発した無線でつながるセンサーを簡単につなげてプログラミング言語をしらなくてもアプリが作れるユーザーフレンドリーな製品です。
今回の仕組み

今回の仕組みでは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 現在ではトライアルプラン・エンタープライズプランで利用できます。

こちらでも手順を案内していますが、こちらの記事で詳しく試してみます。
作成手順
Slack API を設定します
2024/01/22 現在の Slack 管理ページの状況で進めます。

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

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

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

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

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

Your Apps に戻って今回作成したアプリを割り当てたワークスペースのドメインを控えておきます。
クラウド実行環境の設定画面でSlackBot I/Fの利用のトグルスイッチをONにします

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

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

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

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

SlackBot I/F を ON にします。

ドメインには先ほどメモしたワークスペースのドメイン。スラッシュコマンドは自由に決めれますが今回は「enebular_test」。Signing Secret には先ほど控えたものを入力します。
また、RequestURL をコピーして控えておきます。
SlackアプリのSlash Commandsページを開き、Create New Commandボタンをクリックします

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

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

Slash Command 作成ページで command と Request URL それぞれにクラウド実行環境設定ページで入力したスラッシュコマンド名と控えた Request URL を入力して保存します。
Slash Command 作成ページのスラッシュコマンド名はクラウド実行環境設定で「enebular_test」の場合は「/enebular_test」と入力します。
Slack へメッセージ投稿できるスコープの追加
ここから Node-REDでSlackへメッセージを投稿する の記事を参考にSlack へメッセージ投稿できるスコープの追加やメッセージ投稿のためのトークンを取得します。

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

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

「Add an OAuth Scope」ボタンをクリックして chat:write スコープを追加します。
Workspace に Slack にアプリを登録してトークンを取得

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

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

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

アプリがインストールされたことも確認しておきましょう。
チャンネルにアプリを追加
今回の Workspace の Bot にしたいチャンネルにアプリを追加しましょう。

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

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

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

追加されました。
Discover Flow からフローをインポート
今回のサンプルはこちらです。

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

インポート出来たらエディタで開いてみます。
obniz と MESH に電源を入れる

obniz は obniz Board を使います。MESH は obniz から制御できるようにするため JavaScript (Node.js) – MESH 技術ドキュメント を参考に、ソフトウェアバージョンを 1.2.5 以上にします。
obniz は初期設定が済み電源を入れて obniz ID から動かせる状態で、MESH もボタンを長押しして電源を ON にしておきましょう。
今回のフローは 1 台 obniz と 1 台の温湿度センサー MESH で試すものです。温湿度センサー MESH が複数台あったり、複数人が同時実行する場合はうまくいかないので注意ください。
ここで、obniz ID を控えておきます。
フローの設定

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

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

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

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

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

Token の部分に先ほど控えた Bot User OAuth Token トークンを入力します。入力できたら更新ボタンをクリックし slack-web-out ノードのプロパティに戻ったら完了ボタンをクリックします。
フローをクラウド実行環境へデプロイする
フローをクラウド実行環境に反映します。
新リリースのenebularクラウド実行環境の使い方 の「フローのデプロイ方法」を参考にクラウド実行環境へのフローのデプロイを行います。
動かしてみる

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

まず Bot が反応します。

しばらく待っていると無事値が取得できました!
この仕組みができると、たとえば、ある施設で obniz と 複数の MESH を仕掛ければ、いろいろな部屋の現在の温度・湿度データが Slack からすぐに見ることができエアコンの効き具合や換気のタイミングを確認できます。
すぐに見ることができエアコンの効き具合や換気のタイミングを確認できます。
まとめ
今回は、enebularを使って、IoTボードのobnizやMESHのセンサーを使ってSlackに通知するIoTアプリを簡単に作ることができました。
また、ウフルではIoTアプリケーションの構築の他に、企業や自治体向けにSlackの導入支援やSlackを使った自動化のご支援など幅広く御提案しています。ご興味のある方は、ぜひお問い合わせください。