Fork version of the official Tuya Homebridge plugin, with a focus on fixing bugs and adding new device support.
⚠️Update on 2024.1.14: Thanks for the attention on this project. There's more and more "problem device", which has wrong definition by manufacture (reversed 0%-100% state, wrong range, wrong unit, ...). Support them one by one really cost a lot. I'm not going to support them in the future, please try solve them by yourself. PRs are still welcome, and bugs will be focused. Thanks again :)
See CHANGELOG.md
Before using this plugin, please make sure to uninstall homebridge-tuya-platform
first as these two plugins cannot run simultaneously. However, the configuration files are compatible, so there's no need to delete them.
Go to plugin page, search for @0x5e/homebridge-tuya-platform
and install it.
Run the following command in the terminal:
npm install @0x5e/homebridge-tuya-platform
There are two types of projects: Custom
and Smart Home
.
The difference between them is:
Custom
project pulls devices from the project's assets.Smart Home
project pulls devices from the user's home in the Tuya app.If you are a personal user and are unsure which one to choose, please use the Smart Home
project.
Before you can configure, you must go to the Tuya IoT Platform:
Project Page
> Devices Panel
> Link Tuya App Account
, and link your app account.Project Page
> Service API
> Go to Authorize
, and subscribe to the following APIs (it is free for trial):
Custom
project)platform
- required : Must be 'TuyaPlatform'options.projectType
- required : Must be '1'options.endpoint
- required : The endpoint URL taken from the API Reference > Endpoints table.options.accessId
- required : The Access ID obtained from Tuya IoT Platform > Cloud Developoptions.accessKey
- required : The Access Secret obtained from Tuya IoT Platform > Cloud Developoptions.debug
- optional: Includes debugging output in the Homebridge log. (Default: false
)options.debugLevel
- optional: An optional list of strings seperated with comma ,
. api
represents for HTTP API log, mqtt
represents for MQTT log, and device ID represents for device log. If blank, all logs are outputed.platform
- required : Must be 'TuyaPlatform'options.projectType
- required : Must be '2'options.accessId
- required : The Access ID obtained from Tuya IoT Platform > Cloud Developoptions.accessKey
- required : The Access Secret obtained from Tuya IoT Platform > Cloud Developoptions.countryCode
- required : The country code of your app account's region.options.username
- required : The app account's username.options.password
- required : The app account's password. MD5 salted password is also available for increased security.options.appSchema
- required : The app schema: 'tuyaSmart' for the Tuya Smart App, or 'smartlife' for the Smart Life App.options.endpoint
- optional : The endpoint URL can be inferred from the API Reference > Endpoints table based on the country code provided. Only manually set this value if you encounter login issues and need to specify the endpoint for your account location.options.homeWhitelist
- optional: An array of integer values for the home IDs you want to whitelist. If provided, only devices with matching Home IDs will be included. You can find the Home ID in the Homebridge log.options.debug
- optional: Includes debugging output in the Homebridge log. (Default: false
)options.debugLevel
- optional: An optional list of strings seperated with comma ,
. api
represents for API and MQTT log, device ID represents for specific device log. If blank, all logs are outputed.For most users, you can easily find your app account's data center through the documentation and login without any issues. However, for some users, they may encounter error codes such as 1106 or 2406. If you encounter such errors, it's possible that there are differences between your data center and the documentation.
To determine the data center, follow these steps:
Then manually specify endpoint in the plugin config.
"Standard DP" refers to device properties or functionalities that are specified in the Tuya IoT Development Platform documentation at Tuya IoT Development Platform Documentation > Cloud Development > Standard Instruction Set.
For example, a light bulb should have a standard DP code of switch_led
for power on/off, and optional codes bright_value
/bright_value_v2
for brightness, temp_value
/temp_value_v2
for color temperature, and work_mode
for changing the working mode. These codes can be found in the above documentation.
If your light bulb can be adjusted in the Tuya app but not with the plugin, it most likely has "Non-standard DP."
Yes. The device must be listed in the support list and the following steps must be completed before it will work:
See #90.
Although the plugin didn't implemented tuya local protocol now, it still remains possibility in the future.
If your device is not supported, please follow these steps to collect information.
After Homebridge has been successfully launched, the device information list will be saved in Homebridge's persist path. You can find the file path in the Homebridge log:
[2022/11/3 18:37:43] [TuyaPlatform] Device list saved at /path/to/TuyaDeviceList.{uid}.json
⚠️Please make sure to remove sensitive information such as ip
, lon
, lat
, local_key
, and uid
before submitting the file.
Add debug option in the plugin config, then restart Homebridge.
With debug mode enabled, you can now receive MQTT logs. Operate your device, either physically or through the Tuya App, to receive MQTT logs like this:
[2022/12/8 12:51:59] [TuyaPlatform] [TuyaOpenMQ] onMessage:
topic = cloud/token/in/xxx
protocol = 4
message = {
"dataId": "xxx",
"devId": "xxx",
"productKey": "xxx",
"status": [
{
"1": "double_click",
"code": "switch1_value",
"t": "1670475119766",
"value": "double_click"
}
]
}
If you are unable to receive any MQTT logs while controlling the device, it likely means that your device has "Non-standard DP".
By submitting the device information JSON and MQTT logs, you can help us support new device categories.
Please see https://github.com/homebridge/homebridge-plugin-template#setup-development-environment for setup development environment.
PRs and issues are welcome.
Thank you for spend time using the project. If it helps you, don't hesitate to give it a star 🌟:-)