@homebridge-plugins/homebridge-tuya 2.0.2-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/.idea/copilot.data.migration.agent.xml +6 -0
  2. package/.idea/copilot.data.migration.ask.xml +6 -0
  3. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  4. package/.idea/copilot.data.migration.edit.xml +6 -0
  5. package/.idea/dictionaries/benpotter.xml +3 -0
  6. package/.idea/homebridge-tuya.iml +8 -0
  7. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  8. package/.idea/modules.xml +8 -0
  9. package/.idea/vcs.xml +6 -0
  10. package/.idea/workspace.xml +64 -0
  11. package/ADVANCED_OPTIONS.md +267 -0
  12. package/CHANGELOG.md +127 -0
  13. package/LICENSE +20 -0
  14. package/README.md +206 -0
  15. package/SUPPORTED_DEVICES.md +206 -0
  16. package/config.schema.json +550 -0
  17. package/dist/accessory/AccessoryFactory.js +274 -0
  18. package/dist/accessory/AccessoryFactory.js.map +1 -0
  19. package/dist/accessory/AirConditionerAccessory.js +307 -0
  20. package/dist/accessory/AirConditionerAccessory.js.map +1 -0
  21. package/dist/accessory/AirPurifierAccessory.js +90 -0
  22. package/dist/accessory/AirPurifierAccessory.js.map +1 -0
  23. package/dist/accessory/AirQualitySensorAccessory.js +30 -0
  24. package/dist/accessory/AirQualitySensorAccessory.js.map +1 -0
  25. package/dist/accessory/BaseAccessory.js +295 -0
  26. package/dist/accessory/BaseAccessory.js.map +1 -0
  27. package/dist/accessory/CameraAccessory.js +117 -0
  28. package/dist/accessory/CameraAccessory.js.map +1 -0
  29. package/dist/accessory/CarbonDioxideSensorAccessory.js +52 -0
  30. package/dist/accessory/CarbonDioxideSensorAccessory.js.map +1 -0
  31. package/dist/accessory/CarbonMonoxideSensorAccessory.js +52 -0
  32. package/dist/accessory/CarbonMonoxideSensorAccessory.js.map +1 -0
  33. package/dist/accessory/ContactSensorAccessory.js +30 -0
  34. package/dist/accessory/ContactSensorAccessory.js.map +1 -0
  35. package/dist/accessory/DehumidifierAccessory.js +68 -0
  36. package/dist/accessory/DehumidifierAccessory.js.map +1 -0
  37. package/dist/accessory/DiffuserAccessory.js +55 -0
  38. package/dist/accessory/DiffuserAccessory.js.map +1 -0
  39. package/dist/accessory/DimmerAccessory.js +94 -0
  40. package/dist/accessory/DimmerAccessory.js.map +1 -0
  41. package/dist/accessory/DoorbellAccessory.js +89 -0
  42. package/dist/accessory/DoorbellAccessory.js.map +1 -0
  43. package/dist/accessory/ExtractionHoodAccessory.js +118 -0
  44. package/dist/accessory/ExtractionHoodAccessory.js.map +1 -0
  45. package/dist/accessory/FanAccessory.js +123 -0
  46. package/dist/accessory/FanAccessory.js.map +1 -0
  47. package/dist/accessory/GarageDoorAccessory.js +69 -0
  48. package/dist/accessory/GarageDoorAccessory.js.map +1 -0
  49. package/dist/accessory/HeaterAccessory.js +96 -0
  50. package/dist/accessory/HeaterAccessory.js.map +1 -0
  51. package/dist/accessory/HumanPresenceSensorAccessory.js +20 -0
  52. package/dist/accessory/HumanPresenceSensorAccessory.js.map +1 -0
  53. package/dist/accessory/HumidifierAccessory.js +135 -0
  54. package/dist/accessory/HumidifierAccessory.js.map +1 -0
  55. package/dist/accessory/IRAirConditionerAccessory.js +285 -0
  56. package/dist/accessory/IRAirConditionerAccessory.js.map +1 -0
  57. package/dist/accessory/IRControlHubAccessory.js +49 -0
  58. package/dist/accessory/IRControlHubAccessory.js.map +1 -0
  59. package/dist/accessory/IRControlHubSubAccessory.js +53 -0
  60. package/dist/accessory/IRControlHubSubAccessory.js.map +1 -0
  61. package/dist/accessory/IRGenericAccessory.js +50 -0
  62. package/dist/accessory/IRGenericAccessory.js.map +1 -0
  63. package/dist/accessory/LeakSensorAccessory.js +36 -0
  64. package/dist/accessory/LeakSensorAccessory.js.map +1 -0
  65. package/dist/accessory/LightAccessory.js +36 -0
  66. package/dist/accessory/LightAccessory.js.map +1 -0
  67. package/dist/accessory/LightSensorAccessory.js +32 -0
  68. package/dist/accessory/LightSensorAccessory.js.map +1 -0
  69. package/dist/accessory/LocationWeatherAccessory.js +72 -0
  70. package/dist/accessory/LocationWeatherAccessory.js.map +1 -0
  71. package/dist/accessory/LockAccessory.js +56 -0
  72. package/dist/accessory/LockAccessory.js.map +1 -0
  73. package/dist/accessory/MotionSensorAccessory.js +20 -0
  74. package/dist/accessory/MotionSensorAccessory.js.map +1 -0
  75. package/dist/accessory/OutletAccessory.js +23 -0
  76. package/dist/accessory/OutletAccessory.js.map +1 -0
  77. package/dist/accessory/PetFeederAccessory.js +139 -0
  78. package/dist/accessory/PetFeederAccessory.js.map +1 -0
  79. package/dist/accessory/SceneAccessory.js +32 -0
  80. package/dist/accessory/SceneAccessory.js.map +1 -0
  81. package/dist/accessory/SceneSwitchAccessory.js +44 -0
  82. package/dist/accessory/SceneSwitchAccessory.js.map +1 -0
  83. package/dist/accessory/SecuritySystemAccessory.js +30 -0
  84. package/dist/accessory/SecuritySystemAccessory.js.map +1 -0
  85. package/dist/accessory/SmokeSensorAccessory.js +35 -0
  86. package/dist/accessory/SmokeSensorAccessory.js.map +1 -0
  87. package/dist/accessory/SwitchAccessory.js +86 -0
  88. package/dist/accessory/SwitchAccessory.js.map +1 -0
  89. package/dist/accessory/TemperatureHumiditySensorAccessory.js +24 -0
  90. package/dist/accessory/TemperatureHumiditySensorAccessory.js.map +1 -0
  91. package/dist/accessory/ThermostatAccessory.js +190 -0
  92. package/dist/accessory/ThermostatAccessory.js.map +1 -0
  93. package/dist/accessory/ValveAccessory.js +45 -0
  94. package/dist/accessory/ValveAccessory.js.map +1 -0
  95. package/dist/accessory/VibrationSensorAccessory.js +42 -0
  96. package/dist/accessory/VibrationSensorAccessory.js.map +1 -0
  97. package/dist/accessory/WeatherStationAccessory.js +59 -0
  98. package/dist/accessory/WeatherStationAccessory.js.map +1 -0
  99. package/dist/accessory/WetBulbGlobeTemperatureAccessory.js +23 -0
  100. package/dist/accessory/WetBulbGlobeTemperatureAccessory.js.map +1 -0
  101. package/dist/accessory/WhiteNoiseLightAccessory.js +59 -0
  102. package/dist/accessory/WhiteNoiseLightAccessory.js.map +1 -0
  103. package/dist/accessory/WindowAccessory.js +14 -0
  104. package/dist/accessory/WindowAccessory.js.map +1 -0
  105. package/dist/accessory/WindowCoveringAccessory.js +156 -0
  106. package/dist/accessory/WindowCoveringAccessory.js.map +1 -0
  107. package/dist/accessory/WirelessSwitchAccessory.js +42 -0
  108. package/dist/accessory/WirelessSwitchAccessory.js.map +1 -0
  109. package/dist/accessory/characteristic/Active.js +23 -0
  110. package/dist/accessory/characteristic/Active.js.map +1 -0
  111. package/dist/accessory/characteristic/AirQuality.js +75 -0
  112. package/dist/accessory/characteristic/AirQuality.js.map +1 -0
  113. package/dist/accessory/characteristic/CurrentRelativeHumidity.js +24 -0
  114. package/dist/accessory/characteristic/CurrentRelativeHumidity.js.map +1 -0
  115. package/dist/accessory/characteristic/CurrentTemperature.js +24 -0
  116. package/dist/accessory/characteristic/CurrentTemperature.js.map +1 -0
  117. package/dist/accessory/characteristic/CurrentWeather.js +51 -0
  118. package/dist/accessory/characteristic/CurrentWeather.js.map +1 -0
  119. package/dist/accessory/characteristic/CurrentWeatherByOpenMeteo.js +81 -0
  120. package/dist/accessory/characteristic/CurrentWeatherByOpenMeteo.js.map +1 -0
  121. package/dist/accessory/characteristic/CurrentWetBulbGlobeTemperature.js +50 -0
  122. package/dist/accessory/characteristic/CurrentWetBulbGlobeTemperature.js.map +1 -0
  123. package/dist/accessory/characteristic/EnergyUsage.js +103 -0
  124. package/dist/accessory/characteristic/EnergyUsage.js.map +1 -0
  125. package/dist/accessory/characteristic/Light.js +269 -0
  126. package/dist/accessory/characteristic/Light.js.map +1 -0
  127. package/dist/accessory/characteristic/LightSensor.js +24 -0
  128. package/dist/accessory/characteristic/LightSensor.js.map +1 -0
  129. package/dist/accessory/characteristic/LockPhysicalControls.js +22 -0
  130. package/dist/accessory/characteristic/LockPhysicalControls.js.map +1 -0
  131. package/dist/accessory/characteristic/MotionDetected.js +23 -0
  132. package/dist/accessory/characteristic/MotionDetected.js.map +1 -0
  133. package/dist/accessory/characteristic/Name.js +12 -0
  134. package/dist/accessory/characteristic/Name.js.map +1 -0
  135. package/dist/accessory/characteristic/OccupancyDetected.js +20 -0
  136. package/dist/accessory/characteristic/OccupancyDetected.js.map +1 -0
  137. package/dist/accessory/characteristic/On.js +26 -0
  138. package/dist/accessory/characteristic/On.js.map +1 -0
  139. package/dist/accessory/characteristic/OutletInUse.js +15 -0
  140. package/dist/accessory/characteristic/OutletInUse.js.map +1 -0
  141. package/dist/accessory/characteristic/ProgrammableSwitchEvent.js +90 -0
  142. package/dist/accessory/characteristic/ProgrammableSwitchEvent.js.map +1 -0
  143. package/dist/accessory/characteristic/RelativeHumidityDehumidifierThreshold.js +29 -0
  144. package/dist/accessory/characteristic/RelativeHumidityDehumidifierThreshold.js.map +1 -0
  145. package/dist/accessory/characteristic/RotationSpeed.js +79 -0
  146. package/dist/accessory/characteristic/RotationSpeed.js.map +1 -0
  147. package/dist/accessory/characteristic/SecuritySystemState.js +76 -0
  148. package/dist/accessory/characteristic/SecuritySystemState.js.map +1 -0
  149. package/dist/accessory/characteristic/SwingMode.js +22 -0
  150. package/dist/accessory/characteristic/SwingMode.js.map +1 -0
  151. package/dist/accessory/characteristic/TemperatureDisplayUnits.js +26 -0
  152. package/dist/accessory/characteristic/TemperatureDisplayUnits.js.map +1 -0
  153. package/dist/config.js +29 -0
  154. package/dist/config.js.map +1 -0
  155. package/dist/core/TuyaOpenAPI.js +314 -0
  156. package/dist/core/TuyaOpenAPI.js.map +1 -0
  157. package/dist/core/TuyaOpenMQ.js +182 -0
  158. package/dist/core/TuyaOpenMQ.js.map +1 -0
  159. package/dist/device/TuyaCustomDeviceManager.js +65 -0
  160. package/dist/device/TuyaCustomDeviceManager.js.map +1 -0
  161. package/dist/device/TuyaDevice.js +37 -0
  162. package/dist/device/TuyaDevice.js.map +1 -0
  163. package/dist/device/TuyaDeviceManager.js +447 -0
  164. package/dist/device/TuyaDeviceManager.js.map +1 -0
  165. package/dist/device/TuyaHomeDeviceManager.js +64 -0
  166. package/dist/device/TuyaHomeDeviceManager.js.map +1 -0
  167. package/dist/index.js +7 -0
  168. package/dist/index.js.map +1 -0
  169. package/dist/platform.js +466 -0
  170. package/dist/platform.js.map +1 -0
  171. package/dist/settings.js +18 -0
  172. package/dist/settings.js.map +1 -0
  173. package/dist/util/FfmpegStreamingProcess.js +126 -0
  174. package/dist/util/FfmpegStreamingProcess.js.map +1 -0
  175. package/dist/util/InfraredTool.js +396 -0
  176. package/dist/util/InfraredTool.js.map +1 -0
  177. package/dist/util/Logger.js +42 -0
  178. package/dist/util/Logger.js.map +1 -0
  179. package/dist/util/TuyaRecordingDelegate.js +22 -0
  180. package/dist/util/TuyaRecordingDelegate.js.map +1 -0
  181. package/dist/util/TuyaStreamDelegate.js +330 -0
  182. package/dist/util/TuyaStreamDelegate.js.map +1 -0
  183. package/dist/util/color.js +24 -0
  184. package/dist/util/color.js.map +1 -0
  185. package/dist/util/util.js +48 -0
  186. package/dist/util/util.js.map +1 -0
  187. package/jest.config.js +5 -0
  188. package/package.json +74 -0
  189. package/test/custom.test.ts +101 -0
  190. package/test/home.test.ts +81 -0
  191. package/test/util.ts +39 -0
package/README.md ADDED
@@ -0,0 +1,206 @@
1
+ # @homebridge-plugins/homebridge-tuya
2
+
3
+ [![npm](https://badgen.net/npm/v/@homebridge-plugins/homebridge-tuya)](https://npmjs.com/package/@homebridge-plugins/homebridge-tuya)
4
+ [![npm](https://badgen.net/npm/dt/@homebridge-plugins/homebridge-tuya)](https://npmjs.com/package/@homebridge-plugins/homebridge-tuya)
5
+ [![mit-license](https://badgen.net/npm/license/@homebridge-plugins/homebridge-tuya)](https://github.com/homebridge-plugins/homebridge-tuya/blob/main/LICENSE)
6
+ [![Build and Lint](https://github.com/homebridge-plugins/homebridge-tuya/actions/workflows/build.yml/badge.svg)](https://github.com/homebridge-plugins/homebridge-tuya/actions/workflows/build.yml)
7
+
8
+
9
+ Forked from 0x5e/homebridge-tuya-platform, with a focus on fixing bugs and adding new device support.
10
+
11
+
12
+
13
+
14
+ ## Features
15
+
16
+ - Optimized and improved code for better readability and maintainability.
17
+ - Enhanced stability.
18
+ - Reduced duplicate code.
19
+ - Fewer API errors.
20
+ - Lower development costs for new accessory categories.
21
+ - Supports Tuya Scenes (Tap-to-Run).
22
+ - Includes the ability to override device configurations, which enables support for "non-standard" DPs.
23
+ - Supports over 60+ device categories, including most light, switch, sensor, camera, lock, IR remote control, etc.
24
+
25
+
26
+ ## Supported Tuya Devices
27
+ See [SUPPORTED_DEVICES.md](./SUPPORTED_DEVICES.md)
28
+
29
+
30
+ ## Changelogs
31
+ See [CHANGELOG.md](./CHANGELOG.md)
32
+
33
+
34
+ ## Installation
35
+ 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.
36
+
37
+ #### For Homebridge Web UI Users
38
+ Go to plugin page, search for `@homebridge-plugins/homebridge-tuya` and install it.
39
+
40
+
41
+ #### For Homebridge Command Line Users
42
+
43
+ Run the following command in the terminal:
44
+ ```
45
+ npm install @homebridge-plugins/homebridge-tuya
46
+ ```
47
+
48
+
49
+ ## Configuration
50
+
51
+ There are two types of projects: `Custom` and `Smart Home`.
52
+ The difference between them is:
53
+ - The `Custom` project pulls devices from the project's assets.
54
+ - The `Smart Home` project pulls devices from the user's home in the Tuya app.
55
+
56
+ If you are a personal user and are unsure which one to choose, please use the `Smart Home` project.
57
+
58
+ Before you can configure, you must go to the [Tuya IoT Platform](https://iot.tuya.com):
59
+ - Create a cloud development project, and select the data center where your app account is located. See [Mappings Between OEM App Accounts and Data Centers](https://developer.tuya.com/en/docs/iot/oem-app-data-center-distributed?id=Kafi0ku9l07qb)
60
+ - Go to the `Project Page` > `Devices Panel` > `Link Tuya App Account`, and link your app account.
61
+ - Go to the `Project Page` > `Service API` > `Go to Authorize`, and subscribe to the following APIs (it is free for trial):
62
+ - Authorization Token Management
63
+ - Device Status Notification
64
+ - IoT Core
65
+ - IoT Video Live Stream (for cameras)
66
+ - Industry Project Client Service (for the `Custom` project)
67
+ - IR Control Hub Open Service (for IR devices)
68
+ - Smart Home Scene Linkage (for scenes)
69
+ - Smart Lock Open Service (for Lock devices)
70
+ - **⚠️Remember to extend the API trial period every 6 months here [Tuya IoT Platform > Cloud > Cloud Services > IoT Core](https://iot.tuya.com/cloud/products/detail?abilityId=1442730014117204014&id=p1668587814138nv4h3n&abilityAuth=0&tab=1) (the first-time subscription only gives you 1 month).**
71
+
72
+ #### For "Custom" Project
73
+
74
+ - `platform` - **required** : Must be 'TuyaPlatform'
75
+ - `options.projectType` - **required** : Must be '1'
76
+ - `options.endpoint` - **required** : The endpoint URL taken from the [API Reference > Endpoints](https://developer.tuya.com/en/docs/iot/api-request?id=Ka4a8uuo1j4t4#title-1-Endpoints) table.
77
+ - `options.accessId` - **required** : The Access ID obtained from [Tuya IoT Platform > Cloud Develop](https://iot.tuya.com/cloud)
78
+ - `options.accessKey` - **required** : The Access Secret obtained from [Tuya IoT Platform > Cloud Develop](https://iot.tuya.com/cloud)
79
+ - `options.debug` - **optional**: Includes debugging output in the Homebridge log. (Default: `false`)
80
+ - `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.
81
+
82
+ #### For "Smart Home" Project
83
+
84
+ - `platform` - **required** : Must be 'TuyaPlatform'
85
+ - `options.projectType` - **required** : Must be '2'
86
+ - `options.accessId` - **required** : The Access ID obtained from [Tuya IoT Platform > Cloud Develop](https://iot.tuya.com/cloud)
87
+ - `options.accessKey` - **required** : The Access Secret obtained from [Tuya IoT Platform > Cloud Develop](https://iot.tuya.com/cloud)
88
+ - `options.countryCode` - **required** : The country code of your app account's region.
89
+ - `options.username` - **required** : The app account's username.
90
+ - `options.password` - **required** : The app account's password. MD5 salted password is also available for increased security.
91
+ - `options.appSchema` - **required** : The app schema: 'tuyaSmart' for the Tuya Smart App, or 'smartlife' for the Smart Life App.
92
+ - `options.endpoint` - **optional** : The endpoint URL can be inferred from the [API Reference > Endpoints](https://developer.tuya.com/en/docs/iot/api-request?id=Ka4a8uuo1j4t4#title-1-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.
93
+ - `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.
94
+ - `options.debug` - **optional**: Includes debugging output in the Homebridge log. (Default: `false`)
95
+ - `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.
96
+
97
+
98
+ #### Advanced options
99
+ See [ADVANCED_OPTIONS.md](./ADVANCED_OPTIONS.md)
100
+
101
+
102
+ ## Limitations
103
+ - **⚠️Don't forget to extend the API trial period every 6 months. Maybe you can set up a reminder in calendar.**
104
+ - Using the same app account for multiple Homebridge/HomeAssistant instances is not supported. Please use separate app accounts for each instance.
105
+ - The plugin requires an internet connection to the Tuya Cloud and does not support the LAN protocol. See [#90](https://github.com/homebridge-plugins/homebridge-tuya/issues/90) for more information.
106
+
107
+ ## FAQ
108
+
109
+ #### About Login issue
110
+
111
+ For most users, you can easily find your app account's data center through the [documentation](https://developer.tuya.com/en/docs/iot/oem-app-data-center-distributed?id=Kafi0ku9l07qb) 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.
112
+
113
+ To determine the data center, follow these steps:
114
+
115
+ 1. Open the app and navigate to "Me > Settings > Network Diagnosis".
116
+ 2. Start the diagnosis and select "Upload Log > Copy the Log to Clipboard".
117
+ 3. Paste the log anywhere and find the line beginning with "Region code:".
118
+ 4. Look for the following codes: "AY" for China, "AZ" for the West US, "EU" for Central Europe, and "IN" for India.
119
+
120
+ Then manually specify endpoint in the plugin config.
121
+
122
+
123
+ #### What is "Standard DP" and "Non-standard DP"?
124
+
125
+ <!-- If your device is working properly, you don't need to know this. -->
126
+
127
+ "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](https://developer.tuya.com/en/docs/iot/standarddescription?id=K9i5ql6waswzq).
128
+
129
+ 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.
130
+
131
+ If your light bulb can be adjusted in the Tuya app but not with the plugin, it most likely has "Non-standard DP."
132
+
133
+
134
+ #### Can "Non-standard DP" be supportd by this plugin?
135
+
136
+ Yes. The device must be listed in the support list and the following steps must be completed before it will work:
137
+ 1. Change the device's control mode on the Tuya Platform:
138
+ - Go to "[Tuya Platform Cloud Development](https://iot.tuya.com/cloud/) > Your Project > Devices > All Devices > View Devices by Product".
139
+ - Find the product related to your device, click the "pencil" icon (Change Control Instruction Mode).
140
+ - <img width="500" alt="image" src="https://user-images.githubusercontent.com/5144674/202967707-8b934e05-36d6-4b42-bb7b-87e5b24474c4.png">
141
+ - In the "Table of Instructions", you can see the cloud mapping and determine which DP codes are missing and need to be manually mapped later.
142
+ - <img width="500" alt="image" src="https://user-images.githubusercontent.com/5144674/202967528-4838f9a1-0547-4102-afbb-180dc9b198b1.png">
143
+ - Select "DP Instruction" and save.
144
+ 2. Override the device schema, see [ADVANCED_OPTIONS.md](./ADVANCED_OPTIONS.md).
145
+
146
+
147
+ #### Local support
148
+ See [#90](https://github.com/homebridge-plugins/homebridge-tuya/issues/90).
149
+
150
+ Although the plugin didn't implemented tuya local protocol now, it still remains possibility in the future.
151
+
152
+
153
+ ## Troubleshooting
154
+
155
+ If your device is not supported, please follow these steps to collect information.
156
+
157
+ #### 1. Get Device Information
158
+
159
+ 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:
160
+ ```
161
+ [2022/11/3 18:37:43] [TuyaPlatform] Device list saved at /path/to/TuyaDeviceList.{uid}.json
162
+ ```
163
+
164
+ **⚠️Please make sure to remove sensitive information such as `ip`, `lon`, `lat`, `local_key`, and `uid` before submitting the file.**
165
+
166
+
167
+ #### 2. Enable Debug Mode
168
+
169
+ Add debug option in the plugin config, then restart Homebridge.
170
+
171
+ #### 3. Collect Logs
172
+
173
+ 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:
174
+
175
+ ```
176
+ [2022/12/8 12:51:59] [TuyaPlatform] [TuyaOpenMQ] onMessage:
177
+ topic = cloud/token/in/xxx
178
+ protocol = 4
179
+ message = {
180
+ "dataId": "xxx",
181
+ "devId": "xxx",
182
+ "productKey": "xxx",
183
+ "status": [
184
+ {
185
+ "1": "double_click",
186
+ "code": "switch1_value",
187
+ "t": "1670475119766",
188
+ "value": "double_click"
189
+ }
190
+ ]
191
+ }
192
+ ```
193
+
194
+ If you are unable to receive any MQTT logs while controlling the device, it likely means that your device has "Non-standard DP".
195
+
196
+ By submitting the device information JSON and MQTT logs, you can help us support new device categories.
197
+
198
+
199
+ ## Contributing
200
+
201
+ Please see https://github.com/homebridge/homebridge-plugin-template#setup-development-environment for setup development environment.
202
+
203
+ PRs and issues are welcome.
204
+
205
+ #
206
+ Thank you for spend time using the project. If it helps you, don't hesitate to give it a star 🌟:-)
@@ -0,0 +1,206 @@
1
+ # Supported Tuya Devices
2
+
3
+ First-class category name, sedond-class category name, category code can be found here:
4
+ https://developer.tuya.com/docs/iot/standarddescription?id=K9i5ql6waswzq
5
+
6
+ Most category code is pinyin abbreviation of Chinese name.
7
+
8
+ ## Lighting
9
+
10
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
11
+ | ---- | ---- | ---- | ---- | ---- | ---- |
12
+ | Light | 光源 | dj<br> dsd | Lightbulb | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorydj?id=Kaiuyzy3eheyy) |
13
+ | Ceiling Light | 吸顶灯 | xdd | Lightbulb | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/ceiling-light?id=Kaiuz03xxfc4r) |
14
+ | Ambiance Light | 氛围灯 | fwd | Lightbulb | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/ambient-light?id=Kaiuz06amhe6g) |
15
+ | String Lights | 灯串 | dc | Lightbulb | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/dc?id=Kaof7taxmvadu) |
16
+ | Strip Lights | 灯带 | dd | Lightbulb | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/dd?id=Kaof804aibg2l) |
17
+ | Motion Sensor Light | 感应灯 | gyd | Lightbulb<br> MotionSensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/gyd?id=Kaof8a8hycfmy) |
18
+ | Ceiling Fan Light | 风扇灯 | fsd | Lightbulb<br> Fanv2 | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/fsd?id=Kaof8eiei4c2v) |
19
+ | Solar Light | 太阳能灯 | tyndj | Lightbulb | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/tynd?id=Kaof8j02e1t98) |
20
+ | Dimmer | 调光器 | tgq | Lightbulb | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/tgq?id=Kaof8ke9il4k4) |
21
+ | Remote Control | 遥控器 | ykq | | | [Documentation](https://developer.tuya.com/en/docs/iot/ykq?id=Kaof8ljn81aov) |
22
+ | Spotlight | 射灯 | sxd | Lightbulb | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/sxd?id=Kb7jayalltstu) |
23
+ | White Noise Light | 白噪音灯 | bzyd | Lightbulb<br> Switch | ✅ | Documentation |
24
+
25
+
26
+ ## Electrical Products
27
+
28
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
29
+ | ---- | ---- | ---- | ---- | ---- | ---- |
30
+ | Switch | 开关 | kg<br> tdq | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorykgczpc?id=Kaiuz08zj1l4y) |
31
+ | Socket | 插座 | cz | Outlet | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorykgczpc?id=Kaiuz08zj1l4y) |
32
+ | Power Strip | 排插 | pc | Outlet | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorykgczpc?id=Kaiuz08zj1l4y) |
33
+ | Scene Switch | 场景开关 | cjkg | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorycjkg?id=Kaiuz0bcukqc5) |
34
+ | Card Switch | 插卡取电开关 | ckqdkg | | | [Documentation](https://developer.tuya.com/en/docs/iot/categoryckqdkg?id=Kaiuz0e3wjryy) |
35
+ | Curtain Switch | 窗帘开关 | clkg | Window Covering | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/category-clkg?id=Kaiuz0gitil39) |
36
+ | Garage Door Opener | 车库门控制器 | ckmkzq | Garage Door Opener | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryckmkzq?id=Kaiuz0ipcboee) |
37
+ | Dimmer Switch | 调光开关 | tgkg | Lightbulb | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorytgkg?id=Kaiuz0ktx7m0o) |
38
+ | Fan Switch | 风扇开关 | fskg | Fanv2 | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryfskg?id=Kbcs129cl1gr9) |
39
+ | Wireless Switch | 无线开关 | wxkg | Stateless Programmable Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/wxkg?id=Kbeo9t3ryuqm5) |
40
+ | Scene Light Socket | 情景灯插座 | qjdcz | Switch | ✅ | Documentation |
41
+ | Temperature Control Socket | 温控插座 | wkcz | Switch<br> Temperature Sensor<br> Humidity Sensor | ✅ | Documentation |
42
+
43
+
44
+ ## Large Home Appliances
45
+
46
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
47
+ | ---- | ---- | ---- | ---- | ---- | ---- |
48
+ | Heater | 热水器 | rs | | | [Documentation](https://developer.tuya.com/en/docs/iot/categoryrs?id=Kaiuz0nfferyx) |
49
+ | Ventilation System | 新风机 | xfj | | | [Documentation](https://developer.tuya.com/en/docs/iot/categoryxfj?id=Kaiuz0pphkowg) |
50
+ | Refrigerator | 冰箱 | bx | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorybx?id=Kaiuz0s58ia6h) |
51
+ | Bathtub | 浴缸 | yg | | | [Documentation](https://developer.tuya.com/en/docs/iot/categoryyg?id=Kaiuz0uoisp47) |
52
+ | Washing Machine | 洗衣机 | xy | | | [Documentation](https://developer.tuya.com/en/docs/iot/categoryxy?id=Kaiuz0wxh08jf) |
53
+ | Air Conditioner | 空调 | kt | Heater Cooler<br> Humidifier Dehumidifier<br> Fanv2<br> Temperature Sensor<br> Humidity Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorykt?id=Kaiuz0z71ov2n) |
54
+ | Air Conditioner Controller | 空调控制器 | ktkzq | Heater Cooler<br> Humidifier Dehumidifier<br> Fanv2<br> Temperature Sensor<br> Humidity Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryktkzq?id=Kaiuz11eqy892) |
55
+ | Boiler | 壁挂炉 | bgl | | | [Documentation](https://developer.tuya.com/en/docs/iot/boilerbgl?id=Kaiuz13shgrhp) |
56
+
57
+
58
+ ## Small Home Appliances
59
+
60
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
61
+ |----------------------------| ---- |---------------| ---- | ---- |------------------------------------------------------------------------------------------|
62
+ | Robot Vacuum | 扫地机 | sd | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorysd?id=Kaiuz16b2s6yd) |
63
+ | Heater | 取暖器 | qn | Heater Cooler | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryqn?id=Kaiuz18kih0sm) |
64
+ | Air Purifier | 空气净化器 | kj | Air Purifier | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorykj?id=Kaiuz1atqo5l7) |
65
+ | Drying Rack | 晾衣架 | lyj | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorylyj?id=Kaiuz1cy926vh) |
66
+ | Diffuser | 香薰机 | xxj | Air Purifier<br> Lightbulb | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryxxj?id=Kaiuz1f9mo6bl) |
67
+ | Extraction hood | 香薰机 | yyj | Air Purifier<br> Lightbulb | ✅ | Documentation |
68
+ | Curtain | 窗帘 | cl | Window Covering | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorycl?id=Kaiuz1hnpo7df) |
69
+ | Door and Window Controller | 门窗控制器 | mc | Window | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorymc?id=Kaiuz1jyoassg) |
70
+ | Thermostat | 温控器 | wk | Thermostat | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorywk?id=Kaiuz1m1xqnt6) |
71
+ | Thermostat Valve | 温控阀 | wkf | Thermostat | ✅ | Documentation |
72
+ | Bathroom Heater | 浴霸 | yb | | | [Documentation](https://developer.tuya.com/en/docs/iot/categoryyb?id=Kaiuz1oajgpib) |
73
+ | Irrigator | 灌溉器 | ggq<br> sfkzq | Valve | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryggq?id=Kaiuz1qib7z0k) |
74
+ | Humidifier | 加湿器 | jsq | Humidifier Dehumidifier | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryjsq?id=Kaiuz1smr440b) |
75
+ | Dehumidifier | 除湿机 | cs | Humidifier Dehumidifier | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorycs?id=Kaiuz1vcz4dha) |
76
+ | Fan | 风扇 | fs | Fanv2 | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryfs?id=Kaiuz1xweel1c) |
77
+ | Water Purifier | 净水器 | js | | | [Documentation](https://developer.tuya.com/en/docs/iot/categoryjs?id=Kaiuz204l58n9) |
78
+ | Electric Blanket | 电热毯 | dr | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorydr?id=Kaiuz22dyc66p) |
79
+ | Pet Treat Feeder | 宠物弹射喂食器 | cwtswsq | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorycwtswsq?id=Kaiuz24lq3fq5) |
80
+ | Pet Ball Thrower | 宠物网球发射器 | cwwqfsq | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorycwwqfsq?id=Kaiuz26r7g1up) |
81
+ | HVAC | 暖通器 | ntq | | | [Documentation](https://developer.tuya.com/en/docs/iot/categoryntq?id=Kaiuz292sjqcz) |
82
+ | Pet Feeder | 宠物喂食器 | cwwsq | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorycwwsq?id=Kaiuz2b6vydld) |
83
+ | Pet Fountain | 宠物饮水机 | cwysj | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorycwysj?id=Kaiuz2dfro0nd) |
84
+ | Sofa | 沙发 | sf | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorysf?id=Kaiuz2fp9uqtt) |
85
+ | Electric Fireplace | 电壁炉 | dbl | | | [Documentation](https://developer.tuya.com/en/docs/iot/electric-fireplace?id=Kaiuz2hz4iyp6) |
86
+ | Smart Milk Kettle | 智能调奶器 | tnq | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorytnq?id=Kakf01agbfkfa) |
87
+ | Cat Toilet | 猫砂盆 | msp | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorymsp?id=Kakg2t7714ky7) |
88
+ | Towel Rack | 毛巾架 | mjj | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorymjj?id=Kakkmlm9k4cir) |
89
+ | Smart Indoor Garden | 植物生长机 | sz | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorysz?id=Kaiuz4e6h7up0) |
90
+
91
+
92
+ ## Kitchen Appliances
93
+
94
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
95
+ | ---- | ---- | ---- | ---- | ---- | ---- |
96
+ | Smart Kettle | 电茶壶 | bh | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorybh?id=Kaiuz2kly679h) |
97
+ | Bread Maker | 面包机 | mb | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorymb?id=Kaiuz2mrs0b2m) |
98
+ | Coffee Maker | 咖啡机 | kfj | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorykfj?id=Kaiuz2p12pc7f) |
99
+ | Bottle Warmer | 暖奶器 | nnq | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorynnq?id=Kaiuz2riz1s8d) |
100
+ | Milk Dispenser | 冲奶机 | cn | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorycn?id=Kaiuz2tosvw2a) |
101
+ | Sous Vide Cooker | 慢煮机 | mzj | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorymzj?id=Kaiuz2vy130ux) |
102
+ | Rice Cabinet | 米柜 | mg | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorymg?id=Kaiuz2yb04ocu) |
103
+ | Induction Cooker | 电磁炉 | dcl | | | [Documentation](https://developer.tuya.com/en/docs/iot/induction-cooker?id=Kaiuz30l7adxo) |
104
+ | Air Fryer | 空气炸锅 | kqzg | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorykqzg?id=Kakda4kug3k1j) |
105
+ | Bento Box | 智能饭盒 | znfh | | | [Documentation](https://developer.tuya.com/en/docs/iot/categoryznfh?id=Kako8jffneds3) |
106
+
107
+
108
+ ## Security & Video Surveillance
109
+
110
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
111
+ | ---- | ---- | ---- | ---- | ---- | ---- |
112
+ | Alarm Host | 报警主机 | mal | Security System | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorymal?id=Kaiuz33clqxaf) |
113
+ | Smart Camera | 智能摄像机 | sp | Motion Sensor<br> Doorbell | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorysp?id=Kaiuz35leyo12) |
114
+ | Wireless Doorbell | 无线门铃 | wxml | StatelessProgrammableSwitch | ✅ | Documentation |
115
+ | Siren Alarm | 声光报警传感器 | sgbj | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorysgbj?id=Kaiuz37tlpbnu) |
116
+ | Gas Alarm | 燃气报警传感器 | rqbj | Leak Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryrqbj?id=Kaiuz3d162ubw) |
117
+ | Smoke Alarm | 烟雾报警传感器 | ywbj | Smoke Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryywbj?id=Kaiuz3f6sf952) |
118
+ | Temperature and Humidity Sensor | 温湿度传感器 | wsdcg | Temperature Sensor<br> Humidity Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorywsdcg?id=Kaiuz3hinij34) |
119
+ | Contact Sensor | 门磁传感器 | mcs | Contact Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorymcs?id=Kaiuz3bnflmh2) |
120
+ | Vibration Sensor | 震动传感器 | zd | Motion Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryzd?id=Kaiuz3a5vrzno) |
121
+ | Water Detector | 水浸传感器 | sj | Leak Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorysj?id=Kaiuz3iub2sli) |
122
+ | Luminance Sensor | 亮度传感器 | ldcg | Light Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryldcg?id=Kaiuz3n7u69l8) |
123
+ | Pressure Sensor | 压力传感器 | ylcg<br> ylcgq | | | [Documentation](https://developer.tuya.com/en/docs/iot/categoryylcg?id=Kaiuz3kc2e4gm) |
124
+ | Emergency Button | 紧急按钮 | sos | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorysos?id=Kaiuz3oi6agjy) |
125
+ | PM2.5 Detector | PM2.5传感器 | pm25<br> pm2.5<br> pm25cgq | Air Quality Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorypm25?id=Kaiuz3qof3yfu) |
126
+ | CO Detector | CO报警传感器 | cobj<br> cocgq | Carbon Monoxide Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorycobj?id=Kaiuz3u1j6q1v) |
127
+ | CO2 Detector | CO2报警传感器 | co2bj<br> co2cgq | Carbon Dioxide Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryco2bj?id=Kaiuz3wes7yuy) |
128
+ | Multi-functional Sensor | 多功能传感器 | dgnbj | | | [Documentation](https://developer.tuya.com/en/docs/iot/categorydgnbj?id=Kaiuz3yorvzg3) |
129
+ | Methane Detector | 甲烷报警传感器 | jwbj | Leak Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryjwbj?id=Kaiuz40u98lkm) |
130
+ | Human Motion Sensor | 人体运动传感器 | pir | Motion Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categorypir?id=Kaiuz3ss11b80) |
131
+ | Human Presence Sensor | 人体存在传感器 | hps | Occupancy Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/categoryhps?id=Kaiuz42yhn1hs) |
132
+ | Smart Lock | 智能门锁 | ms<br> jtmspro | LockMechanism | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/ms?id=Kb0o2s20fn9sy) |
133
+ | Environmental Detector | 环境检测仪 | hjjcy | Air Quality Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/hjjcy?id=Kbeoad8y1nnlv) |
134
+
135
+
136
+ ## Exercise & Health
137
+
138
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
139
+ | ---- | ---- | ---- | ---- | ---- | ---- |
140
+ | Massage Chair | 按摩椅 | amy | | | [Documentation](https://developer.tuya.com/en/docs/iot/categoryamy?id=Kaiuz4bmwxufp) |
141
+ | Physiotherapy Products| 理疗产品 | liliao | | | [Documentation](https://developer.tuya.com/en/docs/iot/categoryliliao?id=Kakobe16fjw3l) |
142
+ | Smart Jump Rope | 跳绳 | ts | | | [Documentation](https://developer.tuya.com/en/docs/iot/ts?id=Kat27rqhu47br) |
143
+ | Body Fat Scale | 体脂秤 | tzc1 | | | [Documentation](https://developer.tuya.com/en/docs/iot/tzc1?id=Kat27zmbbs56t) |
144
+ | Smart Watch/Fitness Tracker | 手表/手环 | sb | | | [Documentation](https://developer.tuya.com/en/docs/iot/sb?id=Kat28k7efsbi9) |
145
+ | Smart Pill Box | 智能药盒 | znyh | | | [Documentation](https://developer.tuya.com/en/docs/iot/znyh?id=Kb2yxpjfcojdt) |
146
+
147
+
148
+ ## Gateway Control
149
+
150
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
151
+ | ---- | ---- | ---- | ---- | ---- | ---- |
152
+ | Multifunctional Gateway | 多功能网关 | wg | | | [Documentation](https://developer.tuya.com/en/docs/iot/wg2?id=Kau22nplrptfe) |
153
+
154
+
155
+ ## Energy
156
+
157
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
158
+ | ---- | ---- | ---- | ---- | ---- | ---- |
159
+ | Smart Electricity Meter | 智能电表 | zndb | | | [Documentation](https://developer.tuya.com/en/docs/iot/smart-meter?id=Kaiuz4gv6ack7) |
160
+ | Smart Water Meter | 智能水表 | znsb | | | [Documentation](https://developer.tuya.com/en/docs/iot/smart-water-meter?id=Kaiuz4jf0jy9f) |
161
+ | Circuit Breaker | 断路器 | dlq | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/iot/dlq?id=Kb0kidk9enyh8) |
162
+
163
+
164
+ ## Digital Entertainment
165
+
166
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
167
+ | ---- | ---- | ---- | ---- | ---- | ---- |
168
+ | TV | 电视 | ds | | | [Documentation](https://developer.tuya.com/en/docs/iot/ds?id=Kat8px3b6tb9o) |
169
+ | Projector | 投影仪 | tyy | | | [Documentation](https://developer.tuya.com/en/docs/iot/tyy?id=Kat8qpj75z0vv) |
170
+
171
+
172
+ ## Outdoor Travel
173
+
174
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
175
+ | ---- | ---- | ---- | ---- | ---- | ---- |
176
+ | Tracker | 定位器 | tracker | | | [Documentation](https://developer.tuya.com/en/docs/iot/tracker?id=Kajk21wwy2mhi) |
177
+
178
+
179
+ ## IR Remote Control
180
+
181
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
182
+ | ---- | ---- | ---- | ---- | ---- | ---- |
183
+ | Universal Remote Control | 万能遥控器 | wnykq<br> hwktwkq<br> wsdykq | Temperature Sensor<br> Humidity Sensor | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/ir-control-hub-open-service?id=Kb3oe2mk8ya72) |
184
+ | TV | 电视 | infrared_tv | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-common-apis?id=Kb3oe2o7z0so9) |
185
+ | STB | 机顶盒 | infrared_stb | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-common-apis?id=Kb3oe2o7z0so9) |
186
+ | TV Box | 电视盒子 | infrared_box | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-common-apis?id=Kb3oe2o7z0so9) |
187
+ | Air Conditioner | 空调 | infrared_ac | Heater Cooler<br> Humidifier Dehumidifier<br> Fanv2 | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-air-conditioner-apis?id=Kb3oe9ehg02fn) |
188
+ | Fan | 电风扇 | infrared_fan | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-common-apis?id=Kb3oe2o7z0so9) |
189
+ | Light | 灯 | infrared_light | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-common-apis?id=Kb3oe2o7z0so9) |
190
+ | Amplifier | 音响 | infrared_amplifier | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-common-apis?id=Kb3oe2o7z0so9) |
191
+ | Projector | 投影仪 | infrared_projector | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-common-apis?id=Kb3oe2o7z0so9) |
192
+ | DVD | DVD | qt | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-common-apis?id=Kb3oe2o7z0so9) |
193
+ | Camera | 相机 | qt | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-common-apis?id=Kb3oe2o7z0so9) |
194
+ | Water Heater | 热水器 | infrared_waterheater | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-common-apis?id=Kb3oe2o7z0so9) |
195
+ | Air Purifier | 净化器 | infrared_airpurifier | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-common-apis?id=Kb3oe2o7z0so9) |
196
+ | DIY | - | qt | Switch | ✅ | [Documentation](https://developer.tuya.com/en/docs/cloud/infrared-learning-apis?id=Kb3oeap4nqqm3) |
197
+
198
+
199
+ ## Others
200
+
201
+ | Name | Name (zh) | Code | Homebridge Service | Supported | Links |
202
+ | ---- | ---- | ---- | ---- | ---- | ---- |
203
+ | Fingerbot | 手指机器人 | szjqr | Switch | ✅ | Documentation |
204
+
205
+
206
+ For the undocumented product category, you can try override it to the most similar one. See [ADVANCED_OPTIONS.md](./ADVANCED_OPTIONS.md).