「Wio node」タグアーカイブ

【PC & Gadget】WIO NODE + AZURE LOGIC APPSでお手軽IOT【データ取得編】

このエントリーは、このエントリーの関連です。

【車DIY】車のエアコンが効かない!!!!!(2)

さて、IoTしてますか?
Office365してますか?
SharePointしてますか?

と、煽りながらのスタートですが、いずれのカテゴリーにしてもそれほど高度な内容ではないので、玄人諸氏はそっとタブの「閉じる」ボタンをクリックがよろしです。

今回は、ずいぶん前にエントリーした本記事の続編とも関連記事とも言うべき内容です。

Wio node + Azure Logic Appsでお手軽IoT【Wio node初期設定編】

以前のエントリーでは、Wio nodeのセットアップについて解説しましたが、本エントリーではセットアップ後、データ取得ができるようになったIoTエッジ(Wio node)からデータを取得し、可視化していく方法を記載しています。

ざっくりいうとこんな感じですね。

  1. Azure Logic appsを利用可能にする。(※1)
  2. Azure Logic apps からWio nodeのAPIにアクセスして、現在の値を取得する
  3. 取得した値をSharePoint Onlineの任意のリストに格納する

※1:Office365のFlowでも可能ですが、今回の要件の場合Flowでは実現できなかったため、Logic  appsを使用しています。(後述)

うーんむ、超簡単。
では実際やってみましょう。

IoTエッジ(Wio node)からの値を取得する

最近IoT関連のデバイスで特にお気に入りなのが、SeeedのWio nodeです。MFTでお手伝いしたからとかそういう政治的な忖度は全くなく、純粋に圧倒的に使いやすいからです。

パッケージを開けて、電源を投入してセットアップすれば、10分後にはWio nodeのセンサに接続されたデータを利用したり、接続された機器を制御できます。
しかもお値段僅か1000円(Wio nodeのみで)。

Wio nodeからのデータ取得(機器制御)は、煩わしいコーディングをすることなく、Seeed社が提供するサーバーに用意されたAPIに、トークンを付与して呼び出すだけ。

反対に、呼び出す頻度やタイミング、呼び出して取得した後のデータの操作はこちら側で用意する必要がありますが、一般的なソフトウェアエンジニアにとって、不慣れなハードウェア操作の煩わしさがなくなるだけでずいぶんと敷居が下がります。

では実際に、値を取得してみましょう。

Microsoft Azure Logic appsから取得する

Micrsoft Azureの利用方法、Logic Appsのセットアップ方法はここでは割愛しますが、要望が多ければ別にエントリー作成します。

Logic Appsがセットアップされて、Logic Apps デザイナー(編集画面)が表示されている状態からWio nodeの値を取得してみます。

2018-08-29_09h07_40

Logic Appsの初期画面から、「一般的なトリガーで開始する」にあるサンプルトリガー「繰り返し」を選択します。

2018-08-29_09h09_26

すると編集画面に遷移します。

2018-08-29_09h14_56

または新規に作成し、トリガーを「スケジュール」で検索して選択します。

2018-08-29_09h16_21

全く同じ機能なのに、見出しが違うものが存在します・・・。
一応どっちでも動作することを確認しています。

Wio APIにリクエストを送る

2018-08-29_09h45_09

Wio APIから情報を取得するために、新しいステップを追加し「HTTP」アクションを選択します。

2018-08-29_09h45_32

「HTTP」にも数種ありますが、シンプルな「HTTP(リクエスト)」を選択。

2018-08-29_09h46_57

いろいろなパラメタが並んでいますが、Wio APIの場合は

  • 方法
  • URL

の二項目だけを入力すればOKです。
方法は「GET」を選択し、URLにはWio APIで表示されるURLを入力します。

2018-08-29_09h59_28

この画面ですね。
(この画面そのものは、前回の記事を参考にアプリから参照してください。)

2018-08-29_09h49_01

最後に、必須ではありませんが該当タスクの名前を変更します。
今回は一つだけなので悩まないんですが、取得するセンサーの数が増えるとホントに困ることになります。

2018-08-29_09h50_07

「Wio nodeからの温度の取得 001」にしました。
こんな感じで、どのセンサーの値からかわかるようにするとよいでしょう。数字で管理も実はやめた方がいいですが。

これで「HTTP」のタスク内での、Wio nodeからの値の取得まではOKです。
ここまでの流れでWio APIに値取得のためのリクエストを投げ、JSONで値が返ってくるところまでが完了です。

JSONを解析する

2018-08-29_09h48_12

続いての処理。
アクションの追加を行い、「JSON」で検索を行うと、「JSONの操作」というアクションが見つかります。
クリックして追加すると

  • コンテンツ
  • スキーマ

の項目が現れます。

2018-08-30_18h28_36

コンテンツは、入力欄をクリックすると現れる「動的なコンテンツの追加」から展開されるダイアログから入力します。

2018-08-29_09h51_34

「Wio nodeからの温度の取得 001」というグループから、「本文」を選択します。
この本文が実はJSONなんですが、それを解析するということですね。

続いて、どのように解析するかを指示してやります。
「スキーマ」に受け取ったJSONのスキーマを設定してやりますが、0からコード書くのはめんどうなので、「スキーマ」入力欄の下にある

「サンプルのペイロードを解析してスキーマを生成する」

を利用します。

2018-08-29_09h59_28

Wio APIのWeb画面には、実際にリクエストを送ってテストする機能まで備わっているので、遠慮なく利用します。
画面上の「GET」ボタンを押すと、実際に接続されたWio nodeから取得した値が表示されます。
(この画面そのものは、前回の記事を参考にアプリから参照してください。)

上手だと下の赤枠内、「Response:」の下ですね。
これをコピーして

2018-08-29_10h01_19

先ほどの「サンプルのペイロードを解析してスキーマを生成する」をクリックして開いたダイアログに張り付け、「完了」ボタンをクリックします。

2018-08-29_10h03_22

すると、「スキーマ」欄に解析されたJSONのスキーマが読みだされます。
うーんむ、超便利。

が、一つここで問題が。
読み取ったセンサーの値によっては、型の判定がうまくいかない場合があるので、一度テストしてみてうまく取得できない場合、肩を変更してやる必要があります。

今回の場合、自動で生成したスキーマでの型は「integer」でしたが、実際は型指定のエラーが発生したため「number」に変更しています。

image

実際のエラー

2018-08-29_10h04_28

型を「number」に変更

これで、リクエスト→値取得までができたことになります。
次以降のステップで、任意のWebサービスなりアクションなりを利用してデータを利用していく形となりますが、今回はOffice365のSharePointで値を収集してみました。

なんというか、使い慣れていて楽なんですよね。

SharePointに値を格納する

SharePoint上には、すでにカスタムリストで「温度測定実験」というデータ格納先を作ってあります。

image

ここにLogic Appsから接続し、値を格納していきます。

2018-08-29_10h09_11

追加したステップで「SharePoint」アクションを検索し、リストから「項目の作成」を選択します。

2018-08-29_10h10_08

「項目の作成」アクションでは、接続先のSharePointのサイトアドレスを求められます。
またサインイン状態にない場合、サインインを求められます。
うまく接続できると、リストの一覧などが表示されるため、該当するリストを選択します。

リストを選択すると、リストに含まれる変更可能な要素が入力欄として表示されるため、値を設定してきます。

今回の場合

  • タイトル
  • 温度
  • 取得時間

が要入力項目です。

2018-08-29_10h07_26

タイトルはとりあえず何でもいいので、今回は「測定値」としました。
次の「温度」」が肝心なのですが、その他のアクションと同じように「動的なコンテンツの追加」から展開されるダイアログから入力します。

2018-08-29_20h41_06

基本的にはこれでOK

2018-08-29_10h22_41

最後にステップ全体を「保存」して終了です。

二つ隣にある「実行」をクリックして、エラーが無いか確認しましょう。うまく動作すれば、SharePointに値が登録されていくはずです。

image

ということで、うまく登録されていますね。

今回のネタ元のエントリーでは、ここからExcel出力してグラフ化しました。

Office365 Flowからの場合

Office365のFlowからの場合でも、大きな手順は変わりません。
ほとんどLogic Appsと同じ感覚で取得できますが、一点だけ異なる点が。

2018-08-29_09h31_39

新たなフローを作成

2018-08-29_09h32_37

イチから作成

2018-08-29_09h33_09 2018-08-29_09h33_35

スケジュールのトリガーを選択

2018-08-29_09h17_33

ここで、10秒ごとのトリガー作成を試みたところ、契約しているプランではこのタイミングの設定はできないとのこと。
私が契約しているのはBusiness Premium のため、E3などならできるかもしれません。

E3で契約しているテナントお持ちの方、誰か試してみてください。

2018-08-29_09h35_10

本当はOffice365で完結させたかったのですが、上記の理由でやむを得ずLogic Appsでの対応となったわけです。
Flowの場合、最低60秒=1分から可能のようです。

ということで終了です。
ちゃちゃっと書くつもりがずいぶんと長くなってしまいました。

そのうち続編書きます。