【Azure】【MESH】【IoT Hub】MESH SDKからREST APIでIoT Hubに温度を送信してみる その2
前回、Azure IoT Hubの作成からSASの取得までを行いました。
今回は構成した情報を元にMESH SDKを用いて、MESHからIoT Hubへのデータ送信までを書いていきます。
MESH SDKの作例は以下を参照してもらえるといいと思います。
MESH SDK Reference Manual
https://meshprj.com/sdk/doc/ja/
(ただ、ちょっと情報不足感。もうちょっと色々と作例を示してほしいところ……。)
MESH SDK 用ソースコード(JavaScript)
まず、今回のソースコードをざっくりとお伝えします。
今回は、MESHボタンとMESH温度・湿度を利用します。
ボタンが押されたら、温度を測定して、自作のMESH SDKに渡し、SDK内部でajaxを使ってIoT Hubへ送信するという感じのものです。
MESH SDKについては、私もまだまだ勉強中ですが、いくつかポイントがあるかなぁと思います。
その一つのポイントが、MESH タグからの「インプット」今回で言えば温度・湿度の部分ですが、この値は「messageValue」というオブジェクトの中に入ってきます。
オブジェクトにはMESHタグの各種パラメータとともに温度、湿度が渡ってきます。
ただ、messageValueのそれぞれのValueを格納しているKey名が何なのか、なぜかSDK Manualをあさっても出てきませんでした……。
一応
温度が「temperature」
湿度が「humidity」
です。
他のMESHタグはわからないので、logメソッドで実行ログが出力できるのを利用して、虱潰しに漁るしかなさそうです。
プロパティはまだ「properties」オブジェクトに自分が指定したKeyで入ってくるのでわかりやすいですね。
以下が今回私の方で作成したJSです。
なお、上のJSを組み込んだjsonも用意しているので、今回はそれを取り込む方法ベースで参考までですが、紹介していきます。
MESH SDKの登録
まずは、MESH SDKの登録が必要です。
以下のサイトにアクセスして、「Start using the MESH SDK」をクリックして、MESH SDKのアカウントでログインします。
アカウントが無い場合は、「Create New Account」から新しく登録してください。特に料金はかからないです。
続いて、カスタムタグを登録します。
以下のgit hub に import可能なjsonを配置しておきました。
プロパティをいじってもらえれば、自身のIoT Hubへ接続可能です。
「Create New Tag」をクリックして
「Imoport」をクリック
Git HubのJsonを貼り付けて、「Load JSON」をクリック
各種プロパティのデフォルトValueに必要な情報を入力してください。
MESH で設定を追加
あとは、iPhone用などのMESHアプリでカスタムタグを利用したレシピを作成していきます。
カスタムタグを登録する場合は、メニューのSDKをタップして、ログインしておきます。
カスタムの「追加」ボタンからカスタムタグを追加することができるので、以下のような感じで作っておきます。
各プロパティはここから変更することもできます。
DeviceExplorerを使って動作確認
送信したデータはDevice Explorerのモニタリング機能を使うことで確認できます。
DataタブでDevice IDを選択して、Monitorをクリック。
Monitorが開始されたあとにMESHレシピを実行すれば、Event Hub Dataのところに送信されたJSONが表示されていきます。
所感
はじめてIoTらしいことをした今回の投稿ですが、IoTよりもMESH SDK部分にずいぶん引きずられてしまったかなぁといったところです。
やっぱり今度はRaspberry Pi + Windows 10 IoT Coreでリベンジしたいところですねぇ。