AE-BME280がTWELITE経由で送るデータをpythonで加工する ループ版とグラフ作成

スポンサーリンク

前回の続き

少し間が空いてしまいましたが前回はこちら。

ようやくループできるものが出来たのでご紹介。

使ったversion

python3:Python 3.5.3

今回はpython3だけ使いました。

01 データを取得するコード

初めに試した失敗コード(CPU100%版)

データはループで取得できますが、CPUがpython3により100%になるのと、たまに取得するデータがズレるという問題のあるコードです。

何かに使うかもしれないので残しておきます。

このままでは問題なのでこちらの参考サイトを参考にCPU100%を解消しました。

最終的なコード:get_twelite_data.py

CPU100%を解消したコードで2日ほど放置しても取得しても問題なかったものです。

データのズレも今のところ起きていません。

途中にある「print("{0} {1}".format(current_time, output_data))」はコメントアウトしても問題ありません。動作確認のために使いました。

実行は普通にpython3 myserialX.pyでも取得できますが、数日放置しておくために以下のようにバックグランドで実行しました。どちらで実行しても「AE-BME280_data.csv」というデータを出力します。

$ nohup python3 get_twelite_data.py &

取得したデータ例 AE-BME280_data.csv

02 データをグラフ用に加工するコード:make_graph_data.py

取得したデータ(AE-BME280_data.csv)をグラフとして見ようと思います。

まずは01で取得したデータをグラフ用に加工します。

datetime = line[0:19]だと「2017/12/31 16:39:58」

datetime = line[5:16]だと「12/31 16:39」となります。

次のグラフの表示を見やすくために[5:16]を使っています。

取得したデータ例 AE-BME280_data.csv

03 データをグラフ化する

実際にデータをグラフ化するのはこちらのサイトを参考にさせていただきました。

こちらにある「基本的なグラフの描き方」にあるpd.read_csvで読み込むものをAE-BME280_graph.csvに変えただけです。

注意としてSSHから実行するとエラーになります。PVCか直接HDMIでラズパイに接続し、GUIから実行する必要があります。私はPVCを使いました。

簡単に使いまでを書き残すとこんな感じでした。

【ラズパイ側】

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install tightvncserver

tightvncserver

ps -ef | grep tightで5901ポート使っていることを確認。

【Windows側】

UltraVNCのインストール

デフォルトで入れてviewerが入ればいい。

ultraVNCviewerからログイン:5901を忘れないように

パスワード入力してリモートデスクトップにログイン。

そして実際のグラフがこんな感じです。

今年の年末から年明けの取得データです。湿度が夜に急激に上昇しているのは加湿器を使っているからです。ちなみに気圧を追加することも出来るのですが、つまらないグラフになるので止めました。

最後に

無事ループ処理で取得できました。せっかくループ処理するならと思いCPU使用率が100%にならないようにしました。よかったよかった。

あと今回からなるべく簡単なコードでもGitHubに載せようと思います。

今回のコードもこちらに載せております。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする