MESH SDKをいじった話
先日、出場したハッカソンで、MESHのSDKをいじる機会があったので書いときます。
今回やったこと
今回はMESHの動きセンサータグを使い、動作を検知したら特定のURLを叩くということをしました。
MESHとは?
センサーやボタンが着いた消しゴムサイズのMESHタグと、MESHタグをビジュアルプログラミンで他のタグに繋げることができるMESHアプリを使い、簡単にIoTサービスを作ることができるデバイスです。
↑公式サイトを見るのが一番わかりやすいです。
MESH SDKとは?
MESHでは、アプリ上でセンサータグ(動きや人感など)やモバイルのタグ(カメラやマイクなど)、連携タグ(IFTTTやHue)を繋げてサービスを開発することができますが、これら以外にもソフトウェアタグといって、JavaScriptのコードを実行することができるタグがあります。そのソフトウェアタグを開発することができるのが、MESH SDKです。
meshprj.com ↑公式ドキュメントです。
まずはアカウント作る。
ここでアカウントを作成してください。
新しいタグを作る
作成したアカウントでログインすると、タグを作るページになります。
「Create New Tag」でタグを作ることができます。
名前や説明、入力の設定ができます。
こんな感じでテストとして適当に書きます。
コーディング
直接コードを書くのは、codeの項目の4つの箇所になります。
公式のドキュメントでは、それぞれ以下の際に実行されると記載されています。
メソッド | 概要 |
---|---|
Initialize | Functionの初期化時に呼ばれます。内部変数の確保やスケジューラーの設定といった、初期化処理が必要な場合に実装します。 |
Receive | 入力コネクタからメッセージを受け取った際に呼ばれます。入力コネクタが複数あり、どれから受け取ったか区別したい場合に実装します。 |
Execute | Function実行時に呼ばれます。通常、手続きはこのメソッドに記述します。 |
Result | Executeメソッドが完了し、出力コネクタから次のタグにメッセージを送信する際に呼ばれます。出力コネクタが複数あり、どのコネクタからメッセージを出力するかを選びたい場合に実装します。デフォルトでは全ての出力コネクタから出力されます。 |
今回のように入力が1つで他のタグなどに出力をしない場合は基本的にExcuteにコードを書けば大丈夫です。 特定のURLを叩くというのはこんな感じで書けます。なお、Ajaxを使うのですが、MESH内では、素のJavaScriptの中でAjaxを使います。
var apiURL = "http://example.com"; //叩きたいURL ajax ({ url : apiURL, type : "get", timeout : 5000, success : function ( contents ) { log("success"); //成功した場合はアプリ内のlogへ「success」の文字列を出力 }, error : function ( request, errorMessage ) { log("error"); runtimeValues.outputIndex = -1; callbackSuccess( { resultType : "pause", runtimeValues : runtimeValues } ); } }); //次のメソッドを呼ぶかどうかの処理。 return { resultType : "pause" };
最後のreturnの部分はMESH SDK固有のもので、ExecuteからResultメソッドを呼ぶかどうかを書けます。 今回はpauseで呼んでいませんが、呼ぶ場合は、continueで呼べます。詳しくは公式を https://meshprj.com/sdk/doc/ja/#sdkdoc_section_3-2。
なお、今回は入力が1つだけでしたが、入力が複数ある場合は、Receiveの中に
if ( index == 0 ) { //1番目のコネクタから入力がきた場合の処理 log( "入力1" ); //アプリ内のlogへの出力 } if ( index == 1 ) { //2番目のコネクタから入力がきた場合の処理 log( "入力2" ); }
このような感じで、if文で分岐処理をすることが可能です。
MESHアプリに入れる
コードを書いたら、saveボタンを押して保存しましょう。
保存をしたら、次はMESHアプリを使います。
MESHアプリ内で、最初に作成したアカウントでログインをして、新しいレシピを作ります。 そして、下のメニューからカスタムの追加を選択します。
そして、先ほど作成したtest_tagを選択。
すると、test_tagが追加されるのでこれを画面上に置いて、他のタグと繋げてみましょう。
こんな感じでログを見ると、successと出力されれば成功です。
あとがき
もともとは、MESHのBluetooth通信を解析して、PCと直接通信できれば最高だったんですが、あまりに自分に知識がなかったですね...
MESHは非常に面白いプロダクトですが、使用するのにスマートフォンのアプリを起動しっぱなしにする必要があったり、まだまだ思うようにできないこともあるので、これからに期待したいですね。
今年中にラズパイにハブのアプリが出るらしいので楽しみです。 www.get.meshprj.com
実を言うと僕はまだMESH買ってないんですけどね...
欲しいけどお金が...
1つ6000円は高いかな...