monolithic kernel

TP-Link Tapo P105 を Android から直接操作する

TP-Link の Tapo P105 というスマートプラグを専用アプリではなくプログラムから直接制御している方がいたのだが、それを Android スマートフォンからやりたくなったのでやってみた。

元の記事では Python のスクリプトで動かしていたが、PC ではなくスマートフォンというのもあって、もうちょっと依存関係を少なく簡単に動かせるようにしたかった。調べていくと、Tapo スマートプラグを制御するプログラムの Go 実装を見つけたので、これをベースに冒頭の記事を参考にして Tapo P105 向けのパッチを当てた。

パッチを当てたバージョンは、バイナリも含めて GitHub に上げてある。

今まで知らなかったのだが、Android では単に linux 向けにビルドしたバイナリが普通に動くらしい。今回試したのは一般的な Snapdragon のスマートフォンだったので、GOARCH=arm64 GOOS=linux を選択したらまったく問題なく動いてくれた。Go なのでバイナリを置いて実行するだけ、簡単。

といっても標準だとプログラムを起動する環境がないと思われるので、そのあたりは準備する必要がある。今回は F-Droid 経由で Termux というアプリを利用した。Termux:Tasker という Tasker プラグインもあって、これを使うと MacroDroid からビルドしたプログラムを起動できた。

これらを組み合わせて結局何をしたのか軽く紹介すると、スマートフォンのバッテリー残量管理を自動化することができた。具体的には、家で電源に繋ぎっぱなしにしている古いスマートフォンで、バッテリーの劣化を抑えたかったので、バッテリーが20%まで減ったら充電を開始して、80%まで行ったら止めるというような制御を行っている。常にオンラインになっていてほしいスマートフォンを延命しつつ維持できて便利。