家庭内のセンサー、環境モニターの測定データ送信先を順次Raspberry pi 3+のUbuntuサーバへ移行していますが、懸案であった「家庭内・消費電力モニター」の改版・移行作業が完了しました。これは2016年に作成したものですが、ラズパイA+を使用してレンタルサーバーにデータ送信し、自前のPHPプログラムでグラフ化していました。
これを宅内LinuxサーバーのGrafanaでグラフ表示させるように改版するわけですが、なにせ7年も前にpython2で作ったシステムなので、この際一気に最新の環境にアップデートしてみました。
まずラズパイOSを最新版にしたところ、今まで使っていたUSB/Wifiアダプターが認識されなくなりました。どうもチップが古いようで、ドライバーを探すのも面倒なので手持ちのラズパイZero 2Wに載せ換えました。
python2で書いたプログラムは、移行環境ではそのまま動作しなかったので、こちらも最新のpython3に書き換えました。python3だとThonnyも使えるし。同じpythonという名前ですが、2と3ではかなり変更点が多く、特にライブラリー関係で互換性のないものが多数あるので非常に厄介です。
このシステムでは、電流センサーの出力電圧を読むA/DコンバーターにMCP3002というチップを使っており、ラズパイとはSPIで接続されます。python2のSPIライブラリーは「py-spidev」というものを使用していたのですが、これがなぜかpython3環境だとMCP3002からデータを取ってきません。特にエラーも出ないし、デバックする元気もないので「gpiozero」ライブラリを使用してみました。
https://gpiozero.readthedocs.io/en/latest/api_spi.html
当方はこれを初めて使ったのですが、なんとSPIライブラリでMCP3002を直接指定でき、データの取得も非常に楽です。全く問題なく電圧測定・読み取りできました。
次にサーバーに接続するhttpのライブラリですが、python2では「urllib/urllib2」を使用していました。しかしこちらはpython3ではサポートされないので、使い慣れた「requests」に変更しました。
あとサーバー側ではhttp/POSTで受信したデータをデータベース:mysqlに格納するPHPプログラムを作成し、データベースを設定します。測定データがデータベースに格納されることが確認できれば、後はGrafanaでグラフ表示・可視化を行います。
Grafanaではmin/max/aveのほか、積算値(Total)の表示ができるので、任意の期間で総消費電力の表示が可能です。(例えば1日とか1ヶ月など、秒単位で指定可能)
これで電力会社の請求書との比較が簡単に行えます。もっと複雑な計算がしたければSQLでプログラムすることも可能で、Grafanaのフレキシビリティーの高さは圧倒的です。
今回懸案のシステム移行が完了し、色々面倒はありましたがとても気分がスッキリしました。
No comments
Comments feed for this article
Trackback link: http://lute.penne.jp/thumbunder/家庭内・消費電力モニターの改版とgrafanaへの移行作/trackback/