スリープ機能搭載 obniz board 1Y を使った省電力な開閉検知デバイス(slack連携)

今回やること

obniz Board 1Y(ワンワイ)にはスリープ機能が追加されました。この機能を使うことで電池で1年稼働するようなデバイスをつくれます。

今回は、磁石スイッチを使ったドアや冷蔵庫の開閉情報取得を、スリープ機能を活用して作成していきます。

磁石スイッチでドアの開閉を検知したら、obnizはスリープから解除され起動します。そして、起動したらSlackにメッセージを送信し、その後再度スリープを行う仕組みです。

用意するもの

組み立て方

次の表のようにobnizと磁石スイッチを接続します。

obniz Grove
0 SIG
GND GND
+ VCC

今回はobniz Groveコネクタを使用しているので簡単にGroveの磁石スイッチを接続できます。

[参考 ※Groveコネクタを使用しない場合] obniz パーツライブラリ(CT10)

プログラム

Slackの設定をする

Slackのアカウントは事前に作成してください。
https://api.slack.com/apps からSlackにメッセージを送信する設定をしていきます。

1) appの新規作成

slack apiの管理画面より、Your Appsの右端にある「Create New App」をクリックします。

 

2) Create a Slack App

「Create a Slack App」というダイアログが表示されるのでそこに必要な情報を入力します。

  • App Name: お好みで(今回はobniz_event)
  • Development Slack Workspace: メッセージを送信したいワークスペースを選択します

入力が完了したら、「Create App」をクリックします。

上図は、先ほど作成したアプリの画面になります。

いろいろ設定できるようですが、今回はWebhooksを使うので画面中央付近にある「Incoming Webhooks」をクリックします。

 

3) Webhooksの設定

Incoming Webhooksのページに移動します。

タイトルの下にある「Activate Incoming Webhooks」の右側にあるOFFになっている部分をクリックします。

クリックするとOFFのところがONに切り替わります。
そして「Webhooks URLs for Your Workspace」が表示されます。

そのまま下にスクロールすると「Add New Webhook to Workspace」というボタンがあるのでクリックします。

 

4) チャンネルの設定

どこにメッセージを送信したいか選択します。個人のチャンネル、またはグループのチャンネルに送信できます。

今回はsandboxというチャンネルを投稿先に設定しました。

5) Webhook URLのコピー

「Copy」をクリックすると今回使用するWebhooksのURLをコピーできます。
のちほどプログラムのところで使用します。

obniz Boardを登録しよう

obnizの開発者コンソールに移動し、「デバイス」 → 「デバイスを追加」をクリックします。

ダイアログが開いたら、「obniz公式デバイスを使う」をクリックします。 あとは画面の指示にしたがって登録してください。

プログラムを書こう

サーバレスイベントで使うため、プログラムをリポジトリにいれます。コンソールのメニューより「リポジトリ」 → 「新規作成」を行います。

ダイアログが表示されるので、次のように設定します。

  • タイプ : WebApp
  • アクセスレベル : 非公開
  • ファイル名 : お好みで(今回はsleep_sw)

設定できたら、「作成」をクリックします。
プログラムの入力画面がでるので、完成したプログラムに置き換えます。

以下の2箇所を修正します。

  • “`YOUR Slack Webhooks“`をslackで取得したWebhook URLに変更
  • “`OBNIZ_ID_HERE“`をobniz Boardに表示されているIDに変更

slackに通知されるメッセージの内容は、33行目(body: JSON.stringify())で設定できます。

プログラムができたら左上にマウスを合わせると「保存」がでてくるので「保存」をクリックします。

サーバーレスイベントを設定する

サーバーレスイベントとは、本当はそれぞれが必要になるサーバーを用意しなくても簡単にobnizを使える機能です。

obnizのコンソールから「サーバーレスイベント」 → 「新規作成」をクリックします。設定項目が複数出てきますが、順に設定していきましょう。

  • 名前 : お好みで(今回はSleepSwEvent)
  • 実行するWebApp : 先ほど保存したプログラム名
  • きっかけ : obniz Hardware Event
  • obniz : 今回温度測定したいobnizのID
  • Event : online

設定できたら、「作成」をクリックしましょう!これで準備は完了です。

動かす

開閉を検知したいものに磁石と磁石スイッチを近くに置いた状態でセットします。その状態でスリープさせます。

磁石と磁石スイッチを離すとobnizが起動します。起動すると、obnizからSlackにメッセージが送信されます。

現状(2020年11月)サーバレスイベントは150回/日が上限なのでそこは注意してください。

完成したプログラム

おわりに

入力をトリガーにobnizが起動するようにできました。入力がない間は省電力で長期間電池で動かせるので、ぜひ試してみてください。

ぜひobniz Board 1Yを使って作品を作ってみてはいかがでしょうか!
obniz Board 1Yは、2019年12月17日発売予定です!