MESHソフトウェアタグとmyThingsでクリスマスを演出してみる

この記事は[myThings Advent Calendar](http://qiita.com/advent-calendar/2015/mythings) 13日目の記事です。

ブロック形状の電子タグの[MESH](http://meshprj.com/jp/)。まだmyThingsにつながっていないので、ソフトウェアタグを使っていろいろ試しています。Advent Calenderへのエントリーということで、**MESH × myThings**でクリスマスを演出方法を提案してみます。

##MESHタグとmyThingsをつなぐカスタムタグ

MESHには7種類の物理的なタグ（電子ブロック）と、アプリ内に実装されたたくさんのソフトウェアタグが用意されています。

| 種類 | タグ名 |
|:-----------|:------------|
| MESHタグ | Button（ボタン） / Move（動き） / Motion（人感） / Brightness（明るさ） / Temperature & Humidity（温度と湿度） / LED / GPIO |
| デバイスタグ | カメラ / マイク / スピーカー |
| ロジックタグ | アンド / タイマー / スイッチ / カウンター |
| 拡張タグ | Philips Hue / Gmail / IFTTT |
| カスタムタグ | ※ |

今回myThingsで用意するのは、MESHが提供するSDKを使った**カスタムタグ**（表の※印）です。

### MESHアプリ内にmyThingsタグを実装する
現在公開されている[MESH SDK](https://meshprj.com/sdk/)はβ版です。サイトにアクセスし、ページ上部にある「Start using the MESH SDK」リンクからデベロッパー登録をします。登録を終えてログインしたら準備完了。

以降はIDCフロンティア清水さんの記事「[MESHのソフトウェアタグを使ってmyThingsとつないでみる](http://qiita.com/masato/items/159a35c5ce741b6f1058)」を参考に進めてみてください。

清水さんの記事にはExportされたコードが用意されていますので、手順を追って「Create New Tag」→「Import」と進めてIDCFチャンネルサーバーのUUIDやtokenなどを入力すればOKです。

<img width="350" alt="mesh01.png" src="https://qiita-image-store.s3.amazonaws.com/0/58993/c0978a20-6cc2-b984-41b5-ed96115d1bd9.png">

<img width="350" alt="mesh02.png" src="https://qiita-image-store.s3.amazonaws.com/0/58993/3c922000-b5a2-8da4-228c-06f6319f5861.png">

ソフトウェアタグでも公式のタグと同様、MESHアプリ内での複数トリガー＆アクションが設定できます。

私はMESHからmyThingsに向けて複数のトリガーを同時発火させてみたかったので、Triggerをふたつ作ってみました。

<img width="350" alt="mesh03.png" src="https://qiita-image-store.s3.amazonaws.com/0/58993/69df8a0b-45fa-7a7f-b251-e67453daeac2.png">

IDCFチャンネルのTrigger-1、Trigger-2を紐付けています。myThingsでは**最大5つのトリガー**まで設定できます。

設定が全て完了したら、MESHアプリのカスタムタグの呼び出しをして、他のタグと同様にレシピキャンバス上で使用できます。

<img width="150" alt="2015-12-13 14.30.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/58993/ba8d067f-aa06-f42c-b39c-14751fca9ad7.png"> <img width="150" alt="2015-12-13 14.30.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/58993/e1a0f9c9-63ad-1d11-c02e-0fbd799684e3.png">

例えば上記の場合は、ボタンを押すとMESHスピーカーから音が鳴り、同時にmyThingのトリガー発火をします。

###myThingsアプリでIDCFチャンネルをアクティベートする
次に、myThingsアプリでMESHから送られたトリガーと他のチャンネルを組み合わせるための用意です。今回はmyThingsに用意されているチャンネルの中から、開発者向けのIDCFチャンネルを使います。

IDCFチャンネルについてのおさらいは、IDCフロンティア大屋さんの記事がわかりやすいのでご紹介します。

- [myThingsとIDCFチャンネルでできること](http://qiita.com/mac008008/items/0f2cebc4b0728b89cd39)

このチャンネルをアクティベートする際には、IDCFサーバーのIPアドレスとmeshblu_auth_tokenを使って認証します。

###myThingsアプリで組み合わせを作る
ここまでできれば、あとはいろいろな組み合わせを楽しむだけです。

myThingsで2015年12月13日現在用意されているチャンネルは34個あります。
<img width="350" alt="mesh04.png" src="https://qiita-image-store.s3.amazonaws.com/0/58993/b6379938-7ec2-2bd5-7829-b600e78145bc.png">

それぞれ組み合わせできるトリガーとアクションの条件が設定されています。メールアドレスや本文に記載する内容など、細かな変数は組み合わせを作成する際に自分で設定できます。

人気があるものについては以下の記事にも紹介されています。
- [【永久保存版！? 中の人がmyThingsで使えるトリガー・アクション一覧を全力で書いてみた　2015年12月】](http://qiita.com/ekawamur/items/1503b5d5b786ffef2ae6)

MESHの各種タグをトリガーにする場合は、組み合わせ作成画面のトリガーでIDCFチャンネルを選び、Trigger-1から5までの中から使用したいものを選びます。

次にアクションを選びます。ここからは通常のチャンネル設定と同じです。

<img width="150" alt="2015-12-13 14.06.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/58993/00b580e1-2104-6c8e-c394-c45d1fe139f1.png">

####myThingsのトリガー発火は15分おき
組み合わせを考えるときに注意したいのが、myThingsのトリガー発火がリアルタイムではなく**15分おき**ということです。MESHで◯◯したらすぐにアクションとはなりません。

組み合わせを作って15分ごとの発火が待てないときは、myThingsアプリ上で組み合わせの「手動実行」で強制発火させることができます。

##クリスマスっぽい組み合わせを考えてみました！

ようやく準備が整ったところで、クリスマスを家族や恋人、大切な仲間と楽しめる組み合わせの発表です！いろいろ考えた中から、2つほど選んでみました。

###**「サンタさんに会いたいボタン」**
子どもたちが毎朝ボタンを押し続けると、クリスマスの日にサンタさんからメッセージが届き、BOCCOがかわいい声で読み上げてくれます。

**組み合わせ**
IDCFチャンネル（MESH Buttonタグ＋myThingsタグ）× BOCCOチャンネル

![2015-12-13 17.05.33.jpg](https://qiita-image-store.s3.amazonaws.com/0/58993/c1d5215a-6c60-cfa7-f04f-ceaf03c9fe90.jpeg)

MESHのButtonタグを使用。MESHアプリのカウンターロジックを使用し、開始日からクリスマスの朝までの回数を設定。条件を満たしたらmyThingsのTriggerを発火させます。その情報をIDCFチャンネルで受け取り、BOCCOが発話アクションをします。

BOCCOに発話させるメッセージがポイント。サンタさんの気持ちになって作文しましょう！

###**「インタラクティブイルミネーション」**
パーティー会場のエントランスに用意されたジングルベル。参加者が来場してベルを鳴らすたびに、会場のクリスマスイルミネーションがだんだんと輝きを増していきます。

**組み合わせ**
IDCFチャンネル（MESH MOVEタグ＋myThingsタグ）× IDCFチャンネル（NeoPixel）

![2015-12-13 17.18.08.jpg](https://qiita-image-store.s3.amazonaws.com/0/58993/2442e863-e287-7eb6-daaf-4eec469ed157.jpeg)

MESHのMoveタグを振るとアプリからジングルベルの音が鳴り、カウンターロジックでカウントアップ。設定回数を満たすとmyThingsのTriggerが発火します。設定回数はリセットされ、再び満たすとサイドTrigger発火。IDCFチャンネルではArduinoがネットを経由してアクションを受け取り、その度にNeoPixelのライトの点灯数や色味を変化させていきます。


##ピタゴラ感を増すなら、MESHと連携しているIFTTTもおすすめ
MESHでは12/2にIFTTTと連携、アプリ内には拡張タグ（Extension）が追加されました。

- [IFTTTとの連携をスタートしました！](http://blog.meshprj.com/entry/nekotter)

アプリ同士を任意のイベントIDで連携できて簡単です。友だち同士でイベントIDを共有してアクションを一箇所に集めて使うこともできそうです（まだ試していません）。

また、IFTTTとmyThingsとで類するトリガーやアクションが用意されています。そのため、お互いに発火した情報を送り合うような連結もできます。**モノ×インターネットでいろんなサービスを数珠つなぎしていくピタゴラ装置**を考えるのは楽しそうですね！

##クリスマスに向けて鋭意開発中！
今回の記事には間に合わなかったのですが、現在クリスマスに向けてインタラクティブイルミネーションを開発中です。

仕組みはこんなものを予定しています。

![mesh05.jpg](https://qiita-image-store.s3.amazonaws.com/0/58993/b2a37bbd-5a36-5edd-26ab-7aaf400a91d3.jpeg)

- MESHからmyThingsアプリにTrigger-1を送る
- myThingsアプリで組み合わせを作る
- ArduinoでMeshbluに値（Action-1）を取りに行く
- ArduinoでLEDを点灯させる
- 値がかえってきた回数に応じてLEDの光り方を変える

MESHアプリのレシピはこちらです。

<img width="150" alt="2015-12-13 17.08.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/58993/c4cdbc58-a034-3dea-b9c6-d533ff1e7dd6.png">

パーティーの参加者には入り口でジングルベルを模したMoveタグを3回振ってもらいます。すると写真撮影をし、ベルの音がなります。10人来場したところでmyThingsにTrigger-1を送ります。

myThingsアプリの組み合わせはこちらです。

<img width="150" alt="2015-12-13 17.24.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/58993/c4168fcb-61d0-1c06-1877-1ae3b6e6c95f.png">

今日時点では、ArduinoでMeshbluに値（Action-1）を取りに行くところを実装中です。あとは値を受け取る回数でLEDの光り方をコントロールさせたら完成です。

はじめようキットのRaspberryPiやIntel® Edisonという選択肢もありましたが、今回はイルミネーションの華やかさを重視して、Arduinoと[NeoPixel RGB ストリング](http://www.led-paradise.com/phone/product/1751)という組み合わせにしてみました。

NeoPixelを[サンプルコード](https://github.com/adafruit/Adafruit_NeoPixel)を使って光らせてみたのですが、とってもきれいです。

![mesh06.jpg](https://qiita-image-store.s3.amazonaws.com/0/58993/aecc53e4-7b96-0916-e4da-5aa9efa2d453.jpeg)

LED PARADISEさんの[紹介動画](https://www.youtube.com/watch?v=d4N111H6CL0)もぜひご覧ください。



##今後
まず、インタラクティブイルミネーションを完成させます。Githubにソースコードを公開できるところまでブラッシュアップして、Qiitaの記事に投稿してみますね。

その後、やってみたいことはふたつです。
- myThingsソフトウェアタグにActionを追加
- MESH × IFTTT × myThingsでピタゴラ装置を作ってみる

##まとめ
MESHソフトウェアタグはセンサーの扱いがとても簡単に設計されていて、インターネットを使ったインタラクティブな仕掛けを作るのにとても向いています。クリスマスや年末年始のように、子どもや両親などと過ごす時間が多いときに、誰でもわかりやすく盛り上がれるサービスが作れそうです。

myThingsがリアルタイムでトリガー発火できるようになれば、さらに便利になって相性がよくなると感じました。

私自身、2年前にArduinoを購入し週末に電子工作している以外、お仕事でプログラミングすることはありませんでした。myThingsエバンジェリストとしての活動がきっかけとなり、実際に手を動かす機会が増えてきました。作りたいものの作り方がわかり始めたレベルでまだまだ挑戦の日々ですが、来年以降も楽しみます！


##お知らせ
12/16（水）の夜にmyThings Xmasというイベントをやります。そこでMESHのソフトウェアタグを使った組み合わせも展示予定なので、東京近郊にお住いの方はぜひ遊びに来てくださいね。

[myThings Xmas - 冬を楽しむIoT -](http://mythingsxmas.peatix.com)
![myThings Xmas](http://peatix.com.new.s3.amazonaws.com/event/133406/cover-AexxD2WZbhy65ueH2Iw0mUmgRSseBOZJ.jpeg "myThings Xmas")