SwictBotの温湿度計のデータを取得してグラフにしてみた

この記事は約4分で読めます。

こんにちは

私の自宅ではだいぶん前空になりますが、SwicthBotの製品を使ってスマートホーム化?してます。

このあたりの記事に書いてあります。
  → 当ブログのSwichBot記事の検索結果

直近では、この記事で買った温湿度計をベランダに設置して家を出る前に外の気温を確認したりしています。

最近知ったのですが、SwichBotの製品ってクラウドで使う設定にしてあれば外部からAPIを使ってインターネット経由でステータスの取得や、制御ができるみたいです。

ブログでボタンをお知らたらTVをオンにする!とか言う事も可能みたいですが、それはそれで恐ろしい(笑)ので、今回は止めておきます。制御に関しては、そもそもスマホアプリで制御できるので今の所は必要性を感じません。

個人的にはグラフが大好き(笑)なので、使ってる温湿度計データを取得してみたいです。
事故っても温湿度計はデータの取得はできても操作はできないので、笑ってられそうです。
スマホアプリでも表示できて、割と高機能なんですが個人的に以下のグラフを見てみたいです。

 ・1日の最高、最低気温の推移
 ・1月の最高、最低気温の推移

今月は暑かったなぁ。。とか自前のデータで見れるとなんか面白そうです。

って事で、早速作ってみました。

APIを確認してみましたが、今のステータスを見る事しかできなさそうで、過去のデータの取得はなさそうです。

ステータスですが、呼び出した時のステータス(温度、湿度)が取得できるみたいです。
簡単に処理したいので、Linuxサーバのcronでスケジューリングして取得しようかなと思います。

APIの呼び出し制限は最大で10000回/日の様です。
割ると、1分辺り6.9回呼び出しできそうです。

APIはデバイスID単位(多分)に処理なので、取得する製品が2つになると半分になるはずです。
それでも十分ですね。と言う事で呼び1分毎に呼び出しても良さそうですが。。

1分毎だと、1日に1440回で、1年で52.5万回ぐらいです。
呼び出すのは良いのですが、グラフにしたいので全部DBに保管するのとグラフ化するのにデータが多すぎると重そうな気がします。

悩んだ結果、5分ごとにステータスを取得する様にしようと思います。
それでも10万レコード/年かぁ。。(^_^;

屋外の温度計のデータが1分間隔で取得しても、そこまで変動しないと思うので5分でも十分そうな気がします。

って事で、プログラムを作って実行してみました。

そしてグラフ化します。

自分が見れればいいので、とりあえずは飾りなし+PCで表示だけにしました。
グラフはGoogle Chartを使っているのでJavaScirptが利用できる必要があります。
スマホでも動くと思います。自分のスマホでは動いてました。

ブラウザで以下のページを表示します。
  https://road-bike.net/tools/switch-temp/index.php

こんな画面が出ます。

SwictBotの温湿度計のデータを取得してグラフにしてみた

ページの上の方には最後に取得した測定値が出てます。
グラフは下のリンクを押せば出ます。

上の3つは、5分毎に取得したデータをグラフ化します。
こんな感じです。

SwictBotの温湿度計のデータを取得してグラフにしてみた

下の3つですが、特定の期間を集計したグラフが出ます。
それぞれ、平均は集計期間の平均値、最大は集計期間の最大値、最小は集計期間の最小値になります。
それぞれ以下の感じです。
 1番目:集計期間(日)、表示期間は30日
 2番目:集計期間(日)、表示期間は365日
 3番目:集計期間(月)、表示期間は有るだけ全部

一番上はこんな感じです。

SwictBotの温湿度計のデータを取得してグラフにしてみた

2番目は単に期間が伸びるだけです。データが足りなく今は表示期間が1年に満たないですが、徐々に長くなると思います。

SwictBotの温湿度計のデータを取得してグラフにしてみた

最後はこんな感じです。2ヶ月しかデータがないので寂しいですが、溜まっていけば今年の夏は暑かったよ!って言える気がします(笑)
現在の月は、2日以降になると表示されますが、現在の月のデータが1ヶ月分ではなくて、その月の差期日までの集計値になるので、日が進むと変動すると。。思います。

SwictBotの温湿度計のデータを取得してグラフにしてみた

あと、ついでにブログのサイドバーの上に直近の計測値を表示してみました。

こんな感じでとりあえずできました。

なかなか面白かったです。あとはデータが溜まるのを待って楽しみたい(笑)と思います。

URL忘れそうなので、ブログメニューの「ツール置き場」に追加しておきます。

——————————————— 広告  ———————————————

コメント