はじめに
弊社ではcloudissという大音量の目覚ましアラームを製造・販売しております。目覚まし、というコンセプトでの製品ではありますが、発売後の社内からは「遠方にいる通知をなかなか見ない人などに、ポケベルのように鳴る機能がほしい」という声がちらほら聞こえました。実際、展示会等でアメリカにいる宣伝チームからの相談を、東京にいる開発チームに伝える場面で使えるといいねという話も聞いています。アメリカの昼は日本の夜なので、現地で問題がない限り東京の開発チームはできれば寝ていたいわけです。
上記以外にも、音量が大きめなので、気付いてほしいちょっとした通知に使えるかもしれません。昨年末のアドベントカレンダーに投稿した内容を利用し、簡易ではありますが、そのような場面にも使えるような仕組みを考えました。Yahoo! JAPANのmyThingsをトリガーとしてcloudissのブザーを鳴らします。
準備
用意するもの
- cloudiss
- Intel Edison
- Yahoo! JAPANのアカウント (myThingsの利用のため)
- IDCFクラウドのアカウント (myThingsトリガーの受け皿のため)
通信のおおまかな流れは下記の図を参照ください。トリガーが発生するとmyThingsサーバが反応し、IDCFクラウドの仮想マシンに通知します。仮想マシンはcloudissのそばにいるEdisonと接続しているので、トリガーに合わせたアクションを実施するようEdisonに知らせます。Edisonはその通知によってBLE通信を行い、cloudissを鳴らす、という仕組みです。
cloudissは基本的にあらかじめ鳴動時刻を設定して使うものですが、今回はトリガーを受けたらすぐに鳴ってほしいのでブザー音確認モードで代用します。
IDCFクラウド
myThingsのトリガーの受け皿として、IDCFクラウドの仮想マシンを使用します。IDCフロンティアさんの用意している手順書に従って、仮想マシンを用意します。
Edison
IDCFクラウドの待ち受けとBLEの通信を、Node.jsを使って行います。cloudissはBLEのみの通信なので、インターネットに直接接続し通信することはできません。インターネットとBLEとの橋渡しとして、Edisonに待機してもらいます。
Edisonは各種Linuxディストリビューションがありますが、いずれもNode.jsはバージョンがかなり古いので、ndenvを使って新しいバージョンを利用できるようにします。ndenvの設定まではQiitaのこの記事を参照ください。
Edisonは”x86で動くLinux”にあたるので、Node.jsが配布しているビルド済みバイナリがなんとそのまま動きます。便利ですね。
Node.jsのコード部分はGitHubを参照ください。BLE対応でnobleが、IDCFクラウドとの通信でMeshbluがそれぞれ動いています。cloudissのサービス・キャラクタリスティックの詳細は、近日中に公開をできればと考えております。
myThingsのトリガー
myThingsに登録されているものならなんでもトリガーになります。この記事では、せっかくなので弊社の製品Hackeyを使います。Hackeyにささっているカギをひねると、cloudissのブザーが鳴ります。
動作
この場合は、Hackeyのカギをひねったあとおおよそ1分後にブザーが鳴ります。インターネット経由なので若干の遅れはありますが、実用の範囲内ではないでしょうか。
最後に
今回の例ではトリガーにHackeyを使用しましたが、myThingsはいろいろなWebサービスをトリガーにできます。connpassならイベントがあったら強くブザーを鳴らしてできるだけ早く参加枠を確保するとか、ヤフオク!なら特定のキーワードを含む商品の出品があったときとか、人に知らせて動く必要があるタイミングでの通知に使えそうです。
myThingsの15分に1回ルール
IDCFクラウドに限らず、myThingsのトリガーは指定した時間または15分おきの動作となります。時間指定を行った場合はその時間までに、未指定の場合は15分おきにトリガーとなる動作が起こったかどうかを確認し、起こっていれば対応したアクションを実施します。つまり、時間未指定の場合は、トリガーの発生したタイミングによってはアクションの実施まで15分弱の間隔が空くことになります。
myThingsのチャンネル一覧とトリガーを見るに、リアルタイムを要求されそうなものはそれほど多くないと感じました。位置情報トリガーは、移動中にひっかかった場合、というよりは自宅や職場などの(移動していない)落ち着いた場所で使うためのものと読めます。リアルタイムで急ぐよりも、そこそこの頻度で確実にとりこぼしなく実行するための設計、そしてこのちょっと便利になる仕組みでかえって急かされることのないようにYahoo! JAPANは考えているのだろうと思いました。