どこでも環境センサー WS-USB01-THP のデータ取得APIとNode-REDをつなげてみるメモ

PLANEXさんから発売されたどこでも環境センサー WS-USB01-THP のデータ取得APIとNode-REDをつなげてみるメモです。

どこでも環境センサーの設定

どこでも環境センサーですが、私はスイッチサイエンスさんで買いました。

どこでも環境センサー – スイッチサイエンス

※クラウド利用料は無料、データの保存期間は1ヶ月、サンプリング周期は20秒となります。

取得したデータを別のシステムでも利用できるAPIも、プラネックス社より2019年3月中に公開予定です。

とありますが、すでにAPI公開されているので、この記事が書けております。

PLANEXの公式サイト、

どこでもセンサー|WS-USB01-THP / WS-USB02-PIR

こちらにあるマニュアルのスタートガイドPDFに従って設定します。

ちょっとWi-Fi設定が繋がりにくくて手間取りましたが、一回つながればすぐに可視化ができます。

image

最近、APIが公開されました

さて、このどこでも環境センサー。真骨頂はAPI公開です。

どこでもセンサー|WS-USB01-THP / WS-USB02-PIR

お知らせ
2019/04/04 お知らせ|「どこでもセンサー」のAPIを公開しました。このAPIにより、「どこでもセンサー」の取得したデータを別のシステムでもお使いいただけるようになります。Planex Cloud Serviceにログインしてご利用ください。

私も情報を追いかけそびれていたのですが、最近把握できました!

これができると、Planex Cloud Serviceの内部でデータ蓄積と可視化をするだけでなく、外のサービスともつなげることが出来ます!

設定を確認

ということで、Planex Cloud Serviceに設定を確認します。

image

仕様が書いてあります。

GET ./get_data.php?type=”WS-USB01-THP”&mac=”xxxxxxxxxxxx”&from=”2019-01-01 11:22:33″&to=”22019-01-31 22:33:44″&token=”zzzzzzzzzzzzzz”

RETURN(JSON)

[
[“2019-01-01 11:22:33”, “11.1”, “41”, “1010” ]
,[“2019-01-02 12:22:33”, “22.2” , “42”, “1020” ]
,[“2019-01-03 13:22:33”, “33.3” , “43”, “1030” ]

]

このAPIは温度、湿度、気圧の数値を返します。
tokenは、デバイスごとに割り当てられた32桁の英数字です。「デバイス情報」のページから参照してください。
from,to,返値の時刻はUTC時間です。
データーの保存期間は一ヶ月です。データをダウンロードする場合、一ヶ月以内にダウンロードしてください

なかなかにシンプルな記述ですが、うん、つながりそう!

ひとまず、2019/04/24現在の情報として、みてみてください。

トークンを確認する

今回は、温度センサーを取ってみます。

image

デバイス情報 > ご使用中機器 を見ます。

こちらから、MACとTOKENをメモしておきます。

Node-REDの設定

こちらをもとに以下のようなフローを作りました。

image

フローのJSONデータです。

[{"id":"17d41b5f.76c2b5","type":"inject","z":"2bbd73d8.9ca52c","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":280,"y":580,"wires":[["b4373280.5a253"]]},{"id":"522df503.dd1f4c","type":"debug","z":"2bbd73d8.9ca52c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1010,"y":580,"wires":[]},{"id":"10def2ab.3d9d3d","type":"http request","z":"2bbd73d8.9ca52c","name":"","method":"GET","ret":"txt","url":"","tls":"","x":730,"y":580,"wires":[["2eaa7873.403928"]]},{"id":"2eaa7873.403928","type":"json","z":"2bbd73d8.9ca52c","name":"","property":"payload","action":"","pretty":false,"x":870,"y":580,"wires":[["522df503.dd1f4c"]]},{"id":"b4373280.5a253","type":"change","z":"2bbd73d8.9ca52c","name":"接続情報","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"token\":\"<token>\",\"from\":\"2019-04-01 11:22:33\",\"to\":\"2019-04-30 22:33:44\",\"type\":\"WS-USB01-THP\",\"mac\":\"<mac>\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":420,"y":580,"wires":[["7eed8ff2.7d37e"]]},{"id":"7eed8ff2.7d37e","type":"template","z":"2bbd73d8.9ca52c","name":"msg.url 作成","field":"url","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"https://svcipp.planex.co.jp/api/get_data.php?token=\"{{payload.token}}\"&from=\"{{payload.from}}\"&to=\"{{payload.to}}\"&type=\"{{payload.type}}\"&mac=\"{{payload.mac}}\"","output":"str","x":570,"y":580,"wires":[["10def2ab.3d9d3d"]]}]

「接続情報」 change ノード

image

今回は、まずchange ノードを使って、設定すべきAPI情報をまとめておきます。

image

change ノード内の対象の値は、以下のようになっています。

image

  • token
    • <token> の部分を、さきほどメモしたトークン情報と置き換えます。
  • from
    • 取得する期間の下限(過去)
  • to
    • 取得する期間の上限(未来)
  • type
    • API仕様に従ったもの。温度センサーなので「WS-USB01-THP」そのまま。
  • mac
    • <mac> の部分を、さきほどメモしたMAC情報と置き換えます。

「msg.url 作成」 templateノード

image

つづいて、templateノードで先ほど設定したchangeノードでのJSONの値を、Mastache機能で値を置き換えています。

こちらは既に設定済みですので、そのままで大丈夫です。

image

実際に、中身はこのようになっています。

https://svcipp.planex.co.jp/api/get_data.php?token="{{payload.token}}"&from="{{payload.from}}"&to="{{payload.to}}"&type="{{payload.type}}"&mac="{{payload.mac}}"

たとえば、 {{payload.token}} の部分が、tokenの値と置き換わります。

実際に動かしてみる

ということで、Node-REDで実際に動かしてみましょう!

image

injectノードを押してみると、APIからデータを取得します。

image

反応が返ってきてJSONデータに変換されました。

image

中身を見てみると、ちゃんと取得できています。

無事、どこでも環境センサーがつながりました。

このセンサーは一度設定するとPlanex Cloud Serviceにシンプルにデータを送って蓄積できるので、対象の場所でサッと環境を把握したいときに重宝しそうですね。

この絞り込んだ感じ、好みです。いろいろと試していこうと思います!

それでは、よき PLANEX IoT & Node-RED Life を!