電子ペーパーでマイコンボードESP32搭載のM5Paperを何に使おうか考えてGithubをはいかいしていたところ、
M5Paper Ambient MonitorというM5Paperに1日ごとの消費電力を表示してくれるプログラムがありましたので使わせていただきます。
前回の記事はこちら↓
M5Paperのスペックは以下、4.7インチの電子ペーパーがあって、Groveポートも3つあるのでアイデア次第でいろんな使い方ができるガジェットです。
M5Paperでなにができるのか?
Githubに公開されているM5Paper用のプログラムは少ないのですが、いくつか使えそうなプログラムもありますので紹介します。
Flip-Pics
シンプルな画像ビューワー・MicroSDに保存した画像表示
m5paper_weather_display
天気予報
M5Paper Ambient Monitor
M5StickC Wi-SUN HATで取得した消費電力をM5Paperで表示。
paperweather
シンプルな天気予報
m5paper-dashboard
時刻・Co2・温湿度・日付を表示するダッシュボード(別途ラズパイで(Co2取得)・ENV温湿度センサー必要)
M5Paper draw test(日本語)
M5Paperでのお絵かきテストプログラム。
m5Panel for OpenHAB
ホームオートメーションソフトのOpenHABでIot化した機器の状態や操作をM5Paperで可能にする。
涼宮ハルヒの消失 for M5Paper
例のコンソールを表示するプログラムのようです。
M5PaperSchedule(日本語)
M5PaperにGoogleカレンダーのスケジュールを表示する。
M5Paper_RTCSetup
M5PaperのRTCを設定するスケッチ
むむむ、いまのところあまり面白そうな使い方はないかな?やはり自分でアイデアを出して作るしかなさそう。
もう少し生活に不便なものがあればアイデアがでそうだけど、いまのところなし。
M5Paperを書き替えて遊んでみる
まずはM5Stackから出ているサンプルプログラムを試してみます。
M5Stackのサンプルプログラム
こちらは最初に入っていたプログラムで、元に戻したい時に書き込みます。
ほかにもサンプルプログラムはカレンダーやTodoもあるので試してみます。
計算機 サンプル
普通の計算機として使えるようになります。
Todo サンプル
こちらは?Microsoft To DoのTodoを表示してくれるプログラムのようです。
ToDoは特に使ってないのでやりませんでした。
TTFE サンプル
こちらはTrueTypeのフォントサンプルを表示してくれるようです。
実際にM5Paperに書き込んでみると・・・
サンプルプログラムは、サンプルなので普段使える実用的なプログラムはなさそうですね。
電力表示のM5Paper Ambient Monitorを使ってみる
今回はM5paper用として公開されている「M5Paper Ambient Monitor」を使わせていただきます。
Ambientはまだ使ったことが無いので、これを機に登録して消費電力のデータをラズパイからアップロードしてみます。
VSCode+PlatformioでM5Paperに書き込む操作方法を、おさらいとしてもう一度簡単に説明していきます。
下準備:Ambient登録・設定、ラズパイPython追加
下準備としてAnbientの登録とチャネルの作成をします。
それと、スマート電力メーター+Wi-SUNモジュール USBドングル+ラズパイで家庭の電力見える化装置はコチラで書きました。↓
こちらのPythonスクリプトを少し改造してAmbientに「定時積算電力量 正方向(EA)」のみ送信するように追加してみます。
Ambient ユーザー登録
まずはAmbientのユーザー登録を以下のURLから済ませてみます。
以下のような画面になりますので、右上の「ユーザー登録(無料)」から登録しましょう。
Ambient チャネルを作る
ユーザー登録が終わってログインします。
チャネルを作るボタンを押すと新しいチャネルが表に追加されました。
センサー(自分の場合はラズパイ)からAmbientに書き込む時はチャネルIDとライトキーが必要。
M5Paperで読み込む時はチャネルIDとリードキーが必要です。
とりあえずAmbientの作業はこれだけ。
Ambientかなり簡単です。
PythonでAmbientを使えるようにする
Wi-SUNモジュール USBドングルを指しているラズパイのシェルで以下のようにAmbientをpipでインストールするとPythonで使えるようになります。
$ sudo python -m pip install git+https://github.com/AmbientDataInc/ambient-python-lib.git
ラズパイ:Pythonスクリプト改造
以前書いたPythonスクリプトに追加していきます。
コチラにpower_rand_ambient.pyがAmbientを追加したスクリプト。ラズパイで消費電力を取得する場合は参考にしてくださいね。
Ambientの追加変更箇所
上のほうに以下を追加。●~●を書き換えます。
#Ambient import ambient import requests am = ambient.Ambient(●チャネルID●, '●ライトキー●')
下のほうにある#定時積算電力量正方向 メーターの数値あたりにAmbientのデータを送信する行を追加。
#Ambient r = am.send({'d1': float(intTimeKW)})
個別に書き換える箇所 InfluxDB・ Bルート
こちらはInfluxDBにデータを送信する時に使うので必要ないかもしれませんが、もし使う場合は以下を設定してください。
#influxDB from influxdb import InfluxDBClient client = InfluxDBClient(host='●IPアドレス●', port=8086, username='root', password='●パスワード●', database='●DB名●') measurement = 'power' tags = {'place': '●場所●','host': '●USBドングル名●'}
電力スマートメーターに変えた時にもらったBルートの情報を記入していきます。
# Bルート認証ID rbid = "●Bルート認証ID●" # Bルート認証パスワード rbpwd = "●Bルート認証パスワード●" # シリアルポートデバイス名 serialPortDev = '/dev/●USB固定デバイス名●'
Cronで定期実行
Cronは以前と変わらず、定期的に実行するように以下のようにしています。(pkillするのはスクリプトが終了しないので・・・)
$ crontab -e */10 * * * * pkill -f power_rand.py 3-58/5 * * * * /usr/bin/python /home/pi/script/power_rand.py
このあたり、Pythonをあまり理解していないので・・・Cronで一定時間おきにpkillしながら回しています。本当は1回取得したら終了するようにしたいけど、無理っぽいかな?
グラフ作成された
しばらく経つと↓このようなグラフが作成されました♪
これで、このグラフデータをM5PaperがAmbientにアクセス、積算電力量を取得して1日の消費電力を計算する準備ができました。
VSCode+PlatformIOでM5Paper Ambient Monitorを書き込む
下準備ができたので、プログラムをダウンロードしてM5Paper本体に書き込んでいく作業をします。
使うツールはVisual Studio CodeとPlatformIO、以下に詳しく説明してあります。
すでに上のページ↑で説明しましたので今回はおさらいということで、今回は簡単に説明していきます。
新しいウィンドウでリポジトリをクローンする
Visual Studio Codeを起動すると、いままで使っていた違うプログラムが表示されると思いますので、ファイル > 新しいウィンドウでまっさらなVisual Studio Codeを開きます。
左上のファイルアイコンのリポジトリをクローンするを押して、右上のURLを入力する欄にURLを貼り付けて、GitHubからプログラムをダウンロードしましょう。
今回は「M5Paper Ambient Monitor」の↓こちらのURLを貼り付けました。
「https://github.com/wararyo/M5Paper-Ambient-Monitor」
すると、クローンの保存場所を聞かれるのでお好きなフォルダに保存します。
プロジェクトを読み込む
リポジトリをクローンできたら、PlatformIOが認識できるようにProjectsで登録する。
Projects > Add Exising >プロジェクトのフルダを選ぶ > Open “M5Paper-Ambient-Monitor”の順に選択していく。
3つのライブラリを登録
M5Paper Ambient Monitorの場合は3つのライブラリを登録する必要がありました。
M5Paper Ambient Monitorの作者の方は特に必要なライブラリの書き込みがなかったので、もしかしたらPlatformIOが必要なライブラリを自動でインストールしてくれる?機能があるのかしら?
自分の場合はエラーが出たらその都度、必要なライブラリを探し出してインストールしました。ちょっとメンドウ。
必要なライブラリ
M5paperにはM5EPDライブラリは必須で、LovyanGFXはLCD graphics library、efontは日本語フォントを使えるようにするようです。
ライブラリ インストール
PlatformIOで②Librariesを選んで③「m5epd」「efont」を検索するとLibrariesに④M5EPDなどが表示されるのでクリックする。
ボタンを押してプロジェクトにライブラリを登録していく。
先ほど保存したフォルダを指定して
ボタンを押せばライブラリが登録される。同様にLovyanGFXとefont Unicode Font Dataもインストールする。
srcにconfig.hを作成する
srcフォルダにconfig.hファイルを作るように書かれているのでファイルを作る。
以下のように①プラスファイルアイコンでsrcフォルダの中にconfig.hファイルを作ります。
4つの情報を以下の4箇所を編集してconfig.hファイルとして保存します。
#ifndef _CONFIG_H_ #define _CONFIG_H_ #includeconst String AMBIENT_CHANNEL_ID = "チャネルID 例:31523"; const String AMBIENT_READ_KEY = "16文字のランダムな文字 例:123456789abcdefg"; const char* WIFI_SSID = "Wi-Fi名"; const char* WIFI_PASS = "Wi-Fiパスワード"; #endif
- AnbientのチャネルID:チャネル作成時に表示されている5桁の数値
- Ambientのリードキー:チャネルを作った時に表示される16文字リードキー
- Wi-FiのSSID:Wi-fiのネットワーク名
- Wi-Fiのパスワード:ネットワーク名のパスワード
自分の場合ですが、以下のようになります。
ビルドとアップロード
ここまでできたらいよいよ①ビルド↓して、ビルドがうまくいったらM5paperをパソコンと接続して②アップロード↓していきます。
アップロードして最後に「SUCCESS」が表示されたら完了!M5paperが書き変わりますのでみてみましょう。
M5Paper Ambient Monitorで消費電力を表示できた
シリアルモニタで見ると、Wi-Fiにつながりにくかった
アップロードまで終わったらシリアルモニタを見てみましょう。シリアルモニタはプラグアイコンをクリックするとターミナルの部分に表示されます。
最初はWi-Fiにつながりにくいようだったので、M5paperの裏のボタンを押してリセットしたらWifi接続されました。
そもそも電力のデータがおかしかった
表示はされたものの、なんかデータがおかしいのとうまく表示されないので・・・
M5Paper Ambient Monitorのsrc > main.cppのC++スクリプトを少し変更してみます。
使用電力グラフ表示 なんとか表示されたけど?
スクリプトをいじくり回して、なんとか表示されました。↓
けどなんかおかしい・・・1/26の消費電力が無いのでデータを見てみると、1/26 0時にデータが無いのでパスされたみたい。
電力データをAmbientに送るPythonスクリプトが完全なものでないので、スマートメーターからデータを取得できないときもあるので正常に表示されないみたい。
まぁ、一応表示されるということで完成とします。(適当すぎ)
1日の消費電力 15Kwhは少ない?多い?
ウチは家族三人で1日の消費電力はMaxで15Kwh、最高に少なくて7Kwhのようでした。
月の電気代は1万円前後、ゲームとして節約を楽しんでいますが、節約できてないほうですか?できてるほう??微妙に普通なところがちょっと面白くないかなぁ。
M5Paper Ambient Monitor作者の方は1Kwh~7Kwhほどなので一人暮らしな方でしょうか?それともすごく節約してるのかな?家族と暮らしていたらスゴイ少ない消費電力ですね。
M5Paperの使い道 まとめ
今回はM5PaperでM5Paper Ambient Monitorを使わせていただいて、1日毎の家庭の消費電力を棒グラフで表示するようにしました。
本当はもっと良いアイデアがあれば面白いのですが、なかなかM5Paperを使ったアイデアが浮かびませんでした。
とりあえずは消費電力を表示させて、またM5Paperを使って遊んでみたくなったら改造してみます。
コメント