読者です 読者をやめる 読者になる 読者になる

taiyoh's memorandum

@ttaiyoh が、技術ネタで気づいたことを書き溜めておきます。

電力モニター「はやわかり」に記録されているデータをgoで吸いだしてhogehogeする

 数年前にイギリスから発売された製品に「OWL+USB」というのがあります。ブレーカーから延びてるケーブルに同梱されている送信機についたクリップを取り付け、それを無線で飛ばして受信機で受け取った後、表示・記録する、というものです。各国対応版となっており、当然日本の電圧にも対応しています。日本の代理店を介した製品名は「はやわかり」です。

電力モニター
電力モニター
2 Save Energy Ltd
売り上げランキング : 44157


Amazonで詳しく見る
by G-Tools
 これをraspiとつないで、データを取り出してサーバに送るとかなんか色々できたらいいなぁ、と思っていたのですが、提供されてるLinux版のツールが軒並み動かず、githubに転がってる野良ツールも期待した動作をしてくれないので、自分で書きました。
 → taiyoh/go-cm160 · GitHub
 参考にしたのは、Cで書かれた野良ツールの「eagle-owl」というものです。これをリファレンスにして、同じメッセージがのやりとりができればデータが取得できるはずで、あとの処理はまた別のレイヤーに任せる形にしよう、という考えの下進めていきました。内部でlibusbとやりとりするgo-libusbというライブラリも使っていて、これも一緒にインストールしておく必要があります。

# libusbの開発パッケージもインストールしておく
$ go get github.com/taiyoh/go-libusb
$ go get github.com/taiyoh/go-cm160

 テストとか全然用意できてなくて申し訳ないですが、実機を伴うのはとてもやりづらい。。。下にこれを使ったツールのサンプルを添えておきます。

 Waitメソッドの引数のコールバックに任意の処理を入れるような形にすれば、用途を限定せずにいろんなことができるようになるかな、と思いました。また、電圧も外から入力できるようにしたので、国が変わる度にワット数の計算が合わなくなることも避けられるはず。。。