2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

中華製の LED 照明を Python でコントロールしてみた。

Last updated at Posted at 2023-10-13

今回は、 Amazon で購入した中華製の LED 照明を Python でコントロールしてみました。
使用した LED 照明は下記のものになります。

環境

今回の環境は下記のとおりです。

開発端末

  • OS: Windows 11 Pro
  • CPU: Intel Core i7-9750H
  • メモリ: 64GB
  • GPU: NVIDIA GeForce RTX 2070 Max-Q

Python 環境

  • Python: 3.11.0
  • 仮想環境: Poetry

Poetry について
Poetry の詳細は、下記の記事を参考にしてください。
https://qiita.com/IoriGunji/items/290db948c11fdc81046a

アカウントの作成

下記のサイトから Sign Up を行います。

tuya_signup_01.png

プロジェクトの作成とデバイスの取得

プロジェクトを作成し、デバイスの取得を行います。

Cloud をクリックします。
tuya_create_project_01.png

Create Cloud Project をクリックします。
tuya_create_project_02.png

下記の項目を入力して、 Create をクリックします。

  • Project Name: 任意のプロジェクト名
  • Industry: Smart Home
  • Development Method: Smart Home
  • Data Center: Western America Data Center

tuya_create_project_03.png

プロジェクトが作成されたら、 Open Project をクリックして、プロジェクトを開きます。
tuya_open_project_01.png

デバイスの取得

Link Tuya App Account をクリックします。
tuya_add-device_01.png

Add App Account をクリックします。
tuya_add-device_02.png

QRコードをスマートフォンの Smart Life アプリで読み取ります。
tuya_add-device_03.png

スマートフォンで Smart Life アプリを開き、 ボタンをタップします。
tuya_qr_01.png

QRコードをスキャン をクリックします。
tuya_qr_02.png

ログインを確認 をクリックし、QRコードを読み取ります。
tuya_qr_03.png

認証情報の確認

API を叩く際に必要となる認証情報を事前に確認しておきます。
下記のいずれかの方法で確認ができます。

Overview をクリックし、 Access ID/Client IDAccess Secret/Client Secret を控えておきます。
tuya_auth_01.png

Authorization をクリックし、 Cloud Authorization から Access ID/Client IDAccess Secret/Client Secret を控えておきます。
tuya_auth_02.png

IoT Core の確認

Service API を開き、 IoT Core が含まれていることを確認します。

含まれていない場合は、 Go to Authorize をクリックし、 IoT CoreFree Trial をクリックし、 IoT Core を追加します。
tuya_auth_03.png

デバイス ID の確認

制御したいデバイスの Device ID を確認します。

Devices をクリックし、 All Devices の中から制御したいデバイスの Device ID を確認します。
tuya_device-id_01.png

Python コードの作成

インストール

Poetry の場合

poetry add tinytuya

pip の場合

pip install tinytuya

ウィザードの実行

ウィザードを実行してデバイス情報を取得します。

Poetry の場合

poetry run python -m tinytuya wizard

pip の場合

python -m tinytuya wizard

メッセージに沿って、確認した認証情報や Device ID をそれぞれ入力していきます。
Region はプロジェクトの作成時に選択した Data Center のことです。

Enter API Key from tuya.com: [Access ID/Client ID]
Enter API Secret from tuya.com: [Access Secret/Client Secret]
Enter any Device ID currently registered in Tuya App (used to pull full list) or 'scan' to scan for one: [Device ID]
Enter Your Region (Options: cn, us, us-e, eu, eu-w, or in): [Data Center]
Download DP Name mappings? (Y/n): y
Poll local devices? (Y/n): y

Download DP Name mappings? (Y/n): y

[
    {
        "name": "\u30c7\u30b9\u30af\u30e9\u30a4\u30c8\xxxxx\xxxxx\xxxxx",
        "id": "xxxxxxxxxxxxxxxxxxxx",
        "key": "xxxxxxxxxxxxxxxx",
        "mac": "xx:xx:xx:xx:xx:xx",
        "uuid": "xxxxxxxxxxxxxxxxxxxx",
        "sn": "xxxxxxxxxxxxxx",
        "category": "dj",
        "product_name": "CabiSmart CW",
        "product_id": "soy18v1bwdidkell",
        "biz_type": 18,
        "model": "",
        "sub": false,
        "icon": "https://images.tuyaus.com/smart/icon/ay1502415387164HkSHB/b60d503b6bb18ab229722fc4e5a669b6.jpg",
        "mapping": {},
        "ip": "192.168.0.201",
        "version": "3.3"
    },
    {
        "name": "\u30c7\u30b9\u30af\u30e9\u30a4\u30c8\yyyyy\yyyyy",
        "id": "yyyyyyyyyyyyyyyyyyyy",
        "key": "yyyyyyyyyyyyyyyy",
        "mac": "yy:yy:yy:yy:yy:yy",
        "uuid": "yyyyyyyyyyyyyyyyyyyy",
        "sn": "yyyyyyyyyyyyyy",
        "category": "dj",
        "product_name": "CabiSmart CW",
        "product_id": "soy18v1bwdidkell",
        "biz_type": 18,
        "model": "",
        "sub": false,
        "icon": "https://images.tuyaus.com/smart/icon/ay1502415387164HkSHB/b60d503b6bb18ab229722fc4e5a669b6.jpg",
        "mapping": {},
        "ip": "",
        "version": ""
    }
]

Poll local devices? (Y/n): y

[デスクライト??] Error: No IP found
[デスクライト???] 192.168.0.201      - [On]  - DPS: {'20': True, '21': 'white', '22': 454, '23': 1000, '25': '030d0d0000000000000003e803e8', '26': 0}

ステータスコードの見方は Github から確認できます。

今回使用しているデバイスは LED 照明のため、下記の表が該当しそうです。
tuya_status_01.png

Python コード

今回は LED 照明を制御するための Python コードを紹介します。

LED 照明のため、インスタンスの作成に用いる関数は tinytuya.BulbDevice() になります。
また、各パラメータは下記のとおりです。

  • dev_idDownload DP Name mappings? で表示された id です。
  • addressDownload DP Name mappings? で表示された ip です。
  • local_keyDownload DP Name mappings? で表示された key です。

デバイスのステータスの確認

デバイスのステータスを確認するには下記のコードを実行します。

status.py
import tinytuya

device = tinytuya.BulbDevice(
    dev_id = 'デバイスID'
    , address = 'デバイスのIPアドレス'
    , local_key = 'デバイスのローカルキー'
    , version = 3.3
)

data = device.status() 
print('set_status() result %r' % data)

電源 ON

LED 照明の電源を入れるには下記のコードを実行します。

turn_on.py
import tinytuya

device = tinytuya.BulbDevice(
    dev_id = 'デバイスID'
    , address = 'デバイスのIPアドレス'
    , local_key = 'デバイスのローカルキー'
    , version = 3.3
)

device.turn_on()

電源 OFF

LED 照明の電源を切るには下記のコードを実行します。

turn_off.py
import tinytuya

device = tinytuya.BulbDevice(
    dev_id = 'デバイスID'
    , address = 'デバイスのIPアドレス'
    , local_key = 'デバイスのローカルキー'
    , version = 3.3
)

device.turn_off()

調光

LED 照明の明るさを変更するには下記のコードを実行します。

brightness.py
import tinytuya

device = tinytuya.BulbDevice(
    dev_id = 'デバイスID'
    , address = 'デバイスのIPアドレス'
    , local_key = 'デバイスのローカルキー'
    , version = 3.3
)

# device.set_brightness(10) # 10-1000
device.set_brightness_percentage(0) # 0-100

set_brightness 関数について
下記の2種類の関数が利用できます。

  • set_brightness() : 10 ~ 1000 の間の整数で指定します。
  • set_brightness_percentage() : 0 ~ 100 の間の整数でしています。

調色

LED 照明の色温度を変更するには下記のコードを実行します。

colourtemp.py
import tinytuya

device = tinytuya.BulbDevice(
    dev_id = 'デバイスID'
    , address = 'デバイスのIPアドレス'
    , local_key = 'デバイスのローカルキー'
    , version = 3.3
)

# device.set_colourtemp(1000) # 0-1000
device.set_colourtemp_percentage(100) # 0-100

set_brightness 関数について
下記の2種類の関数が利用できます。

  • set_colourtemp() : 0 ~ 1000 の間の整数で指定します。
  • set_colourtemp_percentage() : 0 ~ 100 の間の整数でしています。

参考文献

下記のサイトを参考にさせて頂きました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?