M5Paperで遊んでみる M5Paper Ambient Monitorで毎日の消費電力表示

電子ペーパーでマイコンボードESP32搭載のM5Paperを何に使おうか考えてGithubをはいかいしていたところ、

M5Paper Ambient MonitorというM5Paperに1日ごとの消費電力を表示してくれるプログラムがありましたので使わせていただきます。

前回の記事はこちら↓

Banggoodより、M5Stackから出た電子ペーパー(E-paper)のM5paperがやってきました。 その他にもM5 Core2やM5 Fireなどもやってきました。海外通販Banggoodならば若干価格も安いし技適マークなどは同じで手に入れやすくなっています。

M5Paperのスペックは以下、4.7インチの電子ペーパーがあって、Groveポートも3つあるのでアイデア次第でいろんな使い方ができるガジェットです。

M5Paper
M5Paper
M5StackM5Paper
ディスプレイ 4.7インチ(画素960X540) IT8951
解像度 / グレースケール 235ppi / 16階調
容量 8MB
Wi-Fi / Bluetooth 802.11b/g/n / V4.2
バッテリー 1150mAh
接続 USB Type-C
サイズ 116 x 66 x 10 mm
重量 86g
その他 Grove端子HY2.0-4P x 3

M5Paperでなにができるのか?

Githubに公開されているM5Paper用のプログラムは少ないのですが、いくつか使えそうなプログラムもありますので紹介します。

Flip-Pics

シンプルな画像ビューワー・MicroSDに保存した画像表示

M5Paper Carousel Photo. Contribute to wizche/flip-pics development by creating an account on GitHub.

m5paper_weather_display

天気予報

Show the weather. Contribute to Katsushun89/m5paper_weather_display development by creating an account on GitHub.

M5Paper Ambient Monitor

M5StickC Wi-SUN HATで取得した消費電力をM5Paperで表示。

Contribute to wararyo/M5Paper-Ambient-Monitor development by creating an account on GitHub.

paperweather

シンプルな天気予報

M5Paper Weather Display - Fetch weather once and hour display and otherwise idle - GitHub - mil/paperweather: M5Paper Weather Display - Fetch weather once and h...

m5paper-dashboard

時刻・Co2・温湿度・日付を表示するダッシュボード(別途ラズパイで(Co2取得)・ENV温湿度センサー必要)

Dashboard for room environment monitoring. Contribute to estshorter/m5paper-dashboard development by creating an account on GitHub.

M5Paper draw test(日本語)

M5Paperでのお絵かきテストプログラム。

M5Paper drawing test. Contribute to zsuzuki/M5PTest development by creating an account on GitHub.

m5Panel for OpenHAB

ホームオートメーションソフトのOpenHABでIot化した機器の状態や操作をM5Paperで可能にする。

m5paper panel for OpenHAB. Contribute to cyrilpawelko/m5panel development by creating an account on GitHub.

涼宮ハルヒの消失 for M5Paper

例のコンソールを表示するプログラムのようです。

Contribute to inajob/m5paper-sos development by creating an account on GitHub.

M5PaperSchedule(日本語)

M5PaperにGoogleカレンダーのスケジュールを表示する。

Contribute to akita11/M5PaperSchedule development by creating an account on GitHub.

M5Paper_RTCSetup

M5PaperのRTCを設定するスケッチ

Contribute to BouKiCHi/M5Paper_RTCSetup development by creating an account on GitHub.

むむむ、いまのところあまり面白そうな使い方はないかな?やはり自分でアイデアを出して作るしかなさそう。

もう少し生活に不便なものがあればアイデアがでそうだけど、いまのところなし。

M5Paperを書き替えて遊んでみる

まずはM5Stackから出ているサンプルプログラムを試してみます。

M5Stackのサンプルプログラム

こちらは最初に入っていたプログラムで、元に戻したい時に書き込みます。

Contribute to m5stack/M5Paper_FactoryTest development by creating an account on GitHub.

ほかにもサンプルプログラムはカレンダーやTodoもあるので試してみます。

計算機 サンプル

普通の計算機として使えるようになります。

Contribute to m5stack/M5EPD_Calculator development by creating an account on GitHub.

M5Paper

Todo サンプル

Contribute to m5stack/M5EPD_Todo development by creating an account on GitHub.

こちらは?Microsoft To DoのTodoを表示してくれるプログラムのようです。

Microsoft To Do

ToDoは特に使ってないのでやりませんでした。

TTFE サンプル

こちらはTrueTypeのフォントサンプルを表示してくれるようです。

Contribute to m5stack/M5EPD_TTFExample development by creating an account on GitHub.

実際にM5Paperに書き込んでみると・・・

サンプルプログラムは、サンプルなので普段使える実用的なプログラムはなさそうですね。

電力表示のM5Paper Ambient Monitorを使ってみる

今回はM5paper用として公開されている「M5Paper Ambient Monitor」を使わせていただきます。

Ambientはまだ使ったことが無いので、これを機に登録して消費電力のデータをラズパイからアップロードしてみます。

VSCode+PlatformioでM5Paperに書き込む操作方法を、おさらいとしてもう一度簡単に説明していきます。

下準備:Ambient登録・設定、ラズパイPython追加

下準備としてAnbientの登録とチャネルの作成をします。

それと、スマート電力メーター+Wi-SUNモジュール USBドングル+ラズパイで家庭の電力見える化装置はコチラで書きました。↓

最近は電気の自由化にともない、電力会社以外の楽天やau・ソフトバンクなども電力供給サービスをスタートしていて、電気をたくさん使用している家庭では電力会社を変更するとお得になる場合もあるようですね。 新しい電力会社と契約するとき必ず変更されるのが従来の電気メーターから、電気スマートメーターに変更されます。 ...

こちらのPythonスクリプトを少し改造してAmbientに「定時積算電力量 正方向(EA)」のみ送信するように追加してみます。

Ambient ユーザー登録

まずはAmbientのユーザー登録を以下のURLから済ませてみます。

以下のような画面になりますので、右上の「ユーザー登録(無料)」から登録しましょう。

M5Paper Ambient Monitor

Ambient チャネルを作る

ユーザー登録が終わってログインします。

チャネルを作るボタンを押すと新しいチャネルが表に追加されました。

センサー(自分の場合はラズパイ)からAmbientに書き込む時はチャネルIDとライトキーが必要。

M5Paperで読み込む時はチャネルIDとリードキーが必要です。

M5Paper Ambient Monitor

とりあえず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 Monitor

こちら1桁違っていたので、後日修正(x0.1)しました。

これで、このグラフデータをM5PaperがAmbientにアクセス、積算電力量を取得して1日の消費電力を計算する準備ができました。

VSCode+PlatformIOでM5Paper Ambient Monitorを書き込む

下準備ができたので、プログラムをダウンロードしてM5Paper本体に書き込んでいく作業をします。

使うツールはVisual Studio CodeとPlatformIO、以下に詳しく説明してあります。

PHPやJavascript、ラズパイにSSH接続にVisual Studio Codeを使っているついでに、そろそろArduino IDEを卒業して代わりにVSCodeにPlatformIO IDEを導入して使ってみることにします。 最近はM5StackやM5Paperが増えたので、ESP32やマイコンボ...

すでに上のページ↑で説明しましたので今回はおさらいということで、今回は簡単に説明していきます。

新しいウィンドウでリポジトリをクローンする

Visual Studio Codeを起動すると、いままで使っていた違うプログラムが表示されると思いますので、ファイル > 新しいウィンドウでまっさらなVisual Studio Codeを開きます。

M5Paper Ambient Monitor

左上のファイルアイコンのリポジトリをクローンするを押して、右上のURLを入力する欄にURLを貼り付けて、GitHubからプログラムをダウンロードしましょう。

M5Paper Ambient Monitor

今回は「M5Paper Ambient Monitor」の↓こちらのURLを貼り付けました。

「https://github.com/wararyo/M5Paper-Ambient-Monitor」

すると、クローンの保存場所を聞かれるのでお好きなフォルダに保存します。

M5Paper Ambient Monitor

例ではDropbox\Codeの中に保存しています。

プロジェクトを読み込む

リポジトリをクローンできたら、PlatformIOが認識できるようにProjectsで登録する。

Projects > Add Exising >プロジェクトのフルダを選ぶ > Open "M5Paper-Ambient-Monitor"の順に選択していく。

M5Paper Ambient Monitor

3つのライブラリを登録

M5Paper Ambient Monitorの場合は3つのライブラリを登録する必要がありました。

M5Paper Ambient Monitorの作者の方は特に必要なライブラリの書き込みがなかったので、もしかしたらPlatformIOが必要なライブラリを自動でインストールしてくれる?機能があるのかしら?

M5Paper Ambient Monitor

Buildするとエラーになるので、必要なライブラリを探してインストールしていく作業が必要だった。

自分の場合はエラーが出たらその都度、必要なライブラリを探し出してインストールしました。ちょっとメンドウ。

必要なライブラリ

M5paperにはM5EPDライブラリは必須で、LovyanGFXはLCD graphics library、efontは日本語フォントを使えるようにするようです。

Contribute to m5stack/M5EPD development by creating an account on GitHub.
SPI LCD graphics library for ESP32 (ESP-IDF/ArduinoESP32) / ESP8266 (ArduinoESP8266) / SAMD51(Seeed ArduinoSAMD51) - GitHub - lovyan03/LovyanGFX: SPI LCD graphi...
efont Font Data for Arduino. Contribute to tanakamasayuki/efont development by creating an account on GitHub.

ライブラリ インストール

PlatformIOで②Librariesを選んで③「m5epd」「efont」を検索するとLibrariesに④M5EPDなどが表示されるのでクリックする。

M5Paper Ambient Monitor

Add to Projectボタンを押してプロジェクトにライブラリを登録していく。

M5Paper Ambient Monitor

先ほど保存したフォルダを指定してAddボタンを押せばライブラリが登録される。

M5Paper Ambient Monitor

同様にLovyanGFXとefont Unicode Font Dataもインストールする。

M5Paper Ambient Monitor

srcにconfig.hを作成する

srcフォルダにconfig.hファイルを作るように書かれているのでファイルを作る。

以下のように①プラスファイルアイコンでsrcフォルダの中にconfig.hファイルを作ります。

M5Paper Ambient Monitor

4つの情報を以下の4箇所を編集してconfig.hファイルとして保存します。

#ifndef _CONFIG_H_
#define _CONFIG_H_

#include 

const 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

M5Paper Ambient Monitor

  • AnbientのチャネルID:チャネル作成時に表示されている5桁の数値
  • Ambientのリードキー:チャネルを作った時に表示される16文字リードキー
  • Wi-FiのSSID:Wi-fiのネットワーク名
  • Wi-Fiのパスワード:ネットワーク名のパスワード

自分の場合ですが、以下のようになります。

M5Paper Ambient Monitor

ビルドとアップロード

ここまでできたらいよいよ①ビルド↓して、ビルドがうまくいったらM5paperをパソコンと接続して②アップロード↓していきます。

M5Paper Ambient Monitor

アップロードして最後に「SUCCESS」が表示されたら完了!M5paperが書き変わりますのでみてみましょう。

M5Paper Ambient Monitorで消費電力を表示できた

シリアルモニタで見ると、Wi-Fiにつながりにくかった

アップロードまで終わったらシリアルモニタを見てみましょう。シリアルモニタはプラグアイコンをクリックするとターミナルの部分に表示されます。

M5Paper Ambient Monitor

最初はWi-Fiにつながりにくいようだったので、M5paperの裏のボタンを押してリセットしたらWifi接続されました。

そもそも電力のデータがおかしかった

表示はされたものの、なんかデータがおかしいのとうまく表示されないので・・・

M5Paper

M5Paper Ambient Monitorのsrc > main.cppのC++スクリプトを少し変更してみます。

使用電力グラフ表示 なんとか表示されたけど?

スクリプトをいじくり回して、なんとか表示されました。↓

M5Paper

けどなんかおかしい・・・1/26の消費電力が無いのでデータを見てみると、1/26 0時にデータが無いのでパスされたみたい。

M5Paper

電力データをAmbientに送るPythonスクリプトが完全なものでないので、スマートメーターからデータを取得できないときもあるので正常に表示されないみたい。

まぁ、一応表示されるということで完成とします。(適当すぎ)

1日の消費電力 15Kwhは少ない?多い?

ウチは家族三人で1日の消費電力はMaxで15Kwh、最高に少なくて7Kwhのようでした。

月の電気代は1万円前後、ゲームとして節約を楽しんでいますが、節約できてないほうですか?できてるほう??微妙に普通なところがちょっと面白くないかなぁ。

M5Paper Ambient Monitor作者の方は1Kwh~7Kwhほどなので一人暮らしな方でしょうか?それともすごく節約してるのかな?家族と暮らしていたらスゴイ少ない消費電力ですね。

M5Paperの使い道 まとめ

今回はM5PaperでM5Paper Ambient Monitorを使わせていただいて、1日毎の家庭の消費電力を棒グラフで表示するようにしました。

本当はもっと良いアイデアがあれば面白いのですが、なかなかM5Paperを使ったアイデアが浮かびませんでした。

とりあえずは消費電力を表示させて、またM5Paperを使って遊んでみたくなったら改造してみます。

M5Paper

M5Paper

スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。