enebularでデータを取りやすいWio Nodeへのシンプルな取得方法

この記事はenebular Advent Calendar 2016の3日目の記事です。

現在、enebularで使われているNode-REDには、Wio Nodeのノード node-red-contrib-wio-seeed があるので、Wio Nodeを使うとセンシングデータを手軽に取得することが出来ます。そしてサーボやLEDなど出力もこれまた手軽です。

だいたいはコレで事足りるのですが、以下のようなケースでWio Nodeのノードうまく値が取れなかったり出力が動かなかったりするケースがあります。

  • Wio Nodeアプリが更新されて使えるGroveセンサーが更新されたがうまく値が来ないケース
  • Wio NodeのAPIサーバーが更新されてトークン取得が動作しないケース
  • とりあえずView API画面で値が取れるのになんだかうまく動かないケース

このあたり。困る。Wio NodeデバイスもWio NodeのAPIサーバーも頻繁に更新されているので、ノード開発側もつぶさに追いかけるとなるとなかなかの手間になるかと思います。

ということで今回はWio NodeノードがうまくいかないときにNode-REDシンプルにデータを受け取る方法を書き留めます。

準備

Wio Nodeには光センサーのGroveを接続します。

enebular-wio-node-simple-flow_1

View APIで操作してみる

enebular-wio-node-simple-flow_2

ファームウェアを書き込んで成功したら、右上のView APIを開きます。

enebular-wio-node-simple-flow_3

Wio Nodeの便利なところは、このView APIでテストするだけでも、簡単にデバイスとやり取りが出来るところですね!

取得してみてる状況。

enebular-wio-node-simple-flow_4

View APIのURLを取得しておく

enebular-wio-node-simple-flow_5

実はこの画面はリンク先が生成されます。Android版の場合は右上のマークをクリックしましょう。

enebular-wio-node-simple-flow_6

共有したいものをクリックします。今回は別のPCでenebularを表示しているような想定で考えているのでメールで転送しましょう。

enebular-wio-node-simple-flow_7

メールで届きました。

enebular-wio-node-simple-flow_8

enebularを使うPCでURLへアクセスするとこのように表示されます。

これでコピペしやすい!

enebularと連携する

さてenebularとの連携です。プロジェクトを作ってフローを作成します。フローが表示されるので設定を始めます。

enebular をつかいはじめるときは、enebularアドベントカレンダー1日目で石川さんの書かれたenebular をつかいはじめる記事がわかりやすいです。

ということで、

enebular-wio-node-simple-flow_9

enebular-wio-node-simple-flow_10

プロジェクトを作って、

enebular-wio-node-simple-flow_11

New Flowを押してフローを新規作成します。

enebular-wio-node-simple-flow_12

View APIのURLを表示させます

enebular-wio-node-simple-flow_13

まず、さきほどのView URLを表示します。光センサーを取得したURLをコピーします。

だいたいURLの名前の感じで把握できますが、

https://us.wio.seeed.io/v1/node/GenericAInA0/analog?access_token=

のところをコピーします。

ノードを作る

enebular-wio-node-simple-flow_14

inject→http request→debugという形でフローを作ります。

enebular-wio-node-simple-flow_15

injectノードはクリックして、このように1秒ごとに発動するように設定します。

enebular-wio-node-simple-flow_16

http requestをクリックして設定のURL部分に先ほどのURLを設定します。

enebular-wio-node-simple-flow_17

これで全てをつなげたのを確認して設定は完了です。デプロイしてみます。

動かしてみる

enebular-wio-node-simple-flow_18

うまくいけば、1秒ごとに右のデバッグ画面に値が取得できます。

enebular-wio-node-simple-flow_19

つづいて、光センサーを変化させてみましょう。

enebular-wio-node-simple-flow_20

手で押さえて明るさを変えてみます。

enebular-wio-node-simple-flow_21

無事、変化しました!

LED Barも設定した例

ためしにLED Barも設定した出力例もお伝えします。

enebular-wio-node-simple-flow_22

UARTのGrove口に、

enebular-wio-node-simple-flow_23

LED Barをつなげます。

enebular-wio-node-simple-flow_24

ファームウェアを書き込んだらView APIでhttps://us.wio.seeed.io/v1/node/GroveLEDBarUART0/level/からはじまるURLをコピーしておきます。Test Requestで1ケタの数字を送ってみて動作も確認しておきましょう。

enebular-wio-node-simple-flow_25

フローはこのように10,5,1とinjectノードから来た値をfunctionノードでURL設定してLED Barへのhttp requestノードに流します。

enebular-wio-node-simple-flow_26

injectノードはこのようにPayloadを10,5,1と設定します。

enebular-wio-node-simple-flow_27

functionノードはURLの送り先を設定しつつ、injectノードからきた値に応じてURLを加工します。functionノードの中身は以下の通り。

// ここに https://us.wio.seeed.io/v1/node/GroveLEDBarUART0/level/からはじまる一文を加えます。
msg.url = "https://us.wio.seeed.io/v1/node/GroveLEDBarUART0/level/[level]?access_token=                                              ";
// 来た値を差し替え
msg.url = msg.url.split("[level]").join(msg.payload);

return msg;

enebular-wio-node-simple-flow_28

http requestノードはMethodをPOSTにする設定だけします。

出来上がったらデプロイしてみます。

enebular-wio-node-simple-flow_29

5の左側のボタンを押してみましょう。

enebular-wio-node-simple-flow_30

無事動きました!

実はLED BarはWio NodeのNode-REDノードでは動作対応してないものなので、このようにシンプルにAPI URL経由行うことでやり取りが可能になります。

おわりに

ということで、Wio Nodeノードでもかなり楽しめるものの、Wio Nodeだけではうまく動かせないときのスキマを埋めるNode-REDフローTIPSをお伝えしました。

私はWio Nodeノードだけで組めるときはそれで完結させますが、ちょっと設定がハマりそうになったら今回の手法で一旦ざっくり組んで完成させてから、Wio Nodeノードに置き換える手法で、かなり安心して制作をすすめやすくなりました。

今回はenebularでのWio Nodeの扱い方を中心にお伝えしましたが、enebularはこの先の可視化グラフやクラウドと連携してこそ、さらなる真価を発揮します。

ですので、Wio Nodeのセンシングや出力によってデバイス側の動きについては、アイデアの熱量をそのままに気楽に作って可視化グラフやクラウドといったenebularのいろいろな活用を楽しんでみて下さい!