TP-LinkスマートプラグをPythonで制御(Tapo P105)

Python

TP-LinkのスマートプラグをPythonで制御する方法をメモしておきます。

スポンサーリンク

準備:ライブラリのインストール

Pythonのバージョンは「Python 3.14.3」です。

pipで以下のライブラリをインストールしておきます。

pip3 install tapo==0.8.12

tapo · PyPI

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">')

無事に動作できました!

無事に動作させることができました。参考になれば幸いです。

コメント

タイトルとURLをコピーしました