[3日目] cloudissをPCから制御する

umahashiyusuke umahashiyusuke

TechBlogをご覧のみなさん、こんばんは。電気回路担当の馬橋です。アドベントカレンダーの3日目は、先日発表しましたcloudissについてです。基本的にiPhoneの専用アプリから操作するものですが、この記事では任意の端末から制御できる一例を紹介します。

cloudissに接続する

cloudissはBluetooth Low Energyでのみ接続されます。よって、Bluetooth接続ができ、インターネットにも接続するものが必要になります。今回の例では、この部分をNode.jsを使って、Mac上に用意しました。nobleというBLEを非常に扱いやすくするライブラリが作成されていること、expressでAPI風のサーバを書きやすいこと、何より筆者が書き慣れていることがNode.jsの選定理由です。専用アプリと同じ通信手順を踏むと、Node.jsで記述したコードとcloudissがひもづき、制御が可能になります。expressでパスに応じた操作を記述すれば、cloudissを制御するサーバができあがります。

インターネットから何らかのトリガーを受け取ってcloudissを鳴らすとなると、他サービスのWebサーバからのリクエストを受け取り、それをcloudissのいるローカルの環境まで持ってくる必要があります。IFTTTと自作ハードウェアを連携する場合でも苦労していることが多いようで、特に下記記事が参考になりました。

http://www.sitepoint.com/connecting-the-iot-and-node-js-to-ifttt/
http://www.sitepoint.com/accessing-localhost-from-anywhere/

上記記事では、ngrokというWebサービスを利用し、動的に生成されたサブドメインへのアクセスを全てローカルにトンネリングする方法を紹介しています。セキュリティが若干心配ですが、短時間のデモや実験程度ならいいかなと思い、これを使ってインターネットとローカル環境とつなぐこととしました。

Hackeyと連携する

利用例のひとつとして、弊社製品のHackeyからcloudissを制御する例をつくりました。Hackeyで鍵を回す向きによって、cloudissのアラームをON/OFFしています。

Hackeyは鍵のON/OFFやLED点灯制御を、常に専用サーバと通信しています。専用サーバが鍵が回ったことを通知するその先に、上記のngrokのアドレスを指定します。信号の流れを図にすると、次のようになります。

Hackey-cloudiss

動作している様子を、動画でもどうぞ。

さいごに

cloudissの通信仕様と動作例のコードは、近日中に公開できればと考えています。Hackey連携では、Hackeyとcloudissが同じ部屋にいる必要はないので、たとえば予定の時間に相手から「起きた」という連絡がない限り鍵をひねって鳴らし続けるといった活用が考えられます。必要となった瞬間に確実に鳴らす信頼性を検討する課題はありますが、大音量で通知するデバイスですので何らかの異常時に音で知らせる機能にも利用できればと考えています。