TP-LINK TAPO P100/P105/P110をLinux/Windowsから直接制御する

ESP32用に作成したライブラリをLinux/Windows用に移殖しコマンドライン・アプリとして実行できるようにしてみた。

TP-LINK TAPO P100/P105をESP32から直接制御する

ESP32用からの変更点は、次の通り。
・JSONライブラリをArduino_JSONからPC向けとしては有名なnlohmann-jsonへ変更。
・HTTPライブラリをESP32/library/HTTPClientから独自作成の簡易型HTTPライブラリへ変更。
・MBEDTLSライブラリは、最新版(2.24.0)に差し替え。

base64ライブラリだが現在DL可能な最新版(1.2.1)については何か問題があるようだ。encode&decode或いはdecode&encodeにより元データが正確に復元できないことがある。パディングが不正になることを発見したのでデータバイト数の計算ミスなのかもしれない。結局、ESP32に含まれていたlibb64でないと正しく動作しなかったのでそのまま流用させてもらった。

しかし、未だにmakeの呪文のような記述方法は全く理解できない。とりあえず私の開発環境では動いているのだが何か間違ってるかも...

【修正】
2023-09-15
P110Mの電力モニター機能(getEnergyUsage)に対応。

2023-09-14
httpclient.hの不具合により[Tapo P110M]が動作しなかったため修正。

【ダウンロード(Download)】
tapo app
libraries

【フォルダ構成】
tapo/
+ json-develop/ … nlohmann-jsonの最新版(3.9.1)
+ libb64/ … ESP32に含まれているものを同梱
+ mbedtls-2.24.0/ … mbedtlsの最新版(2.24.0)
※ libb64は、最新版(1.2.1)では動作しないことに注意すべし!

【コンパイル(Compile)】
Downloadした圧縮ファイル2個を適当なフォルダ内に展開し次の事前準備を行った後にmakeを実行する。

【Linux – コンパイルの事前準備】
mbedtls-2.24.0に移動後、下記コマンドを実行しmbedtlsライブラリを生成する。

make no_test

【Windows(MinGW) – コンパイルの事前準備】
mbedtls-2.24.0に移動後、下記コマンドを実行しmbedtlsライブラリを生成する。

mingw32-make CC=gcc no_test WINDOWS=1

※makeが途中で失敗してもlibrary/libmbedcrypt.aが生成されていればOK。それしか使わないから...(-_-;)
※うまくいかない場合は、最後の参考情報を見て自己解決するべし。

【コマンドライン・アプリ(Command-Line App)】

【ライブラリ(Library)】

【参照ライブラリ】
libb64
JSONライブラリ – nlohmann/json
ARMmbed/mbedtls

【参考情報】
mbedtls – Knowledge Base / Compiling and Building

【関連投稿】
TP-LINK WiFiスマートプラグをESP32(Arduino)から制御する
TP-LINK WiFiスマートプラグをLinux/Windowsから直接制御する
TP-LINK TAPO P100/P105をESP32から直接制御する
TP-LINK TAPO P100/P105をLinux/Windowsから直接制御する

“TP-LINK TAPO P100/P105/P110をLinux/Windowsから直接制御する” への2件の返信

  1. 貴重な情報、ありがとうございます。
    TP-LINK TAPO P105の制御がPython行え、RaspberryPiの停止と再起動が安全に遠隔で行うことが出来るようになりました。

    1. コメントありがとうございます。
      当サイトがお役に立てたようで嬉しく思います。って、なんか天皇陛下様の言葉尻みたいな?(笑)
      Pythonはなんとなく性格的に合わないのとプログラミングの基本を学んだり組み込み向け用途としてはPythonというよりもCやC++のほうが適切と考えているためついついポーティングしてしまいがちですが、ポーティングするたびにPythonってコンパクトにプログラムが作れるんだなといつもながら感心させられてしまいます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください