じーろぐ

日々の記録。コンピュータやプログラミングの話題が多め。

Nature RemoのセンサーデータをAPI経由で記録しグラフ化してみた

Nature Remoは、エアコンなど赤外線リモコンで操作できる家電をスマートフォンから制御できるようにするガジェットです。 この中には操作のための赤外線送受信機だけでなく、温度、湿度、照度などを測定できるセンサーも内蔵されています。 このセンサーで測定されているデータは開発元がリリースしているアプリでも見ることができますが、公開されているAPIを使うことで自作アプリからセンサーデータを取得することもできます(エアコンなど赤外線リモコン付き家電の操作もできます)。

このAPIが公開された2018年2月からNature Remoのセンサーデータを定期的に取得するスクリプトを作成し、部屋の温湿度と照度の記録を続けてきました。 この記録したデータをグラフ化するツールをPython(+Matplotlib+Pandas)で作ったので、どんな結果が得られたか紹介しようと思います。

センサーデータのロギングとグラフ化の方法

図にすると以下のようなシステムです。

f:id:z_logger:20190616232743p:plain

Nature Remoの内蔵センサーで記録されたセンサーの値は自動的にNature Remoのサーバに送信さていますので、Nature Remo Cloud APIを通して現在の値を取得することができます。そこで、一定時間ごとにAPIにアクセスしてデータをファイルに記録します。なお、このAPIを使うとエアコンの稼働状況も取得することができるので、今回はこれも記録するようにしました。

データには室温と湿度、照度が時系列で記録されているのでこれを使ってグラフ化するだけです。 今回は、グラフ化にPython+Pandas+matplotlibを用いました。(もちろんExcelやRなどでもグラフ化できると思います)

なお、センサーデータを一定時間に取得しロギングしたり、可視化するのに使ったスクリプトファイルはGitHubで公開しています。

github.com

簡単な説明も書いたので興味のある人はダウンロードして使ってみてください。

記録に使ったファイルサーバ

記録を取るには24時間365日動いていて、インターネットにアクセスできるマシンが必要です。 今回は、自宅で運用しているファイルサーバを使いました。

f:id:z_logger:20190616233843j:plain

これが、自宅のファイルサーバ(QNAP TS-220)。結構古いです。 QNAPのファイルサーバの中身はLinuxなので、SSHでログインしてデータ取得用のスクリプトを転送して定期実行するようにします。 APIが叩ければいいので、curlコマンドが動けば何でも良いはず。

記録用シェルスクリプト

GitHubで公開しているremo-toolsのloggingディレクトリにあるgetRemoSensorData.shが、記録に使っているシェルスクリプトです。

remo-tools/logging at master · mixsoda/remo-tools · GitHub

キモは、

#get remo sensor data
curl -s -X GET "https://api.nature.global/1/devices" -H "accept: application/json" --header "Authorization: Bearer ${TOKEN}" > logs/out_rawdata.json

の部分で、センサーのデータをJSON形式で取得するだけです。

グラフ

取得したセンサーデータをPython+Pandas+matplotlibを使ってグラフ化した結果です。

f:id:z_logger:20190616233759p:plain

上から室温、湿度、最大照度+積算照度になります。 室温と湿度の帯状の部分は最小値と最大値(室温だと最低室温、最高室温)の範囲を示しています。 実線は、一週間分の室温と湿度の平均値をスムージングして表示しています。

照度センサーのデータが取れるようになったのは5月ぐらいからなので、途中からしか記録がないです。 また、平均照度をグラフ化してもあまり面白くなかったので、最大照度と積算照度を可視化するようにしてみました。 部屋の中の照度なので、真夏などカーテンを閉めがちな季節より秋とかのほうが最大照度は大きいみたいですね。

センサーのデータではないですが、エアコンの稼働時間とかも取ることができます。 室温のデータと合わせて表示した結果がこちら

f:id:z_logger:20190616233820p:plain

どの季節にどのくらいエアコンを使っているかわかって結構面白いです。

記録に使ったツール類

ここで使ったツールはすべてGitHubの以下のページで公開しています。 github.com