ソニーから発売されているMESHは、さまざまな機能を持ったMESHタグをMESHアプリ上でつなげて、自由に組み合わせを作ることができるキットです。WebサービスやIoTデバイスを組み合わせるmyThingsとさらに組み合わせると、もっと便利な使い方ができそうです。今回はMESH SDKのソフトウェアタグを使いmyThingsで自作デバイスと連携することができる「IDCF」チャンネルとつないでみようと思います。
MESHアプリ
MESHアプリはiPhoneやiPadなどにインストールして使います。画面に表示されるキャンバス上でアイコンをビジュアル的につなげるだけでIoTのプロトタイプを簡単に作成できます。
MESHタグ
MESHタグはブロック形状をした電子タグです。執筆時では次の種類が発売されています。
- Move(動き)タグ
- Button(ボタン)タグ
- LEDタグ
- Motion(人感)タグ
- Brightness(明るさ)タグ
- Temperature & Humidity(温度・湿度)タグ
- GPIOタグ
GPIOタグは特殊ですがそれぞれ特定の機能を持っています。MESHタグで何ができるのかわかりやすいです。MESHアプリのチュートリアルを開始すればMESHタグをBluetoothでペアリングして、簡単なサンプルの作成と実行までできます。プログラミングや電子工作の知識は必要ありません。
MESHを使うと次のようなことができるようになります。
- 新聞紙が勇者の剣に!
- 部屋に近づく人を検知!
- ぬいぐるみが走り出す
- カメラリモコンを簡単作成!
- プレゼントにさらなる驚きを
- メール受信をこっそり確認
- 乾燥アラームで風邪予防!
MESH SDK
プログラミングが苦手な方でもIoTのプロトタイピングをすぐに始められるのがMESHの良いところです。さらにMESH SDKを使って作成するソフトウェアタグは自分で書いたJavaScriptのコードをMESHのタグとして追加することができます。
MESH SDKのトップページからStart using the MESH SDKボタンをクリックしてDeveloperアカウントの作成してSDKを開きます。詳しい使い方はMESH SDK Reference Manualの日本語マニュアルをご確認ください。
Webサービスと連携するサンプル
MESH SDKは外部WebサービスのAPIにAjaxでアクセスできるソフトウェアタグをJavaScriptで実装することができます。このソフトウェアタグを使うとMESHのタグの組み合わせの中に外部のWebサービスを組み込むことができます。
サンプルとして天気予報タグの作り方が掲載されています。これを読むとMESHが提供しているjQuery風のAjaxライブラリの使い方の参考になります。天気予報タグは、OpenWeatherMap serviceが提供するWeather APIを利用しています。インプットがあった時に、特定の場所の天気を判別して晴れ、雨、曇りごとにアウトプットを出力しわける例です。
ソフトウェアタグのinputとexport
MESH SDKで作成したソフトウェアタグはDeveloperアカウントに紐付いています。MESHアプリのメニューからSDKにサインインすると作成したソフトウェアタグが使えるようになります。
現状では他の開発者が作成したソフトウェアタグのコードはimportして利用する必要があります。
- 開発者は、ブラウザからMESH SDKにサインインしてソフトウェアタグのコードをJSON形式でexportする。
- 開発者は、他の人がアクセス可能な場所に公開する(gistなど)
- 利用者は、ブラウザからMESH SDKにサインインしてJSON形式のコードをimportする。
- 利用者は、iPadのMESHアプリからSDKにサインインしてソフトウェアタグをダウンロードする。
MESH SDKでmyThingsタグをimportする
前置きが長くなりましたがこちらにmyThingsのソフトウェアタグを公開しているのでMESH SDKにサインインした後にimportしてからお使いください。
MESH SDKにサインインする
MESH SDKにサインインすると作成したソフトウェアタグの一覧画面が開きます。下の画面はまだ1つも作成していない状態です。「Create New Tag」ボタンを押してタグの作成画面に移動します。
タグ作成画面
タグの作成するメイン画面に移動します。今回は作成済みのコードを使うので「Import」ボタンを押します。
myThingsのコードをimportする
「Imported JSON Data」のフィールドにこちらにあるJSONをコピーしてペーストします。「Load JSON」ボタンを押すとimportが終了します。
タグを保存する
importするとタグは「myThings」の名前になっています。好きなように変更できます。別名でタグを保存すれば複数のバージョンを使い分けることができます。左上の「Save」ボタンを押してタグの作成を完了します。
myThingsタグのコードについて
JSON形式でペーストしたコードは読みづらいですが、タグの画面からimportしたJavaScriptのコードを確認できます。
- 「Trigger」-> 「Code」-> 「Execute」
MESH SDKのAjaxライブラリを使い、タグに入力コネクタからインプットが来ると「IDCF」チャンネルのトリガーを発火するためPOSTする簡単なサンプルになっています。
MESHアプリでmyThingsタグをダウンロードする
iPadなどでMESHアプリを起動してMESH SDKで作成したタグをMESHアプリで使えるようにしていきます。
SDKにサインインする
MESHアプリを起動したら右上メニューボタンからSDKの項目をタップします。
MESH SDKにサインインするため先ほどブラウザで登録したDeveloperアカウント情報を入力します。
新しいレシピを作成する
次に左上のプラスボタンを押します。作成された「New Recipe」のタイルをタップしてレシピ作成画面に移動します。
myThingsタグをダウンロードする
レシピ作成画面が開きます。右側メニューの一番下の「Custom」セクションのプラスボタンを押します。
先ほどimportしたmyThingsタグの情報が表示されます。更新日時やタイトルなどを確認して「Add」ボタンを押します。
myThingsタグが右下のCustomフィールドに表示されて使えるようになりました。
myThingsアプリで組み合わせを作る
ここでMESHアプリから一度離れ、myThingsアプリから「IDCF」チャンネルを使いMESHと連携する組み合わせを作ります。「IDCF」チャンネルとのトリガーの詳しい使い方はこちらの記事を参考にしてください。またアクションのチャンネルはEvernoteを使います。予めEvernoteのアカウントをご用意ください。
「IDCF」と 「Evernote」チャンネル
スマホからmyThingsアプリを起動して
トリガーに「IDCF」、アクションに「Evernote」を使った組み合わせを作ります。他のチャンネルを使う場合はアクションの作成を読み替えて以下のような組み合わせを作ってください。
この組み合わせが実行されると、トリガーの「IDCF」チャンネルの「trigger-4」の条件を満たしたら、アクションの「Evernote」チャンネルを実行します。Evernoteの「MESHの記録」ノートに「MESHが押されたよ」という文字を追記していきます。
MESHでmyThingsタグを使って見る
それではいよいよMESHに作成したmyThingsタグを使ってみましょう。
タグをキャンバスにドラッグ&ドロップする
CustomフィールドのmyThingsタグを中央のキャンバスにドラッグ&ドロップします。現在のmyThingsタグは「トリガー」しか作成していないので、「Trigger」ファンクションが表示されます。「uuid」などが表示されているプロパティをタップして設定画面に移動します。
「IDCF」チャンネルのトリガーを設定する
プロパティ設定画面では「IDCF」チャンネルのトリガー情報を設定します。前のステップでmyThingsアプリの組み合わせで使った「trigger-4」のuuidとtokenを指定します。メールなどでuuidなどの情報をiPadに転送してそれぞれのフィールドに入力します。
iPadだとuuidなどの入力が不便なので、ブラウザからMESH SDKの画面を開きプロパティのフィールドに初期値として予め入れておくこともできます。
- Trigger -> Property
MESH SDKでコードを編集して保存したら、MESHアプリ側でも右メニューのCustomフィールドからmyThingsタグをタップして「Tag Info」画面を開きます。「Check for Updates」ボタンを押して更新したコードをダウンロードします。
レシピ(組み合わせ)を作る
トリガーの情報を設定するとキャンバスに戻ります。
今回のMESHタグはButton(ボタン)タグを使います。タグのボタンを押す動作で次のタグへ処理が移動するので、レシピの起点としてわかりやすいです。
Buttonタグをキャンバスにドラッグ&ドロップします。Buttonタグの右側の出力コネクタのつまみをタップして動かすと線が伸びます。そのままmyThingsの入力コネクタへ凸凹の形を合わせるとシャキーン!と音が鳴り気持ち良くダグ同士がつながります。
myThingsタグからの出力コネクタはPlayタグを使います。「IDCF」チャンネルサーバーと正常に通信ができたらiPadから音が鳴るようにします。Playタグをつなげると以下のようになります。
Buttonタグを押す
その前に右側のメニューの「Tag」セクションに表示されているButtonタグに警告が表示されずに正常にiPadと通信ができていることを確認してください。MESHアプリを一度閉じてしまうとタグとの接続が切れてしまうので、「Tag」セクションの左ボタンで表示されるようにタグを再認識させてください。
それでは実物のButtonタグについているボタンを押してみましょう。正常にレシピが実行されるとiPadから音がなります。myThingsタグのログは「Custom」セクションにある「Log」ボタンをタップすると確認することができます。
myThingsアプリで確認する
Buttonタグを押した後しばらくするとmyThingsに作成しておいた組み合わせが実行されます。すぐに実行したい場合は組み合わせの「手動実行」ボタンを押してください。成功するとタイムライン画面にログが表示されます。
Evernoteアプリを開くと「MESHの記録」というノートにmyThingsからのメッセージが記録されました。
他のMESHタグでも
myThingsのトリガーにすることができるMESHタグは他にもたくさんあります。何かイベントが発生したら何かの処理を実行するという仕組みはとてもシンプルで、専門のプログラム知識がない方にもわかりやすいと思います。MESHタグとmyThingsチャンネルの「Webサービス」や「IoTガジェット」をつなげて自分だけの組み合わせを考えてみると楽しいと思います。
タグをひっくり返したら
人や動物の動きを検知したら
明るさが指定した範囲内に変化したら
温度が指定した範囲内に変化したら