
SwitchBotのスマートプラグをMatter対応にする [ESP32]
さてESP32記事の三弾目です。今回はSwitchBotのスマートプラグのファームウエアを入れ替えてMatter対応にしたいと思います。
なぜSwitchBotのスマートプラグ?と思った方もいらっしゃるかもしれませんが、このスマートプラグ(型番W2001401)、ESP32-C3が中に入っているのです。で、ファームウエアをオープンソースの物に入れ替えたり、自分でプログラムしたりすることができるわけです。
今回入れ替えるファームウエアは、前回に使ったESPHomeとは別の物でTasmota と言います。
TasmotaはESPHomeのようなローコード・ツールではなくて、多機能一体型のファームウエアです。簡単なテンプレートでGPIOなどの設定をすれば、それだけで各種の機能が動くようになります。多機能なだけあって、WEBサーバーから設定を変えたり、簡易言語を内蔵していたりします。今回活用するMatter対応もその機能の中の1つです。
ファームウエアの入れ替えに苦労する
で、ファームウエアを入れ替える方法ですが、大きく分けて2つの方法があります。1つはSwitchbOTA と言うソフトをPCで動かしてファームウエアのアップデートをだましてしまう方法。もう一つは分解してシリアルポートからアップデートする方法です。
一見、SwitchbOTAの方が簡単そうに聞こえますが、このホームページを見てみると、かなり設定がややこしくて、見ただけで怖気づいてしまいました。それにAmazonのレビューを見ていると中のコンデンサが熱?で飛んでしまう問題があったようで(古いヴァージョンだけかも?)、それもついでに付け直してしまおうと考えたわけです。
なので、当初、分解してみようとしたのですが、、、
硬い!プラスチックの分解ツールでは歯が立たず、マイナスドライバーで試しても硬かったです。(どうも超音波溶着と言う溶着方法らしい)いい加減壊しそうなので諦めました。
で、意を決して、switchbOTAでアップデートすることに方針変更です。
switchbOTAにも苦労する
ええと、基本的にはこのページにある解説通りで(一部をのぞき)いいのですが、色々あるので要点と、うまくいかなかった所だけ説明します。まず必要なものは
スマートプラグ本体
PC(node.jsが動く環境)
ルーター(ホスト名とIPアドレスの設定ができるもの)
スマホ
Bluetoothコマンドを送れるアプリ(nRF Connect for Mobile?PC上の物でも可)
SwitchBotアプリ
次に流れとしては
SwitchBotアプリでプラグを自分のWifiに参加させる
ルーター上で www.wohand.com と wohand.com を自分のPCのIPアドレスに設定
PCでnode.jsを立ち上げる
スマホからBluetoothコマンドを送れるアプリで、プラグにファームウエアのアップデートをするようにコマンドを送る
するとPCからTasmotaの簡易版(古いヴァージョン?)がダウンロードされる
TasmotaをWifiに参加させ、最新ヴァージョンにアップデート
と言った感じです。要点だけならスッキリしているかもしれませんが、結構面倒でしたし、上手く行かない所もありました。
その上手く行かなかったところは、最後のTasmotaのアップデートの所でした。Tasmotaの最近のヴァージョンはサイズが大きくなりすぎて、ESP32-C3のフラッシュROMの標準レイアウトには入りきらないのです。そのため一度レイアウトを変更するツールをTasmotaにアップロードして実行するのですが、Tasmotaのヴァージョンが古すぎて実行できなかったのです。かと言って古いTasmotaのままではMatterの機能はないので、今回の目的には不十分。
色々switchbOTAのissueやら何やら検索しても解決方法が見つからなかったのですが、Tasmotaの方で以下のissueのを見つけました。
この中で、親切にも小さいファイルサイズの特別なTasmotaのバイナリを作ってくれている方がいて、そのバイナリを使ってレイアウト変更ツールを実行した所、無事に変更することができ、最終的にTasmotaの最新ヴァージョンへアップデートも上手くすることができたのでした。
Matterで使ってみる
Tasmotaが動き出したので、次はテンプレートを入れてGPIO等を設定します。下のページの設定をコピーして、TasmotaのWebサーバーから設定します。
そしてWebサーバーからMatterの設定をOnにしてリスタートすると、WebサーバーにMatterのQRコードが表示されます。

おっと、QRコードが崩れていますが、、、まあペアリングのコードが表示されているので、それを使えます。今回はうちで稼働しているHome AssistantにMatterで登録してみました。(Tasmotaは直接Home Assistantに対応しているが、わざわざMatter経由で登録)

無事表示されています。スイッチも無事動くようです。成功!
終わりに
いかがだったでしょうか?SwitchBotのスマート・プラグ以外にもTasmotaが動作するESP32の製品はここから探せるので、他の物に載せても面白いですね。