SwitchBot スマートプラグミニと Raspberry Pi Pico W を組み合わせて、お手軽なワットチェッカーを作成しました。両者合わせて、約3000円のコストです。
デバイス
Raspberry Pi Pico W
Raspberry Pi Pico W に、値の取得や可視化を担当させます。最近になって Wi-Fi および Bluetooth の両対応版のファームウェアが提供されるようになったので実現できました。
SwitchBot スマートプラグミニ
本来はアレクサから操作したり、 SwitchBot の提供する管理API やアプリケーションで操作するのですが、Bluetooth でも情報を得ることができるようになったのでこのデバイスを選択しました。
システムの構成
Raspberry Pi Pico W でBluetoothというと、多くの場面でペリフェラル側で紹介されています。今回はデバイスに接続する側、セントラルになるので、この点に注意が必要です。また Pico W で Webサーバーを動かし、センサー情報をブラウザに向けて提供するという役割を持ちます。
Bluetooth での読み取りについて
同じようなことを思う方が既にいて、Bluetooth での読み取りについて参考にさせてもらいました。
注意点として、Raspberry Pi Pico Wでは MicroPython を使用していて、Bluetoothのライブラリ利用が制限がありました。 ubluetooh モジュールを使用して実装する必要があります。
このモジュールでセントラルとして動かすためには、下記のページを参考にしました。
グラフ化
あまり見栄えがするものではないですが、こんな感じで動いています。グラフはリアルタイムで更新されます。ここでは Raspberry Pi 4 を電源投入して、ベンチマークを動かすというところをやって変動を観測していました。ベンチマーク中は 4.5W 付近になるようですね。
※ アニメ画像は早回しをしているので、実時間ではない点に注意してください
プログラムについて
今回作成したものは GitHub にて公開しています。作りが甘いのでそのまま使える場面は少ないかもしれませんが、目的に合わせて作りこむベースとするくらいはできるかなと思っています。
Webサーバーの機能には、 Microdot を使用しています。Flask みたいな感じで扱える点は大変よかったです。また WebSocket も使えるので、センサーの値を表示するようなリアルタイム性があるものに使える点もよいです。
今回の背景について
ここからは余談です。ワットチェッカーが欲しいと思ったのは新しいPCを組み立てて、その消費電力をチェックしたいと思ったからです。BIOSなどでパラメーターをいじってみて様子を観察したかったのです。
スマホアプリを使えば消費電力の確認ができますし、WebからもAPIで情報をとることができるようです。それらを使えば簡単に消費電力のモニタリングができるのに、BluetoothやらWebサーバーやらをコーディングするという大変な道を進んできました。
理由は SwitchBot スマートプラグミニを Wi-Fi 接続して、外部からのアクセス可能なようにはしたくなかった・・・という点です。ただこれだけです。この機材を自宅以外に持ち歩いて、検証デバイスにつないで消費電力を測る、ということも簡単にできるといいなぁという思いもありました。
また、Raspberry Pi を使えば Bluetoothのモジュールもいくつかを選べますし、そもそもWebサーバの機能も簡単に実現できます。なのに、Pico-W を選んだのはコンパクトさです。あとは、若干の好奇心です。
手間のことを考えると、グラフもちゃんと書ける、リアルタイムで処理できるワットチェッカーを選んで購入するほうが一番近道ですが、お安く済ませるにはこういう方法もあるということで、参考になれば幸いです。
コメント