##myThingsでできること
myThingsは、Yahoo JAPANが開発したWebサービスやガジェットの機能を組み合わせて利用ができるサービスです。
一般には特集というかたちで、組み合わせのおすすめが毎月配信され、これを選ぶことが多いですが、自分で組み合わせをつくることも可能です。
組み合わせの単位は、チャンネルという単位で定義され、myThingsアプリ上で組み合わせを行うことができます。
チャンネルの種類と内容については、こちらのサイトが詳しく説明をしています。
チャンネルには動作を実行する条件になるトリガーと、トリガーが発生した場合に実行されるアクションになるものがあります。
トリガーとアクションをmyThingsアプリで設定することで、組み合わせが実行されます。
トリガーの条件を満たした状態でアクションが実行されることを、発火と表現していることがあります。
また、アクションは複数選択することが可能です。
組み合わせの実行タイミングは、現在のところ、”15分単位”で行うか”曜日と時刻の指定”で行うことができます。
逆に言うと、トリガーが発生してすぐにアクションを発生させるような、”リアルタイム”な処理はできません。
検証やデモ用に、手動実行という機能があり、myThingsアプリから強制的にトリガーを実施することができます。
##IDCFチャンネルでできること
myThingsでは、自作のデバイスをIDCFチャンネルとして他のチャンネルと組み合わせすることができます。
自作のデバイスにセンサーやモーター、LEDなどを接続することで、センサー情報をもとに他チャンネルでアクションを実行したり、他チャンネルのトリガーをもとにモーターを駆動させたり、LEDを点灯させたりすることができます。
現在のところ、IDCFチャンネルをトリガーにした場合、他チャンネルへは発火の通知だけ行え、デバイスのデータをmyThingsサーバに渡すことはできません。
IDCFチャンネルをアクションにした場合、トリガーを設定したチャンネルから所定のデータを受け取ることはできます。(例えばある場所の天気情報や画像のURLなど)
##IDCFチャンネルの概要
自作デバイスとmyThingsの連携ですが、実際には以下のような構成になっています。自作デバイスとのやりとりは、いったんIDCFチャンネルサーバがうけて、IDCFチャンネルサーバがmyThingsサーバとのやりとりをおこないます。
myThingsアプリをつかって、myThingsサーバからIDCFチャンネルサーバの認証をとることになります。
myThingsと自作デバイスを連携させるには、電子工作、サーバ構築、プログラムなどの知識が必要になります。
なるべく簡単にmyThingsを楽しめるよう、"myThingsをはじめようキット"があるので、こちらを前提にmasatoさんが情報をまとめてくれています。
順をおってやることで、気温が一定の高さになったときに、指定した宛先にメール通知がいく仕組みをつくることができます。
IDCFチャンネルサーバは、meshblu-composeという環境をインストールし構築します。
meshblu-composeは、meshbluというオープンソースソフトウェアを中心にdocker上で構成されています。
docker-composeという仕組みをつかい、サーバ上でインストールするだけで、IDCFチャンネルサーバを構成できます。
##実際に使ってみる
普段電子工作やサーバをやっているわけではない人を前提に、各パートで何をやっているのかを書いてみました。
Part1
Raspberry Piでの電子工作のパートです。
Raspberry Piのセットアップとして、OSのアップデートやWifiへの接続などを行います。環境はmac osからUSB経由でシリアルコンソールからRaspberry Piの設定を行っています。
その後、Lチカと温湿度気圧センサーからのデータ取得をやっています。
Part2
サーバ構築のパートです。
IDCFクラウド上でIDCFチャンネルサーバの構築をします。
IDCFクラウドのサインアップ方法は記載していないので、よくわからない方はこちらを参考にしてみてください。
内容は、IDCFクラウドサービスにSignUpし、サーバを構築、myThingsサーバや自作デバイスと通信するためのネットワークの設定をします。
その後、IDCFチャンネルサーバをたてるため、meshblu-composeをインストールします。
meshblu-composeの中の話は、サーバ系の方には気になる内容なので、別途投稿したいとおもいます。
Part4
IDCFチャンネルサーバのmyThingsへの認証を行います。
Part6
温湿度気圧センサーで取得したデータをもとに、気温が27度以上になったら、メールで通知する組み合わせをつくります。
おもにRaspberry Pi上でのプログラムの実行とmyThingsアプリでの組み合わせの設定になります。
Raspberry PiでPythonのサンプルプログラムを実行し、気温が27度以上になったさいに、IDCFチャンネルサーバにhttpで通知します。
通知をもとにトリガーが発行され、指定のメールアドレスにメールが送信されるよう、myThingsアプリで組み合わせの設定を行います。
##質問や参考情報
meshblu-composeは、オープンソースソフトウェアです。
githubやFacebookを通じて情報のやりとりをしています。
質問はgithub上でissueをあげるか、Facebookの公開ページを使うことをおすすめします。
また、関連情報がqiita上にあがっています、ぜひ参考にしてみてください。
##用語集
myThingsアプリ : Yahoo! JAPANから提供されているmyThingsのスマホアプリ
myThingsサーバ : Yahoo! JAPANで運営しているmyThingsのシステム 実際の組み合わせの処理や認証が行われている
チャンネル: myThingsで組み合わせができる、Webサービスやガジェットのこと
トリガー: 組み合わせ動作が実行されるための条件のこと
アクション: トリガーが発動されたばあいに、実行される内容のこと
発火: アクションが実行されること、トリガーの条件を満たすこと
IDCFチャンネルサーバ: メッセージブローカー、自作デバイスや他チャンネルからの情報の仲介や蓄積をしている