@homebridge-plugins/homebridge-tuya 2.2.1 → 3.0.0-beta.1

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 (341) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +161 -144
  3. package/config.schema.json +976 -11
  4. package/dist/{core → cloud/api}/TuyaOpenAPI.js +6 -7
  5. package/dist/cloud/api/TuyaOpenAPI.js.map +1 -0
  6. package/dist/{core → cloud/api}/TuyaOpenMQ.js +13 -11
  7. package/dist/cloud/api/TuyaOpenMQ.js.map +1 -0
  8. package/dist/cloud/device/TuyaCustomDeviceManager.js.map +1 -0
  9. package/dist/{device → cloud/device}/TuyaDevice.js +14 -1
  10. package/dist/cloud/device/TuyaDevice.js.map +1 -0
  11. package/dist/{device → cloud/device}/TuyaDeviceManager.js +8 -3
  12. package/dist/cloud/device/TuyaDeviceManager.js.map +1 -0
  13. package/dist/cloud/device/TuyaHomeDeviceManager.js.map +1 -0
  14. package/dist/config.js +1 -0
  15. package/dist/config.js.map +1 -1
  16. package/dist/local/CloudLocalReconciliation.js +180 -0
  17. package/dist/local/CloudLocalReconciliation.js.map +1 -0
  18. package/dist/local/DynamicChildDiscovery.js +154 -0
  19. package/dist/local/DynamicChildDiscovery.js.map +1 -0
  20. package/dist/local/LocalDevice.js +419 -0
  21. package/dist/local/LocalDevice.js.map +1 -0
  22. package/dist/local/LocalDeviceManager.js +833 -0
  23. package/dist/local/LocalDeviceManager.js.map +1 -0
  24. package/dist/local/TuyaDiscovery.js +248 -0
  25. package/dist/local/TuyaDiscovery.js.map +1 -0
  26. package/dist/local/ZigbeeEventDetection.js +213 -0
  27. package/dist/local/ZigbeeEventDetection.js.map +1 -0
  28. package/dist/local/ZigbeeGatewayDetection.js +109 -0
  29. package/dist/local/ZigbeeGatewayDetection.js.map +1 -0
  30. package/dist/local/config.js +6 -0
  31. package/dist/local/config.js.map +1 -0
  32. package/dist/local/protocol/ChildPayloadUtility.js +94 -0
  33. package/dist/local/protocol/ChildPayloadUtility.js.map +1 -0
  34. package/dist/local/protocol/Protocol.js +3 -0
  35. package/dist/local/protocol/Protocol.js.map +1 -0
  36. package/dist/local/protocol/ProtocolFactory.js +27 -0
  37. package/dist/local/protocol/ProtocolFactory.js.map +1 -0
  38. package/dist/local/protocol/ProtocolUtilities.js +329 -0
  39. package/dist/local/protocol/ProtocolUtilities.js.map +1 -0
  40. package/dist/local/protocol/ProtocolV31V32.js +60 -0
  41. package/dist/local/protocol/ProtocolV31V32.js.map +1 -0
  42. package/dist/local/protocol/ProtocolV33.js +52 -0
  43. package/dist/local/protocol/ProtocolV33.js.map +1 -0
  44. package/dist/local/protocol/ProtocolV34.js +104 -0
  45. package/dist/local/protocol/ProtocolV34.js.map +1 -0
  46. package/dist/local/protocol/ProtocolV35.js +77 -0
  47. package/dist/local/protocol/ProtocolV35.js.map +1 -0
  48. package/dist/platform.js +149 -69
  49. package/dist/platform.js.map +1 -1
  50. package/dist/shared/AccessoryFactory.js +276 -0
  51. package/dist/shared/AccessoryFactory.js.map +1 -0
  52. package/dist/{accessory → shared/accessories}/AccessoryFactory.js +2 -2
  53. package/dist/shared/accessories/AccessoryFactory.js.map +1 -0
  54. package/dist/shared/accessories/AirConditionerAccessory.js.map +1 -0
  55. package/dist/{accessory → shared/accessories}/AirPurifierAccessory.js +1 -1
  56. package/dist/shared/accessories/AirPurifierAccessory.js.map +1 -0
  57. package/dist/shared/accessories/AirQualitySensorAccessory.js.map +1 -0
  58. package/dist/{accessory → shared/accessories}/BaseAccessory.js +99 -30
  59. package/dist/shared/accessories/BaseAccessory.js.map +1 -0
  60. package/dist/shared/accessories/BlindsAccessory.js +199 -0
  61. package/dist/shared/accessories/BlindsAccessory.js.map +1 -0
  62. package/dist/{accessory → shared/accessories}/CameraAccessory.js +7 -3
  63. package/dist/shared/accessories/CameraAccessory.js.map +1 -0
  64. package/dist/shared/accessories/CarbonDioxideSensorAccessory.js.map +1 -0
  65. package/dist/shared/accessories/CarbonMonoxideSensorAccessory.js.map +1 -0
  66. package/dist/shared/accessories/ContactSensorAccessory.js.map +1 -0
  67. package/dist/shared/accessories/DehumidifierAccessory.js.map +1 -0
  68. package/dist/shared/accessories/DiffuserAccessory.js.map +1 -0
  69. package/dist/shared/accessories/DimmerAccessory.js.map +1 -0
  70. package/dist/{accessory → shared/accessories}/DoorbellAccessory.js +3 -1
  71. package/dist/shared/accessories/DoorbellAccessory.js.map +1 -0
  72. package/dist/{accessory → shared/accessories}/ExtractionHoodAccessory.js +4 -2
  73. package/dist/shared/accessories/ExtractionHoodAccessory.js.map +1 -0
  74. package/dist/{accessory → shared/accessories}/FanAccessory.js +10 -4
  75. package/dist/shared/accessories/FanAccessory.js.map +1 -0
  76. package/dist/shared/accessories/GarageDoorAccessory.js.map +1 -0
  77. package/dist/shared/accessories/HeaterAccessory.js.map +1 -0
  78. package/dist/shared/accessories/HeaterAccessory_old.js.map +1 -0
  79. package/dist/shared/accessories/HumanPresenceSensorAccessory.js.map +1 -0
  80. package/dist/{accessory → shared/accessories}/HumidifierAccessory.js +3 -1
  81. package/dist/shared/accessories/HumidifierAccessory.js.map +1 -0
  82. package/dist/{accessory → shared/accessories}/IRAirConditionerAccessory.js +2 -2
  83. package/dist/shared/accessories/IRAirConditionerAccessory.js.map +1 -0
  84. package/dist/shared/accessories/IRControlHubAccessory.js.map +1 -0
  85. package/dist/shared/accessories/IRControlHubSubAccessory.js.map +1 -0
  86. package/dist/shared/accessories/IRGenericAccessory.js.map +1 -0
  87. package/dist/shared/accessories/LeakSensorAccessory.js.map +1 -0
  88. package/dist/shared/accessories/LightAccessory.js.map +1 -0
  89. package/dist/shared/accessories/LightSensorAccessory.js.map +1 -0
  90. package/dist/shared/accessories/LocationWeatherAccessory.js.map +1 -0
  91. package/dist/shared/accessories/LockAccessory.js.map +1 -0
  92. package/dist/shared/accessories/MotionSensorAccessory.js.map +1 -0
  93. package/dist/shared/accessories/OutletAccessory.js.map +1 -0
  94. package/dist/shared/accessories/PetFeederAccessory.js.map +1 -0
  95. package/dist/shared/accessories/SceneAccessory.js.map +1 -0
  96. package/dist/{accessory → shared/accessories}/SceneSwitchAccessory.js +1 -1
  97. package/dist/shared/accessories/SceneSwitchAccessory.js.map +1 -0
  98. package/dist/shared/accessories/SecuritySystemAccessory.js.map +1 -0
  99. package/dist/shared/accessories/SmokeSensorAccessory.js.map +1 -0
  100. package/dist/shared/accessories/SwitchAccessory.js +148 -0
  101. package/dist/shared/accessories/SwitchAccessory.js.map +1 -0
  102. package/dist/shared/accessories/TemperatureHumiditySensorAccessory.js.map +1 -0
  103. package/dist/shared/accessories/ThermostatAccessory.js.map +1 -0
  104. package/dist/shared/accessories/TowerRackAccessory.js.map +1 -0
  105. package/dist/{accessory → shared/accessories}/ValveAccessory.js +1 -1
  106. package/dist/shared/accessories/ValveAccessory.js.map +1 -0
  107. package/dist/{accessory → shared/accessories}/VibrationSensorAccessory.js +7 -3
  108. package/dist/shared/accessories/VibrationSensorAccessory.js.map +1 -0
  109. package/dist/shared/accessories/WeatherStationAccessory.js.map +1 -0
  110. package/dist/shared/accessories/WetBulbGlobeTemperatureAccessory.js.map +1 -0
  111. package/dist/shared/accessories/WhiteNoiseLightAccessory.js.map +1 -0
  112. package/dist/shared/accessories/WindowAccessory.js.map +1 -0
  113. package/dist/shared/accessories/WindowCoveringAccessory.js.map +1 -0
  114. package/dist/shared/accessories/WirelessSwitchAccessory.js.map +1 -0
  115. package/dist/shared/accessories/characteristic/Active.js.map +1 -0
  116. package/dist/{accessory → shared/accessories}/characteristic/AirQuality.js +1 -1
  117. package/dist/shared/accessories/characteristic/AirQuality.js.map +1 -0
  118. package/dist/shared/accessories/characteristic/CurrentRelativeHumidity.js.map +1 -0
  119. package/dist/shared/accessories/characteristic/CurrentTemperature.js.map +1 -0
  120. package/dist/shared/accessories/characteristic/CurrentWeather.js.map +1 -0
  121. package/dist/shared/accessories/characteristic/CurrentWeatherByOpenMeteo.js.map +1 -0
  122. package/dist/shared/accessories/characteristic/CurrentWetBulbGlobeTemperature.js.map +1 -0
  123. package/dist/shared/accessories/characteristic/EnergyUsage.js.map +1 -0
  124. package/dist/shared/accessories/characteristic/Light.js.map +1 -0
  125. package/dist/shared/accessories/characteristic/LightSensor.js.map +1 -0
  126. package/dist/shared/accessories/characteristic/LockPhysicalControls.js.map +1 -0
  127. package/dist/{accessory → shared/accessories}/characteristic/MotionDetected.js +1 -1
  128. package/dist/shared/accessories/characteristic/MotionDetected.js.map +1 -0
  129. package/dist/shared/accessories/characteristic/Name.js.map +1 -0
  130. package/dist/shared/accessories/characteristic/OccupancyDetected.js.map +1 -0
  131. package/dist/{accessory → shared/accessories}/characteristic/On.js +1 -1
  132. package/dist/shared/accessories/characteristic/On.js.map +1 -0
  133. package/dist/shared/accessories/characteristic/OutletInUse.js.map +1 -0
  134. package/dist/{accessory → shared/accessories}/characteristic/ProgrammableSwitchEvent.js +2 -2
  135. package/dist/shared/accessories/characteristic/ProgrammableSwitchEvent.js.map +1 -0
  136. package/dist/shared/accessories/characteristic/RelativeHumidityDehumidifierThreshold.js.map +1 -0
  137. package/dist/shared/accessories/characteristic/RotationSpeed.js.map +1 -0
  138. package/dist/shared/accessories/characteristic/SecuritySystemState.js.map +1 -0
  139. package/dist/shared/accessories/characteristic/SwingMode.js.map +1 -0
  140. package/dist/shared/accessories/characteristic/TargetTemperature.js.map +1 -0
  141. package/dist/shared/accessories/characteristic/TemperatureDisplayUnits.js.map +1 -0
  142. package/dist/shared/util/ConfigHash.js +79 -0
  143. package/dist/shared/util/ConfigHash.js.map +1 -0
  144. package/dist/shared/util/FfmpegStreamingProcess.js.map +1 -0
  145. package/dist/shared/util/InfraredTool.js.map +1 -0
  146. package/dist/shared/util/Logger.js.map +1 -0
  147. package/dist/shared/util/TuyaRecordingDelegate.js.map +1 -0
  148. package/dist/shared/util/TuyaStreamDelegate.js.map +1 -0
  149. package/dist/shared/util/color.js.map +1 -0
  150. package/dist/shared/util/util.js +135 -0
  151. package/dist/shared/util/util.js.map +1 -0
  152. package/eslint.config.mjs +52 -0
  153. package/jest.config.js +6 -0
  154. package/package.json +22 -27
  155. package/test/__mocks__/@homebridge-camera-utils.js +10 -0
  156. package/test/__mocks__/color-convert.js +24 -0
  157. package/test/__mocks__/kelvin-to-rgb.js +21 -0
  158. package/test/accessoryFactory.test.ts +522 -0
  159. package/test/config.test.ts +430 -0
  160. package/test/custom.test.ts +4 -4
  161. package/test/errorHandling.test.ts +570 -0
  162. package/test/errorHandlingCoverage.test.ts +410 -0
  163. package/test/home.test.ts +4 -4
  164. package/test/localDevice.test.ts +616 -0
  165. package/test/localDeviceManager.behavior.test.ts +185 -0
  166. package/test/localDeviceManager.test.ts +268 -0
  167. package/test/mqttMessages.test.ts +495 -0
  168. package/test/platform.test.ts +515 -0
  169. package/test/platform.validation.local.test.ts +250 -0
  170. package/test/protocol.test.ts +446 -0
  171. package/test/protocolUtilities.test.ts +351 -0
  172. package/test/sanitizeName.test.ts +2 -1
  173. package/test/tuyaCustomDeviceManager.test.ts +469 -0
  174. package/test/tuyaDevice.test.ts +425 -0
  175. package/test/tuyaDeviceManager.test.ts +813 -0
  176. package/test/tuyaDiscovery.test.ts +439 -0
  177. package/test/tuyaHomeDeviceManager.test.ts +540 -0
  178. package/test/tuyaOpenAPI.test.ts +404 -0
  179. package/test/tuyaOpenMQ.test.ts +444 -0
  180. package/test/util.test.ts +318 -0
  181. package/test/util.ts +4 -3
  182. package/test/zigbee/ChildPayloadUtility.test.ts +199 -0
  183. package/test/zigbee/CloudLocalReconciliation.test.ts +284 -0
  184. package/test/zigbee/DynamicChildDiscovery.test.ts +333 -0
  185. package/test/zigbee/LocalDevice.zigbee.test.ts +274 -0
  186. package/test/zigbee/LocalDeviceManager.cloud-discovery.test.ts +163 -0
  187. package/test/zigbee/LocalDeviceManager.zigbee.reconnect.test.ts +200 -0
  188. package/test/zigbee/LocalDeviceManager.zigbee.test.ts +344 -0
  189. package/test/zigbee/ZigbeeEventDetection.test.ts +418 -0
  190. package/test/zigbee/ZigbeeGatewayDetection.test.ts +222 -0
  191. package/tuya-local-configs/dev-1.hash +1 -0
  192. package/tuya-local-configs/device1.hash +1 -0
  193. package/wiki/Get-Local-Keys-for-Your-Devices.md +85 -0
  194. package/dist/accessory/AccessoryFactory.js.map +0 -1
  195. package/dist/accessory/AirConditionerAccessory.js.map +0 -1
  196. package/dist/accessory/AirPurifierAccessory.js.map +0 -1
  197. package/dist/accessory/AirQualitySensorAccessory.js.map +0 -1
  198. package/dist/accessory/BaseAccessory.js.map +0 -1
  199. package/dist/accessory/CameraAccessory.js.map +0 -1
  200. package/dist/accessory/CarbonDioxideSensorAccessory.js.map +0 -1
  201. package/dist/accessory/CarbonMonoxideSensorAccessory.js.map +0 -1
  202. package/dist/accessory/ContactSensorAccessory.js.map +0 -1
  203. package/dist/accessory/DehumidifierAccessory.js.map +0 -1
  204. package/dist/accessory/DiffuserAccessory.js.map +0 -1
  205. package/dist/accessory/DimmerAccessory.js.map +0 -1
  206. package/dist/accessory/DoorbellAccessory.js.map +0 -1
  207. package/dist/accessory/ExtractionHoodAccessory.js.map +0 -1
  208. package/dist/accessory/FanAccessory.js.map +0 -1
  209. package/dist/accessory/GarageDoorAccessory.js.map +0 -1
  210. package/dist/accessory/HeaterAccessory.js.map +0 -1
  211. package/dist/accessory/HeaterAccessory_old.js.map +0 -1
  212. package/dist/accessory/HumanPresenceSensorAccessory.js.map +0 -1
  213. package/dist/accessory/HumidifierAccessory.js.map +0 -1
  214. package/dist/accessory/IRAirConditionerAccessory.js.map +0 -1
  215. package/dist/accessory/IRControlHubAccessory.js.map +0 -1
  216. package/dist/accessory/IRControlHubSubAccessory.js.map +0 -1
  217. package/dist/accessory/IRGenericAccessory.js.map +0 -1
  218. package/dist/accessory/LeakSensorAccessory.js.map +0 -1
  219. package/dist/accessory/LightAccessory.js.map +0 -1
  220. package/dist/accessory/LightSensorAccessory.js.map +0 -1
  221. package/dist/accessory/LocationWeatherAccessory.js.map +0 -1
  222. package/dist/accessory/LockAccessory.js.map +0 -1
  223. package/dist/accessory/MotionSensorAccessory.js.map +0 -1
  224. package/dist/accessory/OutletAccessory.js.map +0 -1
  225. package/dist/accessory/PetFeederAccessory.js.map +0 -1
  226. package/dist/accessory/SceneAccessory.js.map +0 -1
  227. package/dist/accessory/SceneSwitchAccessory.js.map +0 -1
  228. package/dist/accessory/SecuritySystemAccessory.js.map +0 -1
  229. package/dist/accessory/SmokeSensorAccessory.js.map +0 -1
  230. package/dist/accessory/SwitchAccessory.js +0 -85
  231. package/dist/accessory/SwitchAccessory.js.map +0 -1
  232. package/dist/accessory/TemperatureHumiditySensorAccessory.js.map +0 -1
  233. package/dist/accessory/ThermostatAccessory.js.map +0 -1
  234. package/dist/accessory/TowerRackAccessory.js.map +0 -1
  235. package/dist/accessory/ValveAccessory.js.map +0 -1
  236. package/dist/accessory/VibrationSensorAccessory.js.map +0 -1
  237. package/dist/accessory/WeatherStationAccessory.js.map +0 -1
  238. package/dist/accessory/WetBulbGlobeTemperatureAccessory.js.map +0 -1
  239. package/dist/accessory/WhiteNoiseLightAccessory.js.map +0 -1
  240. package/dist/accessory/WindowAccessory.js.map +0 -1
  241. package/dist/accessory/WindowCoveringAccessory.js.map +0 -1
  242. package/dist/accessory/WirelessSwitchAccessory.js.map +0 -1
  243. package/dist/accessory/characteristic/Active.js.map +0 -1
  244. package/dist/accessory/characteristic/AirQuality.js.map +0 -1
  245. package/dist/accessory/characteristic/CurrentRelativeHumidity.js.map +0 -1
  246. package/dist/accessory/characteristic/CurrentTemperature.js.map +0 -1
  247. package/dist/accessory/characteristic/CurrentWeather.js.map +0 -1
  248. package/dist/accessory/characteristic/CurrentWeatherByOpenMeteo.js.map +0 -1
  249. package/dist/accessory/characteristic/CurrentWetBulbGlobeTemperature.js.map +0 -1
  250. package/dist/accessory/characteristic/EnergyUsage.js.map +0 -1
  251. package/dist/accessory/characteristic/Light.js.map +0 -1
  252. package/dist/accessory/characteristic/LightSensor.js.map +0 -1
  253. package/dist/accessory/characteristic/LockPhysicalControls.js.map +0 -1
  254. package/dist/accessory/characteristic/MotionDetected.js.map +0 -1
  255. package/dist/accessory/characteristic/Name.js.map +0 -1
  256. package/dist/accessory/characteristic/OccupancyDetected.js.map +0 -1
  257. package/dist/accessory/characteristic/On.js.map +0 -1
  258. package/dist/accessory/characteristic/OutletInUse.js.map +0 -1
  259. package/dist/accessory/characteristic/ProgrammableSwitchEvent.js.map +0 -1
  260. package/dist/accessory/characteristic/RelativeHumidityDehumidifierThreshold.js.map +0 -1
  261. package/dist/accessory/characteristic/RotationSpeed.js.map +0 -1
  262. package/dist/accessory/characteristic/SecuritySystemState.js.map +0 -1
  263. package/dist/accessory/characteristic/SwingMode.js.map +0 -1
  264. package/dist/accessory/characteristic/TargetTemperature.js.map +0 -1
  265. package/dist/accessory/characteristic/TemperatureDisplayUnits.js.map +0 -1
  266. package/dist/core/TuyaOpenAPI.js.map +0 -1
  267. package/dist/core/TuyaOpenMQ.js.map +0 -1
  268. package/dist/device/TuyaCustomDeviceManager.js.map +0 -1
  269. package/dist/device/TuyaDevice.js.map +0 -1
  270. package/dist/device/TuyaDeviceManager.js.map +0 -1
  271. package/dist/device/TuyaHomeDeviceManager.js.map +0 -1
  272. package/dist/util/FfmpegStreamingProcess.js.map +0 -1
  273. package/dist/util/InfraredTool.js.map +0 -1
  274. package/dist/util/Logger.js.map +0 -1
  275. package/dist/util/TuyaRecordingDelegate.js.map +0 -1
  276. package/dist/util/TuyaStreamDelegate.js.map +0 -1
  277. package/dist/util/color.js.map +0 -1
  278. package/dist/util/util.js +0 -63
  279. package/dist/util/util.js.map +0 -1
  280. /package/dist/{device → cloud/device}/TuyaCustomDeviceManager.js +0 -0
  281. /package/dist/{device → cloud/device}/TuyaHomeDeviceManager.js +0 -0
  282. /package/dist/{accessory → shared/accessories}/AirConditionerAccessory.js +0 -0
  283. /package/dist/{accessory → shared/accessories}/AirQualitySensorAccessory.js +0 -0
  284. /package/dist/{accessory → shared/accessories}/CarbonDioxideSensorAccessory.js +0 -0
  285. /package/dist/{accessory → shared/accessories}/CarbonMonoxideSensorAccessory.js +0 -0
  286. /package/dist/{accessory → shared/accessories}/ContactSensorAccessory.js +0 -0
  287. /package/dist/{accessory → shared/accessories}/DehumidifierAccessory.js +0 -0
  288. /package/dist/{accessory → shared/accessories}/DiffuserAccessory.js +0 -0
  289. /package/dist/{accessory → shared/accessories}/DimmerAccessory.js +0 -0
  290. /package/dist/{accessory → shared/accessories}/GarageDoorAccessory.js +0 -0
  291. /package/dist/{accessory → shared/accessories}/HeaterAccessory.js +0 -0
  292. /package/dist/{accessory → shared/accessories}/HeaterAccessory_old.js +0 -0
  293. /package/dist/{accessory → shared/accessories}/HumanPresenceSensorAccessory.js +0 -0
  294. /package/dist/{accessory → shared/accessories}/IRControlHubAccessory.js +0 -0
  295. /package/dist/{accessory → shared/accessories}/IRControlHubSubAccessory.js +0 -0
  296. /package/dist/{accessory → shared/accessories}/IRGenericAccessory.js +0 -0
  297. /package/dist/{accessory → shared/accessories}/LeakSensorAccessory.js +0 -0
  298. /package/dist/{accessory → shared/accessories}/LightAccessory.js +0 -0
  299. /package/dist/{accessory → shared/accessories}/LightSensorAccessory.js +0 -0
  300. /package/dist/{accessory → shared/accessories}/LocationWeatherAccessory.js +0 -0
  301. /package/dist/{accessory → shared/accessories}/LockAccessory.js +0 -0
  302. /package/dist/{accessory → shared/accessories}/MotionSensorAccessory.js +0 -0
  303. /package/dist/{accessory → shared/accessories}/OutletAccessory.js +0 -0
  304. /package/dist/{accessory → shared/accessories}/PetFeederAccessory.js +0 -0
  305. /package/dist/{accessory → shared/accessories}/SceneAccessory.js +0 -0
  306. /package/dist/{accessory → shared/accessories}/SecuritySystemAccessory.js +0 -0
  307. /package/dist/{accessory → shared/accessories}/SmokeSensorAccessory.js +0 -0
  308. /package/dist/{accessory → shared/accessories}/TemperatureHumiditySensorAccessory.js +0 -0
  309. /package/dist/{accessory → shared/accessories}/ThermostatAccessory.js +0 -0
  310. /package/dist/{accessory → shared/accessories}/TowerRackAccessory.js +0 -0
  311. /package/dist/{accessory → shared/accessories}/WeatherStationAccessory.js +0 -0
  312. /package/dist/{accessory → shared/accessories}/WetBulbGlobeTemperatureAccessory.js +0 -0
  313. /package/dist/{accessory → shared/accessories}/WhiteNoiseLightAccessory.js +0 -0
  314. /package/dist/{accessory → shared/accessories}/WindowAccessory.js +0 -0
  315. /package/dist/{accessory → shared/accessories}/WindowCoveringAccessory.js +0 -0
  316. /package/dist/{accessory → shared/accessories}/WirelessSwitchAccessory.js +0 -0
  317. /package/dist/{accessory → shared/accessories}/characteristic/Active.js +0 -0
  318. /package/dist/{accessory → shared/accessories}/characteristic/CurrentRelativeHumidity.js +0 -0
  319. /package/dist/{accessory → shared/accessories}/characteristic/CurrentTemperature.js +0 -0
  320. /package/dist/{accessory → shared/accessories}/characteristic/CurrentWeather.js +0 -0
  321. /package/dist/{accessory → shared/accessories}/characteristic/CurrentWeatherByOpenMeteo.js +0 -0
  322. /package/dist/{accessory → shared/accessories}/characteristic/CurrentWetBulbGlobeTemperature.js +0 -0
  323. /package/dist/{accessory → shared/accessories}/characteristic/EnergyUsage.js +0 -0
  324. /package/dist/{accessory → shared/accessories}/characteristic/Light.js +0 -0
  325. /package/dist/{accessory → shared/accessories}/characteristic/LightSensor.js +0 -0
  326. /package/dist/{accessory → shared/accessories}/characteristic/LockPhysicalControls.js +0 -0
  327. /package/dist/{accessory → shared/accessories}/characteristic/Name.js +0 -0
  328. /package/dist/{accessory → shared/accessories}/characteristic/OccupancyDetected.js +0 -0
  329. /package/dist/{accessory → shared/accessories}/characteristic/OutletInUse.js +0 -0
  330. /package/dist/{accessory → shared/accessories}/characteristic/RelativeHumidityDehumidifierThreshold.js +0 -0
  331. /package/dist/{accessory → shared/accessories}/characteristic/RotationSpeed.js +0 -0
  332. /package/dist/{accessory → shared/accessories}/characteristic/SecuritySystemState.js +0 -0
  333. /package/dist/{accessory → shared/accessories}/characteristic/SwingMode.js +0 -0
  334. /package/dist/{accessory → shared/accessories}/characteristic/TargetTemperature.js +0 -0
  335. /package/dist/{accessory → shared/accessories}/characteristic/TemperatureDisplayUnits.js +0 -0
  336. /package/dist/{util → shared/util}/FfmpegStreamingProcess.js +0 -0
  337. /package/dist/{util → shared/util}/InfraredTool.js +0 -0
  338. /package/dist/{util → shared/util}/Logger.js +0 -0
  339. /package/dist/{util → shared/util}/TuyaRecordingDelegate.js +0 -0
  340. /package/dist/{util → shared/util}/TuyaStreamDelegate.js +0 -0
  341. /package/dist/{util → shared/util}/color.js +0 -0
@@ -1,13 +1,8 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const debounce_1 = require("debounce");
7
- const lodash_isequal_1 = __importDefault(require("lodash.isequal"));
8
- const TuyaDevice_1 = require("../device/TuyaDevice");
9
3
  const util_1 = require("../util/util");
10
4
  const Logger_1 = require("../util/Logger");
5
+ const util_2 = require("../util/util");
11
6
  const MANUFACTURER = 'Tuya Inc.';
12
7
  const SCHEMA_CODE = {
13
8
  BATTERY_STATE: ['battery_state'],
@@ -21,23 +16,60 @@ const SCHEMA_CODE = {
21
16
  * https://developer.tuya.com/en/docs/iot/standarddescription?id=K9i5ql6waswzq
22
17
  */
23
18
  class BaseAccessory {
19
+ get deviceManager() {
20
+ // Return whichever manager owns this device (local takes priority in hybrid mode)
21
+ const deviceID = this.accessory.context.deviceID;
22
+ if (deviceID && this.platform.localDeviceManager?.getDevice(deviceID)) {
23
+ return this.platform.localDeviceManager;
24
+ }
25
+ return this.platform.deviceManager;
26
+ }
27
+ get deviceSource() {
28
+ // Determine which source this device comes from for override lookup
29
+ const deviceID = this.accessory.context.deviceID;
30
+ if (deviceID && this.platform.localDeviceManager?.getDevice(deviceID)) {
31
+ return 'local';
32
+ }
33
+ if (deviceID && this.platform.deviceManager?.getDevice(deviceID)) {
34
+ return 'cloud';
35
+ }
36
+ return undefined;
37
+ }
38
+ get device() {
39
+ // Try local device manager first (for local-only or hybrid modes)
40
+ const localDevice = this.platform.localDeviceManager?.getDevice(this.accessory.context.deviceID);
41
+ if (localDevice) {
42
+ return localDevice;
43
+ }
44
+ // Fall back to cloud device manager
45
+ return this.platform.deviceManager?.getDevice(this.accessory.context.deviceID);
46
+ }
47
+ get log() {
48
+ if (!this.cachedLog) {
49
+ const deviceName = this.device?.name ?? this.device?.id ?? this.accessory.context.deviceID ?? 'Unknown Device';
50
+ this.cachedLog = new Logger_1.PrefixLogger(this.platform.log, deviceName, this.platform.options.debug && ((this.platform.options.debugLevel ?? '').length > 0
51
+ ? this.platform.options.debugLevel?.includes(this.device?.id ?? '')
52
+ : true));
53
+ }
54
+ return this.cachedLog;
55
+ }
24
56
  constructor(platform, accessory) {
25
57
  this.platform = platform;
26
58
  this.accessory = accessory;
27
59
  this.Service = this.platform.api.hap.Service;
28
60
  this.Characteristic = this.platform.api.hap.Characteristic;
29
- this.deviceManager = this.platform.deviceManager;
30
- this.device = this.deviceManager.getDevice(this.accessory.context.deviceID);
31
- this.log = new Logger_1.PrefixLogger(this.platform.log, this.device.name.length > 0 ? this.device.name : this.device.id, this.platform.options.debug && ((this.platform.options.debugLevel ?? '').length > 0
32
- ? this.platform.options.debugLevel?.includes(this.device.id)
33
- : true));
34
- this.intialized = false;
61
+ this.initialized = false;
35
62
  this.sendQueue = new Map();
36
- this.debounceSendCommands = (0, debounce_1.debounce)(async () => {
63
+ this.debounceSendCommands = (0, util_2.debounce)(async () => {
37
64
  const commands = [...this.sendQueue.values()];
38
65
  if (commands.length === 0) {
39
66
  return;
40
67
  }
68
+ if (!this.device || !this.deviceManager) {
69
+ this.log.warn('Device manager or device not available, cannot send commands.');
70
+ this.sendQueue.clear();
71
+ return;
72
+ }
41
73
  await this.deviceManager.sendCommands(this.device.id, commands);
42
74
  this.sendQueue.clear();
43
75
  }, 100);
@@ -47,6 +79,15 @@ class BaseAccessory {
47
79
  addAccessoryInfoService() {
48
80
  const service = this.accessory.getService(this.Service.AccessoryInformation)
49
81
  || this.accessory.addService(this.Service.AccessoryInformation);
82
+ if (!this.device) {
83
+ // Use fallback values if device is not available yet
84
+ const safeName = (0, util_1.sanitizeName)(this.accessory.displayName) ?? 'Tuya Device';
85
+ service
86
+ .setCharacteristic(this.Characteristic.Manufacturer, MANUFACTURER)
87
+ .setCharacteristic(this.Characteristic.Name, safeName)
88
+ .setCharacteristic(this.Characteristic.ConfiguredName, safeName);
89
+ return;
90
+ }
50
91
  const safeName = (0, util_1.sanitizeName)(this.device.name) ?? (this.device.id || 'Tuya Device');
51
92
  service
52
93
  .setCharacteristic(this.Characteristic.Manufacturer, MANUFACTURER)
@@ -69,10 +110,16 @@ class BaseAccessory {
69
110
  .onGet(() => {
70
111
  if (stateSchema) {
71
112
  const status = this.getStatus(stateSchema.code);
113
+ if (!status) {
114
+ return BATTERY_LEVEL_NORMAL;
115
+ }
72
116
  return (status.value === 'low') ? BATTERY_LEVEL_LOW : BATTERY_LEVEL_NORMAL;
73
117
  }
74
118
  // fallback
75
119
  const status = this.getStatus(percentSchema.code);
120
+ if (!status) {
121
+ return BATTERY_LEVEL_NORMAL;
122
+ }
76
123
  return (status.value <= 20) ? BATTERY_LEVEL_LOW : BATTERY_LEVEL_NORMAL;
77
124
  });
78
125
  }
@@ -81,6 +128,9 @@ class BaseAccessory {
81
128
  service.getCharacteristic(this.Characteristic.BatteryLevel)
82
129
  .onGet(() => {
83
130
  const status = this.getStatus(percentSchema.code);
131
+ if (!status) {
132
+ return 0;
133
+ }
84
134
  return (0, util_1.limit)(status.value / multiple, 0, 100);
85
135
  });
86
136
  const chargingSchema = this.getSchema(...SCHEMA_CODE.BATTERY_CHARGING);
@@ -89,6 +139,9 @@ class BaseAccessory {
89
139
  service.getCharacteristic(this.Characteristic.ChargingState)
90
140
  .onGet(() => {
91
141
  const status = this.getStatus(chargingSchema.code);
142
+ if (!status) {
143
+ return NOT_CHARGING;
144
+ }
92
145
  return status.value ? CHARGING : NOT_CHARGING;
93
146
  });
94
147
  }
@@ -99,7 +152,7 @@ class BaseAccessory {
99
152
  service.addOptionalCharacteristic(this.Characteristic.StatusActive);
100
153
  }
101
154
  service.getCharacteristic(this.Characteristic.StatusActive)
102
- .onGet(() => this.device.online);
155
+ .onGet(() => this.device?.online ?? true);
103
156
  }
104
157
  }
105
158
  async updateAllValues() {
@@ -128,37 +181,40 @@ class BaseAccessory {
128
181
  }
129
182
  }
130
183
  checkOnlineStatus() {
131
- if (!this.device.online) {
184
+ if (this.device?.online === false) {
132
185
  const { HapStatusError, HAPStatus } = this.platform.api.hap;
133
186
  throw new HapStatusError(-70402 /* HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
134
187
  }
135
188
  }
136
189
  getSchema(...codes) {
190
+ if (!this.device) {
191
+ return undefined;
192
+ }
137
193
  for (const code of codes) {
138
194
  const schema = this.device.schema.find(schema => {
139
195
  // ignore case
140
196
  return schema.code.toLowerCase() === code.toLowerCase();
141
197
  });
142
- if (!schema) {
143
- continue;
144
- }
145
- // Readable schema must have a status
146
- if ([TuyaDevice_1.TuyaDeviceSchemaMode.READ_WRITE, TuyaDevice_1.TuyaDeviceSchemaMode.READ_ONLY].includes(schema.mode)
147
- && !this.getStatus(schema.code)) {
148
- this.log.warn('no status');
149
- continue;
198
+ if (schema) {
199
+ return schema;
150
200
  }
151
- return schema;
152
201
  }
153
202
  return undefined;
154
203
  }
155
204
  getStatus(code) {
205
+ if (!this.device) {
206
+ return undefined;
207
+ }
156
208
  return this.device.status.find(status => status.code === code);
157
209
  }
158
210
  async sendCommands(commands, debounce = false) {
159
211
  if (commands.length === 0) {
160
212
  return;
161
213
  }
214
+ if (!this.device || !this.deviceManager) {
215
+ this.log.warn('Device manager or device not available, cannot send commands.');
216
+ return;
217
+ }
162
218
  commands = commands.filter((status) => status.code && status.value !== undefined);
163
219
  if (this.device.online === false) {
164
220
  this.log.warn('Device is offline, skip send command.');
@@ -184,6 +240,9 @@ class BaseAccessory {
184
240
  this.debounceSendCommands();
185
241
  }
186
242
  checkRequirements() {
243
+ if (!this.device) {
244
+ return false;
245
+ }
187
246
  let result = true;
188
247
  for (const codes of this.requiredSchema()) {
189
248
  const schema = this.getSchema(...codes);
@@ -221,7 +280,10 @@ class OverridedBaseAccessory extends BaseAccessory {
221
280
  this.eval = (script, device, value) => eval(script);
222
281
  }
223
282
  getOverridedSchema(code) {
224
- const schemaConfig = this.platform.getDeviceSchemaConfig(this.device, code);
283
+ if (!this.device) {
284
+ return undefined;
285
+ }
286
+ const schemaConfig = this.platform.getDeviceSchemaConfig(this.device, code, this.deviceSource);
225
287
  if (!schemaConfig) {
226
288
  return undefined;
227
289
  }
@@ -239,7 +301,7 @@ class OverridedBaseAccessory extends BaseAccessory {
239
301
  property: schemaConfig.property || oldSchema.property,
240
302
  _hidden: schemaConfig.hidden,
241
303
  };
242
- if (!(0, lodash_isequal_1.default)(oldSchema, schema)) {
304
+ if (!(0, util_2.deepEqual)(oldSchema, schema)) {
243
305
  this.log.debug('Override schema %o => %o', oldSchema, schema);
244
306
  }
245
307
  return schema;
@@ -258,7 +320,10 @@ class OverridedBaseAccessory extends BaseAccessory {
258
320
  return undefined;
259
321
  }
260
322
  getOverridedStatus(code) {
261
- const schemaConfig = this.platform.getDeviceSchemaConfig(this.device, code);
323
+ if (!this.device) {
324
+ return undefined;
325
+ }
326
+ const schemaConfig = this.platform.getDeviceSchemaConfig(this.device, code, this.deviceSource);
262
327
  if (!schemaConfig) {
263
328
  return undefined;
264
329
  }
@@ -270,7 +335,7 @@ class OverridedBaseAccessory extends BaseAccessory {
270
335
  if (schemaConfig.onGet) {
271
336
  status.value = this.eval(schemaConfig.onGet, this.device, oldStatus.value);
272
337
  }
273
- if (!(0, lodash_isequal_1.default)(oldStatus, status)) {
338
+ if (!(0, util_2.deepEqual)(oldStatus, status)) {
274
339
  this.log.debug('Override status %o => %o', oldStatus, status);
275
340
  }
276
341
  return status;
@@ -279,9 +344,13 @@ class OverridedBaseAccessory extends BaseAccessory {
279
344
  return this.getOverridedStatus(code) || super.getStatus(code);
280
345
  }
281
346
  async sendCommands(commands, debounce) {
347
+ if (!this.device) {
348
+ await super.sendCommands(commands, debounce);
349
+ return;
350
+ }
282
351
  // convert to original commands
283
352
  for (const command of commands) {
284
- const schemaConfig = this.platform.getDeviceSchemaConfig(this.device, command.code);
353
+ const schemaConfig = this.platform.getDeviceSchemaConfig(this.device, command.code, this.deviceSource);
285
354
  if (!schemaConfig) {
286
355
  continue;
287
356
  }
@@ -289,7 +358,7 @@ class OverridedBaseAccessory extends BaseAccessory {
289
358
  if (schemaConfig.onSet) {
290
359
  oldCommand.value = this.eval(schemaConfig.onSet, this.device, command.value);
291
360
  }
292
- if (!(0, lodash_isequal_1.default)(oldCommand, command)) {
361
+ if (!(0, util_2.deepEqual)(oldCommand, command)) {
293
362
  this.log.debug('Override command %o => %o', command, oldCommand);
294
363
  command.code = oldCommand.code;
295
364
  command.value = oldCommand.value;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseAccessory.js","sourceRoot":"","sources":["../../../src/shared/accessories/BaseAccessory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const util_1 = require("../util/util");
7
+ const BaseAccessory_1 = __importDefault(require("./BaseAccessory"));
8
+ const SCHEMA_CODE = {
9
+ CONTROL: ['control', 'mach_operate'],
10
+ CURRENT_POSITION: ['percent_state'],
11
+ TARGET_POSITION: ['percent_control', 'position'],
12
+ POSITION: ['position'],
13
+ };
14
+ /**
15
+ * BlindsAccessory – handles roller motor shades and blinds.
16
+ * Supports position control with tracking and state management.
17
+ *
18
+ * Categories: 'mg' (blinds), 'mgmt' (motorized blinds)
19
+ */
20
+ class BlindsAccessory extends BaseAccessory_1.default {
21
+ requiredSchema() {
22
+ return [SCHEMA_CODE.CONTROL];
23
+ }
24
+ configureServices() {
25
+ this.configureCurrentPosition();
26
+ this.configurePositionState();
27
+ this.configureTargetPosition();
28
+ }
29
+ /**
30
+ * Configure CurrentPosition characteristic.
31
+ * Read-only value showing actual blind position (0-100%).
32
+ */
33
+ configureCurrentPosition() {
34
+ const currentSchema = this.getSchema(...SCHEMA_CODE.CURRENT_POSITION);
35
+ const targetSchema = this.getSchema(...SCHEMA_CODE.TARGET_POSITION) ||
36
+ this.getSchema(...SCHEMA_CODE.POSITION);
37
+ const service = this.accessory.getService(this.Service.WindowCovering) ||
38
+ this.accessory.addService(this.Service.WindowCovering);
39
+ service.getCharacteristic(this.Characteristic.CurrentPosition)
40
+ .onGet(() => {
41
+ // Prefer current position schema if available
42
+ if (currentSchema) {
43
+ const status = this.getStatus(currentSchema.code);
44
+ return (0, util_1.limit)(status.value, 0, 100);
45
+ }
46
+ // Fall back to target position schema
47
+ if (targetSchema) {
48
+ const status = this.getStatus(targetSchema.code);
49
+ return (0, util_1.limit)(status.value, 0, 100);
50
+ }
51
+ // Fall back to control command status (open/close/stop)
52
+ const controlSchema = this.getSchema(...SCHEMA_CODE.CONTROL);
53
+ if (controlSchema) {
54
+ const status = this.getStatus(controlSchema.code);
55
+ return this.controlValueToPosition(status.value);
56
+ }
57
+ return 50; // Default to middle position
58
+ });
59
+ }
60
+ /**
61
+ * Configure PositionState characteristic.
62
+ * Indicates if blinds are going up (INCREASING), down (DECREASING), or stopped.
63
+ */
64
+ configurePositionState() {
65
+ const currentSchema = this.getSchema(...SCHEMA_CODE.CURRENT_POSITION);
66
+ const targetSchema = this.getSchema(...SCHEMA_CODE.TARGET_POSITION) ||
67
+ this.getSchema(...SCHEMA_CODE.POSITION);
68
+ const { DECREASING, INCREASING, STOPPED } = this.Characteristic.PositionState;
69
+ const service = this.accessory.getService(this.Service.WindowCovering) ||
70
+ this.accessory.addService(this.Service.WindowCovering);
71
+ service.getCharacteristic(this.Characteristic.PositionState)
72
+ .onGet(() => {
73
+ // If we don't have both current and target, assume stopped
74
+ if (!currentSchema || !targetSchema) {
75
+ return STOPPED;
76
+ }
77
+ const currentStatus = this.getStatus(currentSchema.code);
78
+ const targetStatus = this.getStatus(targetSchema.code);
79
+ const currentPos = currentStatus.value;
80
+ const targetPos = targetStatus.value;
81
+ if (targetPos > currentPos) {
82
+ return INCREASING; // Moving up/open
83
+ }
84
+ else if (targetPos < currentPos) {
85
+ return DECREASING; // Moving down/close
86
+ }
87
+ else {
88
+ return STOPPED; // At target position
89
+ }
90
+ });
91
+ }
92
+ /**
93
+ * Configure TargetPosition characteristic.
94
+ * Allows user to set desired blind position (0-100%).
95
+ */
96
+ configureTargetPosition() {
97
+ const controlSchema = this.getSchema(...SCHEMA_CODE.CONTROL);
98
+ const targetSchema = this.getSchema(...SCHEMA_CODE.TARGET_POSITION) ||
99
+ this.getSchema(...SCHEMA_CODE.POSITION);
100
+ if (!controlSchema && !targetSchema) {
101
+ this.log.warn('No target position schema available for blinds control');
102
+ return;
103
+ }
104
+ const service = this.accessory.getService(this.Service.WindowCovering) ||
105
+ this.accessory.addService(this.Service.WindowCovering);
106
+ service.getCharacteristic(this.Characteristic.TargetPosition)
107
+ .onGet(() => {
108
+ // If target position schema exists, use it
109
+ if (targetSchema) {
110
+ const status = this.getStatus(targetSchema.code);
111
+ return (0, util_1.limit)(status.value, 0, 100);
112
+ }
113
+ // Otherwise, use control schema (open/close/stop)
114
+ if (controlSchema) {
115
+ const status = this.getStatus(controlSchema.code);
116
+ return this.controlValueToPosition(status.value);
117
+ }
118
+ return this.targetPosition ?? 50;
119
+ })
120
+ .onSet(async (value) => {
121
+ const targetPos = value;
122
+ this.targetPosition = targetPos;
123
+ // Clear any pending reset timer
124
+ if (this.positionResetTimer) {
125
+ clearTimeout(this.positionResetTimer);
126
+ this.positionResetTimer = undefined;
127
+ }
128
+ // If we have a percent_control schema, use it directly
129
+ if (targetSchema && targetSchema.code !== 'control' && targetSchema.code !== 'mach_operate') {
130
+ await this.sendCommands([{ code: targetSchema.code, value: targetPos }], true);
131
+ }
132
+ else if (controlSchema) {
133
+ // Otherwise, use the control schema (open/close/stop)
134
+ const controlValue = this.positionToControlValue(targetPos);
135
+ await this.sendCommands([{ code: controlSchema.code, value: controlValue }], true);
136
+ // Schedule idle reset after 30 seconds if device doesn't report position
137
+ // This prevents the blinds from continuously moving
138
+ this.positionResetTimer = setTimeout(() => {
139
+ this._resetToIdle();
140
+ }, 30 * 1000);
141
+ }
142
+ });
143
+ }
144
+ /**
145
+ * Convert HomeKit position value (0-100) to Tuya control value (open/close/stop).
146
+ */
147
+ positionToControlValue(position) {
148
+ if (position >= 95) {
149
+ return 'open'; // or 'ZZ' for some devices
150
+ }
151
+ else if (position <= 5) {
152
+ return 'close'; // or 'FZ' for some devices
153
+ }
154
+ else {
155
+ return 'stop'; // or 'STOP' for some devices
156
+ }
157
+ }
158
+ /**
159
+ * Convert Tuya control value (open/close/stop) to HomeKit position (0-100).
160
+ */
161
+ controlValueToPosition(value) {
162
+ const lowerValue = value.toLowerCase();
163
+ if (lowerValue === 'open' || lowerValue === 'zz') {
164
+ return 100;
165
+ }
166
+ else if (lowerValue === 'close' || lowerValue === 'fz') {
167
+ return 0;
168
+ }
169
+ else if (lowerValue === 'stop' || lowerValue === 'stopped') {
170
+ return 50;
171
+ }
172
+ return 50; // Default to middle
173
+ }
174
+ /**
175
+ * Reset control to idle state after position movement completes.
176
+ */
177
+ _resetToIdle() {
178
+ const controlSchema = this.getSchema(...SCHEMA_CODE.CONTROL);
179
+ if (controlSchema) {
180
+ this.sendCommands([{ code: controlSchema.code, value: 'stop' }]);
181
+ }
182
+ this.positionResetTimer = undefined;
183
+ }
184
+ /**
185
+ * Handle device status updates from cloud/local.
186
+ */
187
+ async onDeviceStatusUpdate(status) {
188
+ super.onDeviceStatusUpdate(status);
189
+ // If we receive a position update, clear the reset timer
190
+ const positionUpdate = status.find(s => SCHEMA_CODE.CURRENT_POSITION.includes(s.code) ||
191
+ (SCHEMA_CODE.TARGET_POSITION.includes(s.code) && s.code !== 'control'));
192
+ if (positionUpdate && this.positionResetTimer) {
193
+ clearTimeout(this.positionResetTimer);
194
+ this.positionResetTimer = undefined;
195
+ }
196
+ }
197
+ }
198
+ exports.default = BlindsAccessory;
199
+ //# sourceMappingURL=BlindsAccessory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlindsAccessory.js","sourceRoot":"","sources":["../../../src/shared/accessories/BlindsAccessory.ts"],"names":[],"mappings":"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"}
@@ -95,11 +95,13 @@ class CameraAccessory extends BaseAccessory_1.default {
95
95
  const motionSchema = this.getSchema(...SCHEMA_CODE.MOTION_DETECT);
96
96
  if (motionSchema) {
97
97
  const motionStatus = status.find(_status => _status.code === motionSchema.code);
98
- motionStatus && this.onMotionDetected(motionStatus);
98
+ if (motionStatus) {
99
+ this.onMotionDetected(motionStatus);
100
+ }
99
101
  }
100
102
  }
101
103
  onMotionDetected(status) {
102
- if (!this.intialized) {
104
+ if (!this.initialized) {
103
105
  return;
104
106
  }
105
107
  const data = Buffer.from(status.value, 'base64').toString('binary');
@@ -109,7 +111,9 @@ class CameraAccessory extends BaseAccessory_1.default {
109
111
  this.log.info('Motion event:', data);
110
112
  const characteristic = this.getMotionService().getCharacteristic(this.Characteristic.MotionDetected);
111
113
  characteristic.updateValue(true);
112
- this.timer && clearTimeout(this.timer);
114
+ if (this.timer) {
115
+ clearTimeout(this.timer);
116
+ }
113
117
  this.timer = setTimeout(() => characteristic.updateValue(false), 30 * 1000);
114
118
  }
115
119
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CameraAccessory.js","sourceRoot":"","sources":["../../../src/shared/accessories/CameraAccessory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CarbonDioxideSensorAccessory.js","sourceRoot":"","sources":["../../../src/shared/accessories/CarbonDioxideSensorAccessory.ts"],"names":[],"mappings":";;;;;AACA,uCAAqC;AACrC,oEAA4C;AAE5C,MAAM,WAAW,GAAG;IAClB,UAAU,EAAE,CAAC,WAAW,CAAC;IACzB,SAAS,EAAE,CAAC,WAAW,CAAC;CACzB,CAAC;AAGF,MAAqB,4BAA6B,SAAQ,uBAAa;IAErE,cAAc;QACZ,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAGD,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;eAC7D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACnE,CAAC;IAED,8BAA8B;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC;QAC7F,IAAI,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC;aAC5E,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC;YAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC9E,CAAC,CAAC,CAAC;IACP,CAAC;IAED,2BAA2B;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAA2C,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;aACzE,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAA,YAAK,EAAC,MAAM,CAAC,KAAe,GAAG,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACP,CAAC;CAEF;AA/CD,+CA+CC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CarbonMonoxideSensorAccessory.js","sourceRoot":"","sources":["../../../src/shared/accessories/CarbonMonoxideSensorAccessory.ts"],"names":[],"mappings":";;;;;AACA,uCAAqC;AACrC,oEAA4C;AAE5C,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;IACpC,QAAQ,EAAE,CAAC,UAAU,CAAC;CACvB,CAAC;AAEF,MAAqB,6BAA8B,SAAQ,uBAAa;IAEtE,cAAc;QACZ,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAGD,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;eAC9D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpE,CAAC;IAED,+BAA+B;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC;QAC5F,IAAI,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC;aAC7E,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC;YAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACpG,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4BAA4B;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAA2C,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC;aAC1E,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAA,YAAK,EAAC,MAAM,CAAC,KAAe,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACP,CAAC;CACF;AA9CD,gDA8CC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactSensorAccessory.js","sourceRoot":"","sources":["../../../src/shared/accessories/ContactSensorAccessory.ts"],"names":[],"mappings":";;;;;AAAA,oEAA4C;AAE5C,MAAM,WAAW,GAAG;IAClB,aAAa,EAAE,CAAC,mBAAmB,EAAE,QAAQ,CAAC;CAC/C,CAAC;AAEF,MAAqB,aAAc,SAAQ,uBAAa;IAEtD,cAAc;QACZ,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED,iBAAiB;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;eAClE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEzD,MAAM,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;QAC1F,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAC9D,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC;YAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAChE,CAAC,CAAC,CAAC;IACP,CAAC;CAEF;AAtBD,gCAsBC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DehumidifierAccessory.js","sourceRoot":"","sources":["../../../src/shared/accessories/DehumidifierAccessory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffuserAccessory.js","sourceRoot":"","sources":["../../../src/shared/accessories/DiffuserAccessory.ts"],"names":[],"mappings":";;;;;AAAA,oEAA4C;AAC5C,oDAA0D;AAC1D,kDAAwD;AACxD,4CAAkD;AAClD,kEAA6E;AAE7E,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,CAAC,QAAQ,CAAC;IACd,QAAQ,EAAE,CAAC,cAAc,CAAC;IAC1B,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,OAAO,CAAC;IACtB,QAAQ,EAAE,CAAC,YAAY,CAAC;IACxB,UAAU,EAAE,CAAC,WAAW,CAAC;IACzB,YAAY,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;IACjD,WAAW,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC/C,QAAQ,EAAE,CAAC,cAAc,CAAC;CAC3B,CAAC;AAEF,MAAqB,iBAAkB,SAAQ,uBAAa;IAE1D,cAAc;QACZ,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,iBAAiB;QACf,cAAc;QACd,IAAA,gBAAW,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAA,sBAAc,EACZ,IAAI,EACJ,SAAS,EACT,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,EACvC,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,EAC3C,SAAS,EACT,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,EAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAC1C,CAAC;QAEF,IAAA,gBAAW,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe;IACxF,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;eACrD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,iBAAiB;QACf,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAE,CAAC;QAE/D,2BAA2B;QAC3B,IAAA,wBAAe,EAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;QAEzD,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC;QAChF,IAAI,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC;aAC9E,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAE,CAAC;YACnD,OAAQ,MAAM,CAAC,KAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEL,iEAAiE;QACjE,mFAAmF;QACnF,0CAA0C;QAG1C,2BAA2B;QAC3B,IAAA,2CAA2B,EAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IACpG,CAAC;CAEF;AApDD,oCAoDC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DimmerAccessory.js","sourceRoot":"","sources":["../../../src/shared/accessories/DimmerAccessory.ts"],"names":[],"mappings":"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"}
@@ -81,7 +81,9 @@ class DoorbellAccessory extends BaseAccessory_1.default {
81
81
  const doorbellCallSchema = this.getSchema(...SCHEMA_CODE.DOORBELL_CALL);
82
82
  if (doorbellCallSchema) {
83
83
  const doorbellCallStatus = status.find(_status => _status.code === doorbellCallSchema.code);
84
- doorbellCallStatus && (0, ProgrammableSwitchEvent_1.onProgrammableSwitchEvent)(this, this.getDoorbellService(), doorbellCallStatus);
84
+ if (doorbellCallStatus) {
85
+ (0, ProgrammableSwitchEvent_1.onProgrammableSwitchEvent)(this, this.getDoorbellService(), doorbellCallStatus);
86
+ }
85
87
  }
86
88
  }
87
89
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DoorbellAccessory.js","sourceRoot":"","sources":["../../../src/shared/accessories/DoorbellAccessory.ts"],"names":[],"mappings":";;;;;AACA,oEAA4C;AAC5C,sFAAuH;AAEvH,MAAM,WAAW,GAAG;IAClB,oCAAoC;IACpC,yCAAyC;IACzC,qCAAqC;IACrC,aAAa,EAAE,CAAC,eAAe,CAAC;CACjC,CAAC;AAEF,MAAqB,iBAAkB,SAAQ,uBAAa;IAE1D,cAAc;QACZ,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAChF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAC9F,IAAA,0DAAgC,EAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;QAChH,wBAAwB;QACxB,0BAA0B;IAC5B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiDE;IAEF,kBAAkB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC;eACrE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,MAA0B;QACnD,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAEnC,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;QACxE,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC5F,IAAI,kBAAkB,EAAE,CAAC;gBACvB,IAAA,mDAAyB,EAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,kBAAkB,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC;CAEF;AAlFD,oCAkFC"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const TuyaDevice_1 = require("../device/TuyaDevice");
6
+ const TuyaDevice_1 = require("../../cloud/device/TuyaDevice");
7
7
  const BaseAccessory_1 = __importDefault(require("./BaseAccessory"));
8
8
  const Active_1 = require("./characteristic/Active");
9
9
  const LockPhysicalControls_1 = require("./characteristic/LockPhysicalControls");
@@ -48,7 +48,9 @@ class ExtractionHoodAccessory extends BaseAccessory_1.default {
48
48
  else if (this.lightServiceType() === this.Service.Switch) {
49
49
  (0, On_1.configureOn)(this, undefined, this.getSchema(...SCHEMA_CODE.LIGHT_ON));
50
50
  const unusedService = this.accessory.getService(this.Service.Lightbulb);
51
- unusedService && this.accessory.removeService(unusedService);
51
+ if (unusedService) {
52
+ this.accessory.removeService(unusedService);
53
+ }
52
54
  }
53
55
  }
54
56
  }