TP-LinkのスマートプラグをPythonで制御する方法をメモしておきます。
準備:ライブラリのインストール
Pythonのバージョンは「Python 3.14.3」です。
pipで以下のライブラリをインストールしておきます。
pip3 install tapo==0.8.12

tapo
Unofficial Tapo API Client. Works with TP-Link Tapo smart devices. Tested with light bulbs (L510, L520, L530, L535, L610...
今回はTapoというライブラリを使用します。類似ライブラリの「PyP100」は長らくアップデートされておらず、最新のファームウェアに対応していません。
スマートプラグのセットアップ
スマートプラグは事前にTapoアプリに登録し、Tapoアプリで操作できる状態にしておくことが必要です。(いったん登録しておけば、Pythonから制御可能)
また、スマートプラグのファームウェアが古い場合はアップデートが必要です。古いファームウェアでは正常に動作しないことがあります。
スマートプラグのバージョンはTapoアプリで確認できます。筆者は1.4.5 Build 20240514 Rel. 36508で動作確認しました。
Tapo P105を制御するサンプルコード
#!/usr/bin/env python3.14
# TP-Link P105 スマートプラグ制御スクリプト
# インストール必要:pip install tapo==0.8.12
import sys
import asyncio
from tapo import ApiClient
async def main(ipaddress, email, password, action):
# Tapo APIクライアントで認証し、デバイスに接続
client = ApiClient(email, password)
device = await client.p100(ipaddress)
# 指定されたアクションに応じてON/OFF
if action == "on":
await device.on()
elif action == "off":
await device.off()
# 引数チェック
if len(sys.argv) == 5:
ipaddress = sys.argv[1]
email = sys.argv[2]
password = sys.argv[3]
action = sys.argv[4]
asyncio.run(main(ipaddress, email, password, action))
else:
print('Usage: main.py <IPaddress> <Email> <Password> <"on" or "off">')
無事に動作できました!
無事に動作させることができました。参考になれば幸いです。


コメント