【アプリ版】 スリープ機能搭載 obniz Board 1Yを使った省電力な開閉検知デバイス (slack連携)
コンテンツ
今回やること
obniz Board 1Y(ワンワイ)にはスリープ機能が追加されました。この機能を使うことで電池で1年稼働するようなデバイスをつくれます。
今回は、スリープ機能を活用して、磁石スイッチでドアの開閉を検知したら、obnizはスリープから解除/起動。そしてSlackにメッセージを送信し、その後再度スリープを行います。
この記事では、obnizのアプリ(App)として作成する方法をご紹介します。
obnizのアプリは、作成したアプリを公開し、他のユーザーに配布することができます。アプリについて詳しくは ドキュメント をご覧ください。
用意するもの
- obniz Board 1Y
- Grove CT10 (磁石スイッチ) : [スイッチサイエンス]
- obniz Grove コネクタ : [BOOTH]
- または、Grove 4ピンコネクタ-ジャンパーピン変換ケーブル: [千石電商]
- 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」をクリックします。
上図は、作ほど作成したアプリの画面になります。
いろいろ設定できるようですが、今回はWebhookを使うので画面中央にある「Incomming 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公式デバイスを使う」をクリックします。 あとは画面の指示にしたがって登録してください。
▼
アプリを作ろう
プログラムを動かすアプリを作ります。作ったアプリは配布可能で、各デバイスにインストールして実行することができます(詳しくは アプリ – obniz Docs をご覧ください)。
アプリを自分で作らずにまず実行してみたい方は、すでに作成済みの以下のアプリをインストールして動かしてみましょう。
→ 省電力開閉検知
インストール方法は、アプリのインストール – obniz Docs や次節の アプリをデバイスにインストールする をご覧ください。
obnizのコンソールに移動し、「アプリ開発」→「新規作成」を押します。
「obniz Board/1Yを使うテンプレート」から Empty を選び、出てきたウィンドウにアプリ名を入力します。そして、「アプリを作成」を押しましょう。
「アプリを作成」を押して出てきた画面を少しスクロールして、アプリ設定を編集します。
今回はobniz Board 1Yのスリープ機能を使って、デバイスがオンラインになるたびにクラウドでプログラムを実行したいので、「デバイスがオンライン時に実行」にチェックを入れます。
また、アプリをインストールして実行する際に、個別にSlackのWebhook URLを設定できるように、「インストール時設定」を以下のように設定します。
スクロールして少し上に戻り、「プログラムを編集」からプログラム編集画面に入ります。プログラム編集画面に入ったら、下の 完成したプログラム の節にある省電力開閉検知のリンク先のプログラムを貼り付けて保存しましょう。保存できたらアプリは完成です。
アプリをデバイスにインストールする
作成したアプリをデバイスにインストールします。コンソールのアプリ開発の画面に移動し、「インストール」を押します。
すると、インストールするデバイスを選択する画面に移動するので、プログラムを動かしたいobniz Board 1Yを選択します。また、Slackの設定をする の節で控えておいたWebhook URLを入力します。
このとき入力したURLが、以下のようにプログラム冒頭部分で、 Obniz.App.configs().SlackWebhookURL
として取り出されています。
const config = Obniz.App.configs(); const SLACK_WEBHOOK_URL = config.SlackWebhookURL;
最後に「インストール」を押せば完了です。このアプリは磁石センサが反応してデバイスがオンラインになったら自動的にクラウド実行されるため、電源を繋げば自動的に実行されます。
完成したプログラム
作成済みのアプリ 省電力開閉検知 のプログラムをご覧ください。
動かす
開閉を検知したいものに磁石と磁石スイッチを近くに置いた状態でセットします。その状態でスリープさせます。
磁石と磁石スイッチを離すとobnizが起動します。起動すると、obnizからSlackにメッセージが送信されます。
現状(2020年11月)アプリのクラウド実行は150回/日が上限なのでそこは注意してください。
クラウドできちんと実行されたかどうかは、コンソールから確認できます。デバイスがオンラインになったあと、「デバイス」の画面でアプリステータスが以下のように緑になっていれば成功です。