手軽に電力使用量を計測したいなぁと思って周りを見回すと、富士通コンポーネントのスマート電源コンセントFX-5204PSが落ちていました。発売時期はかなり前ですが、まだ継続して生産されている模様です。
FX-5204PSにはUSB Bメスポートが付いています。そこからシリアルか何かで使用量が吐き出されているのかな、と思いきや、専用のデバイスドライバーが必要だということが判明。一瞬使うのをやめようかと思ったけれど、検索してみると2011年(本稿から5年以上前)にすでにデバイスドライバーを書いた人がいました。
OpenBSDか...。しかも知っている人が作者の模様。
他に検索してみると、
SEILか...。OpenBSDからの移植のようです。
でも僕が使いたいのはLinuxとかMacとかなんです。OS依存のドライバーを作り、継続してメンテナンスしていくことも困難だと考えると、ここは手軽にユーザー空間USBライブラリで使うのが良いと判断しました。OpenBSD版ドライバーを書いた人にソースコードの内容をあれこれ聞きながらPyUSBで書いてみたのがFX5204PSモジュールです。Pythonなのでいろんなプラットホームで動作します。OS X(macOSは未テスト)とかでも。
同時に二つ以上のデバイスが接続された場合を考慮していないなど、少し手抜きですが当初の目的は達成しました。
pygame
でいい加減に作ったビジュアライザーで状態を表示すると以下のような感じになります。

FX5204PSモジュールで取得できる情報はおおよそOpenBSDドライバーと同じで、電圧、周波数、温度、コンセントごとの消費電力(瞬時値、平均値(デフォルトで5秒でリセット)、最大値(デフォルトで5秒でリセット))となっています。
バグなど見つけた方はgithub経由で報告いただければ可能な範囲で対応したいと思います。