TP-Link Tapo P110M をサーバーから制御して電力連動オートメーションを作る
背景 最近 Claude Code をよく使うようになって、「これがあれば何でもできるな」という感触が出てきた。 ずっと放置していた自宅のProxmoxサーバーを久しぶりに動かしてみたら普通にいろいろできて、Narou.rbのLinux移行もついでにやったし、今はClaude CodeもProxmoxのコンテナで動かして外出先からちょくちょく遊んだりしてる。 どうせProxmox動かしてるならできるのではと思ってはじめたら数時間でできてしまったのでメモだけ残しておく。 そもそもとして、我が家のPCは9950X3D/9070XT/3060と電力バカ喰いマシンで、かなり発熱する。そこで自宅の吸気ダクトにファンを取り付け、強制的にPCの排気をそのダクトから排出する仕組みを構築している。 これで夏場に熱い排熱を部屋に垂れ流さないのでかなり違うのだが、毎回PCに合わせてファンをオン・オフするのが面倒だった。 PC連動タップみたいなものもあるが、如何せんお値段がそこそこするので躊躇っていた。 SwitchBotのスマートプラグでも似たようなオートメーションができた気がするのでそちらの選択肢もあったが、SwitchBotのプラグは気づいたら8台壊れていたので今回は別の手段を取ることにした。 それが、今回使っているTapo P110M。こいつはTP-Linkのスマートプラグで、電力記録機能はあるが、電力をトリガーとした他デバイスの操作は基本的にできないものの、Matter対応品のため、自宅にサーバーを立てる事ができれば電力トリガーで自由に動かすことができる。 しかもセールなら2つセットで2000円くらいで買える上に汎用性もずっと高い。 構成 Tapo P110M はローカルAPIを持っているので、クラウド・外部サービス不要で同一ネットワーク内から直接制御できる。 Proxmox LXC コンテナ └── Python スクリプト (systemd サービス) ├── P110M (PC側) ← 消費電力を10秒ごとに取得 └── P110M (ファン側) ← 25W超でON、20W未満でOFF Proxmoxを使ったのは自宅に常時稼働のサーバーがあったから、というだけで、RaspberryPiや他のLinuxマシンでも同じことができる。 事前準備 Tapoアプリでサードパーティ連携を有効にする Tapoアプリの 私 → 音声アシスタント を開き、サードパーティ連携 をONにする。 これをしないとローカルAPIへのアクセスが弾かれるので最初にやっておく。 P110MのIPアドレスを固定する(推奨) ルーターのDHCP設定でMACアドレスバインドしておくと安心。再起動などでIPが変わるとスクリプトが止まる。 今回はルーター入替予定があるためサボったが、やっておいた方がいい。 Proxmox に LXC コンテナを作る メモリ128MB、ストレージ4GBで十分。LXCコンテナはVMより軽量で、既存サーバーに同居させても影響はほぼない。 pct create 204 local:vztmpl/debian-12-standard_12.12-1_amd64.tar.zst \ --hostname tapo-monitor \ --memory 128 \ --cores 1 \ --rootfs local-lvm:4 \ --net0 name=eth0,bridge=vmbr0,ip=dhcp,gw=192.168.x.x \ --nameserver 8.8.8.8 \ --start 1 \ --onboot 1 Python環境とtapoライブラリを入れる。 ...