週末副業記

土日は副業エンジニアのブログです。副業に関することを投稿します。

ArduinoでTweetしたデータをPythonでグラフ化してみた


ArduinoTweetさせたデータをグラフ化しました。

 

infoaisaka.hatenablog.com

 


ArduinoからTweetを行うプログラムについては上記を参照してください。
f:id:aisakakun:20190317000243p:plain:w500
このように自動で1日の部屋の明るさ(0→1023 = 明るい→暗い)をTweetしました。

【部屋の状態】

・カーテンを少し開けており外光が入る状態

データをcsv

TwitterAPIで取得する方法も検討しましたがスクレイピングに関して制約があるみたいで、一旦はcsvに落とすことにしました。このような感じです。
f:id:aisakakun:20190317000950p:plain:w300

Pythonでグラフ化させる

Jupyterをインストール

↓この記事を参考に、インストールしました。
qiita.com
以下のようにインストールします。pip3とする必要はないかもしれませんが、python3系を指定したかったので敢えてしました。

pip3 install scipy
pip3 install matplotlib
pip3 install pandas
pip3 install jupyter

csvファイルを読み込みグラフ化する

Jupyterをインストールしたらターミナルで

jupyter notebook

と入力し、起動します。
f:id:aisakakun:20190317001731p:plain:w500
上図のように選択すると下のような画面に遷移します。
f:id:aisakakun:20190317001843p:plain:w500

In[]:

と書かれている横に、

import pandas as pd
df = pd.read_csv('ファイル名.csv', parse_dates=['time'], index_col=1,encoding="shift-jis")
df['value'].plot() #'value'はcsvファイルにおける列指定のため

そうすると下のようなグラフが表示されます。

f:id:aisakakun:20190317002225p:plain:w400

ただ、値としては「1023」が最大値だったのですが、これは暗い時に示す値です。「暗い=大きい」というより「暗い=小さい」としたかったため、
f:id:aisakakun:20190317002440p:plain:w300
と入力し、欲しかったグラフを得ます。

f:id:aisakakun:20190317002535p:plain:w500

結果

・値が低いのは寝ている時で、部屋が真っ暗の時
・値が瞬間的に高くなるのは、起床し、部屋の明かりがついた時
・値が瞬間的に高くなった後、低くなるのは部屋の電気を消した時
・以降、外光によるもの
・帰宅後、電気をつけるため、23時過ぎにも関わらず値の上昇

日照データと似たようなグラフが得られました。
毎日データを取得すれば面白いことができそうですが、それではArduinoが毎日使えなくなってしまうので、とりあえず保留とします。