前回までの記事でかろうじてLinuxが秋月SoC基板で動くようにはなりましたが、今後の作業で使用するLinuxはYocto Project 4.0 Kirkstone上でみつきんさんの/meta-am3352-akiを使わせていただくことにしました。3GモデムやSPIフラッシュまでサポートされていて申し分ありません。以下のみつきんさんの記事を参考にさせていただきました。
- 秋月の「アレ」をYoctoProjectで遊ぶ(u-boot起動まで)
- 秋月の「アレ」をYoctoProjectで遊ぶ(Linux起動まで)
- 秋月の「アレ」をYoctoProjectで遊ぶ(SPIフラッシュ)
今回はこのハードウェアを活かしたアプリケーションを載せてみます。
スマートメーターから瞬時電力値を取得する
秋月SoC基板にはWi-SUNのモジュールが搭載されています。これを使うと電力メーター情報発信サービス(Bルートサービス)が利用できるようです。
Wi-SUNを使用してスマートメーターの情報を取得するまでの流れやプログラムはいくつか公開されていますが、今回は@kanon700さんの記事を参考にしています。
まずはスマートメーターにアクセスするためのIDとパスワードが必要になります。東京電力の場合Webから申し込んで数日でIDが郵送されてきました。
記事にあるプログラムはPythonで書かれているのでまずはPython3を追加したイメージをYoctoで作ります。
他にも含めたいものがあったので、build/conf/local.confに以下の記述を追加してbitbake core-image-minimalでビルドしました。
# Permit root login without a password
EXTRA_IMAGE_FEATURES += " debug-tweaks"
# Enable SSH access
EXTRA_IMAGE_FEATURES += " ssh-server-dropbear"
# Python3
CORE_IMAGE_EXTRA_INSTALL += " python3 python3-pip"
# ntp
CORE_IMAGE_EXTRA_INSTALL += " ntp ntpdate"
# systemd
DISTRO_FEATURES += " systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
VIRTUAL-RUNTIME_init_manager = "systemd"
VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
すでに同様に試されたかたの情報があり、その修正を行った上でPythonプログラムを動かしたところ電力量が表示されました。
サーバ監視を組み込む
秋月SoC基板も立派なサーバですのでサーバ監視を行うことにしました。私はMackerelというはてなの監視サービスの無料版を使っています。無料版はサーバが5台まで、ログ保持期間が1日などの機能制限はありますが、このブログを立ち上げているConoHa VPSサーバや自宅NanoPiサーバもMackerelで監視していて、障害が起こった場合はアラートが届きます。Raspberry Piなどでも使えるarmのパッケージも公開されています。
Raspberry Piの監視設定の事例はいくつかありますが、今回は以下の記事を参考にして設定を行いました。
これで秋月SoC基板の稼働監視が行えるようになりました。ハングアップやディスク容量の枯渇、ネットワークの切断など秋月SoC基板に異常が発生したらアラートメールが届きます。
瞬時電力値をメトリクスとして監視グラフに追加する
Mackerelの機能として独自で設定したメトリクスを監視することもできます。瞬時電力量の情報をメトリクスとして取り込むことで、グラフが表示できます。無料版では1日分しか表示できませんが、実験では十分です。
今回はMackerelのAPIを利用して、電力量取得のプログラムに組み込みました。Pythonのライブラリが公開されていましたのでこちらを使わせてもらいました。
Pythonでスマートメーターの情報を引っこ抜くの記事にあるSmartMeter.pyをベースにMackerel APIに対応したSmartMeterMackerel.pyを作りました。ソースファイルはGithub.comにあげておきました。
まだデバック中なので、いろいろな出力がでていますが、Bルートの仕組みを知るための勉強にもなります。
実際に動き出すとこのようなグラフが表示されます。これで外出先からでもMackerelの監視画面で自宅の電力使用状況を知ることができます。
今後の応用
思わぬところからYoctoによる組み込みLinuxのカスタマイズ方法とBルートという新たな知見を得ることができました。
また、Bルートのデータで生活行動がある程度わかるので安否確認に使えるなあと思ったりしています。秋月SoC基板は3G+Wi-SUNなのでこの用途には理想的かもしれません。