TP-LINK Tapo P105/P110M のKlapプロトコル対応版 (ESP32)

PC向けのKlapプロトコル対応版をESP32(Arduino)へ移植してみた。ESP32で電源制御や電力モニターしたい人には役に立つかも。

TP-LINK Tapo P105/P110M のKlapプロトコル対応版 (Windows/Linux)

【対応ファームウェア】
P110M: 1.1.0 Build 231009 Rel.155719 以降
P105: 1.4.1 Build 20231103 Rel. 36519 以降

【概要】

開始処理を行う。戻り値は無視して良い。

終了処理を行う。

プラグデバイスのスイッチを制御する。on=trueならオンしon=falseならオフする。成功時はtrue、失敗時はfalseを返す。

デバイス情報を取得する。成功時はinfoに情報を格納しtrue、失敗時はfalseを返す。

プラクデバイスの電力モニター情報を取得する。成功時はinfoに情報を格納しtrue、失敗時はfalseを返す。

【ダウンロード (Arduino zip library)】
ライブラリ形式にしたのは久しぶり。かも?(-_-;)

tapo2-esp32.zip

【修正】
2024-10-08
crypt.hのrandom()の不具合を直すのを忘れていたので更新したがコンパイルエラーになってしまうので再度更新。今更だけど直さなくてもよかったのかも...

2024-01-13
昨日からP105を回し続けているがエラーもなく別端末からの排他制御エラー(-1012)も発生しなくなったようだ。ということは現状でOKということかな?ふと気になって参考にさせて頂いたplugp100で試してみたらP105の電源オンオフは出来なかった。もしかして世界初のP105のKlapプロトコル対応?...それはともかく昨日はお天気も良くロケットも気持ちよさそうに飛び立っていって良き日であった。(^o^)
と思っていたらいきなりP105がエラーばかり起こして何もできなくなった。TAPOアプリからの操作も出来ない。でも暫く待ってたら復旧した。普段はそう頻繁にオンオフすることはないだろうという前提であれば大丈夫なのかな...(-_-;)

2024-01-12
P105の挙動が怪しい。HTTPリクエストの送信処理を変更してみたところだいぶましにはなったような気もするがごくまれにP105がハングアップしてしまうことがある。P105にはタイミングバグがあるのかな?もしそうだとすると厄介だ。P110Mは一日中ぶん回しても問題ないのに...
P105の-1301エラーは処理遅延の警告みたいであるが頻繁に出てウザイので無視するように修正。

2024-01-11
昨日はうまく動作していたP105が今日はなぜか-1012エラーで動かない...orz
そういえばP105のon/off操作にはterminalUUID指定が必要なことを思い出し実装を追加してみたところうまく動作するようにはなったが端末Aからon/off操作した後に端末Bからon/off操作しようとしても2分経過しないと-1012エラーになってしまう。なぜだろう?
とりあえず動作するようにはなったので再公開。(-_-;)
ちなみにP105はHWの処理能力が足りないのか不安定っぽい。これから購入する人はP110Mのほうが安定してるのでお勧め。

2024-01-10
mbedtlsの使い方のミスによるメモリーリークの修正、及び、通信毎にソケットを接続切断するように修正。
★★★昨日までにDLした方は入れ替えをお願いします。★★★

2024-01-09
ESP32のWiFiClient以外にも対応できるように汎用化してみた。
下記のようにコンストラクタにClientクラスの派生クラスを指定する。

【サンプル・スケッチ】

【ライブラリ】