PLANEXさんから発売されたどこでも環境センサー WS-USB01-THP のデータ取得APIとNode-REDをつなげてみるメモです。
どこでも環境センサーの設定
どこでも環境センサーですが、私はスイッチサイエンスさんで買いました。
※クラウド利用料は無料、データの保存期間は1ヶ月、サンプリング周期は20秒となります。
取得したデータを別のシステムでも利用できるAPIも、プラネックス社より2019年3月中に公開予定です。
とありますが、すでにAPI公開されているので、この記事が書けております。
PLANEXの公式サイト、
どこでもセンサー|WS-USB01-THP / WS-USB02-PIR
こちらにあるマニュアルのスタートガイドPDFに従って設定します。
ちょっとWi-Fi設定が繋がりにくくて手間取りましたが、一回つながればすぐに可視化ができます。
最近、APIが公開されました
さて、このどこでも環境センサー。真骨頂はAPI公開です。
どこでもセンサー|WS-USB01-THP / WS-USB02-PIR
お知らせ
2019/04/04 お知らせ|「どこでもセンサー」のAPIを公開しました。このAPIにより、「どこでもセンサー」の取得したデータを別のシステムでもお使いいただけるようになります。Planex Cloud Serviceにログインしてご利用ください。
私も情報を追いかけそびれていたのですが、最近把握できました!
これができると、Planex Cloud Serviceの内部でデータ蓄積と可視化をするだけでなく、外のサービスともつなげることが出来ます!
設定を確認
ということで、Planex Cloud Serviceに設定を確認します。
仕様が書いてあります。
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現在の情報として、みてみてください。
トークンを確認する
今回は、温度センサーを取ってみます。
デバイス情報 > ご使用中機器 を見ます。
こちらから、MACとTOKENをメモしておきます。
Node-REDの設定
こちらをもとに以下のようなフローを作りました。
フローの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 ノード
今回は、まずchange ノードを使って、設定すべきAPI情報をまとめておきます。
change ノード内の対象の値は、以下のようになっています。
- token
<token>
の部分を、さきほどメモしたトークン情報と置き換えます。
- from
- 取得する期間の下限(過去)
- to
- 取得する期間の上限(未来)
- type
- API仕様に従ったもの。温度センサーなので「WS-USB01-THP」そのまま。
- mac
<mac>
の部分を、さきほどメモしたMAC情報と置き換えます。
「msg.url 作成」 templateノード
つづいて、templateノードで先ほど設定したchangeノードでのJSONの値を、Mastache機能で値を置き換えています。
こちらは既に設定済みですので、そのままで大丈夫です。
実際に、中身はこのようになっています。
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で実際に動かしてみましょう!
injectノードを押してみると、APIからデータを取得します。
反応が返ってきてJSONデータに変換されました。
中身を見てみると、ちゃんと取得できています。
無事、どこでも環境センサーがつながりました。
このセンサーは一度設定するとPlanex Cloud Serviceにシンプルにデータを送って蓄積できるので、対象の場所でサッと環境を把握したいときに重宝しそうですね。
この絞り込んだ感じ、好みです。いろいろと試していこうと思います!
それでは、よき PLANEX IoT & Node-RED Life を!