@homebridge-plugins/homebridge-tuya 3.0.0-beta.7 → 3.0.0-beta.8

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 (278) hide show
  1. package/config.schema.json +385 -350
  2. package/dist/cloud/api/TuyaOpenAPI.js +5 -9
  3. package/dist/cloud/api/TuyaOpenAPI.js.map +1 -1
  4. package/dist/cloud/api/TuyaOpenMQ.js +3 -4
  5. package/dist/cloud/api/TuyaOpenMQ.js.map +1 -1
  6. package/dist/cloud/device/{TuyaDeviceManager.js → TuyaCloudDeviceManager.js} +96 -80
  7. package/dist/cloud/device/TuyaCloudDeviceManager.js.map +1 -0
  8. package/dist/cloud/device/TuyaCustomDeviceManager.js +74 -5
  9. package/dist/cloud/device/TuyaCustomDeviceManager.js.map +1 -1
  10. package/dist/cloud/device/TuyaHomeDeviceManager.js +76 -9
  11. package/dist/cloud/device/TuyaHomeDeviceManager.js.map +1 -1
  12. package/dist/config.js +26 -5
  13. package/dist/config.js.map +1 -1
  14. package/dist/local/DynamicChildDiscovery.js +2 -1
  15. package/dist/local/DynamicChildDiscovery.js.map +1 -1
  16. package/dist/local/LocalDevice.js +3 -2
  17. package/dist/local/LocalDevice.js.map +1 -1
  18. package/dist/local/LocalDeviceManager.js +72 -123
  19. package/dist/local/LocalDeviceManager.js.map +1 -1
  20. package/dist/local/TuyaDiscovery.js +14 -7
  21. package/dist/local/TuyaDiscovery.js.map +1 -1
  22. package/dist/local/ZigbeeGatewayDetection.js +2 -2
  23. package/dist/local/ZigbeeGatewayDetection.js.map +1 -1
  24. package/dist/local/protocol/ProtocolUtilities.js +34 -17
  25. package/dist/local/protocol/ProtocolUtilities.js.map +1 -1
  26. package/dist/local/protocol/ProtocolV31V32.js +4 -2
  27. package/dist/local/protocol/ProtocolV31V32.js.map +1 -1
  28. package/dist/local/protocol/ProtocolV33.js +4 -2
  29. package/dist/local/protocol/ProtocolV33.js.map +1 -1
  30. package/dist/local/protocol/ProtocolV34.js +10 -5
  31. package/dist/local/protocol/ProtocolV34.js.map +1 -1
  32. package/dist/local/protocol/ProtocolV35.js +8 -4
  33. package/dist/local/protocol/ProtocolV35.js.map +1 -1
  34. package/dist/platform.js +229 -493
  35. package/dist/platform.js.map +1 -1
  36. package/dist/settings.js +0 -2
  37. package/dist/settings.js.map +1 -1
  38. package/dist/shared/TuyaDeviceManager.js +86 -0
  39. package/dist/shared/TuyaDeviceManager.js.map +1 -0
  40. package/dist/shared/TuyaHybridDeviceManager.js +145 -0
  41. package/dist/shared/TuyaHybridDeviceManager.js.map +1 -0
  42. package/dist/shared/accessory/AccessoryFactory.js +334 -0
  43. package/dist/shared/accessory/AccessoryFactory.js.map +1 -0
  44. package/dist/shared/{accessories → accessory}/AirConditionerAccessory.js.map +1 -1
  45. package/dist/shared/{accessories → accessory}/AirPurifierAccessory.js.map +1 -1
  46. package/dist/shared/accessory/AirQualitySensorAccessory.js.map +1 -0
  47. package/dist/shared/{accessories → accessory}/BaseAccessory.js +16 -95
  48. package/dist/shared/accessory/BaseAccessory.js.map +1 -0
  49. package/dist/shared/{accessories → accessory}/BlindsAccessory.js.map +1 -1
  50. package/dist/shared/{accessories → accessory}/CameraAccessory.js.map +1 -1
  51. package/dist/shared/{accessories → accessory}/CarbonDioxideSensorAccessory.js.map +1 -1
  52. package/dist/shared/{accessories → accessory}/CarbonMonoxideSensorAccessory.js.map +1 -1
  53. package/dist/shared/{accessories → accessory}/ContactSensorAccessory.js.map +1 -1
  54. package/dist/shared/{accessories → accessory}/DehumidifierAccessory.js.map +1 -1
  55. package/dist/shared/{accessories → accessory}/DiffuserAccessory.js.map +1 -1
  56. package/dist/shared/{accessories → accessory}/DimmerAccessory.js.map +1 -1
  57. package/dist/shared/{accessories → accessory}/DoorbellAccessory.js.map +1 -1
  58. package/dist/shared/{accessories → accessory}/ExtractionHoodAccessory.js.map +1 -1
  59. package/dist/shared/{accessories → accessory}/FanAccessory.js.map +1 -1
  60. package/dist/shared/{accessories → accessory}/GarageDoorAccessory.js.map +1 -1
  61. package/dist/shared/{accessories → accessory}/HeaterAccessory.js.map +1 -1
  62. package/dist/shared/{accessories → accessory}/HeaterAccessory_old.js.map +1 -1
  63. package/dist/shared/accessory/HumanPresenceSensorAccessory.js.map +1 -0
  64. package/dist/shared/{accessories → accessory}/HumidifierAccessory.js.map +1 -1
  65. package/dist/shared/accessory/IRAirConditionerAccessory.js.map +1 -0
  66. package/dist/shared/accessory/IRControlHubAccessory.js.map +1 -0
  67. package/dist/shared/accessory/IRControlHubSubAccessory.js.map +1 -0
  68. package/dist/shared/accessory/IRGenericAccessory.js.map +1 -0
  69. package/dist/shared/{accessories → accessory}/LeakSensorAccessory.js.map +1 -1
  70. package/dist/shared/{accessories → accessory}/LightAccessory.js.map +1 -1
  71. package/dist/shared/{accessories → accessory}/LightSensorAccessory.js.map +1 -1
  72. package/dist/shared/{accessories → accessory}/LocationWeatherAccessory.js +1 -1
  73. package/dist/shared/accessory/LocationWeatherAccessory.js.map +1 -0
  74. package/dist/shared/{accessories → accessory}/LockAccessory.js +3 -3
  75. package/dist/shared/{accessories → accessory}/LockAccessory.js.map +1 -1
  76. package/dist/shared/accessory/MotionSensorAccessory.js.map +1 -0
  77. package/dist/shared/accessory/OutletAccessory.js.map +1 -0
  78. package/dist/shared/{accessories → accessory}/PetFeederAccessory.js.map +1 -1
  79. package/dist/shared/{accessories → accessory}/SceneAccessory.js +1 -1
  80. package/dist/shared/accessory/SceneAccessory.js.map +1 -0
  81. package/dist/shared/accessory/SceneSwitchAccessory.js.map +1 -0
  82. package/dist/shared/accessory/SecuritySystemAccessory.js.map +1 -0
  83. package/dist/shared/{accessories → accessory}/SmokeSensorAccessory.js.map +1 -1
  84. package/dist/shared/{accessories → accessory}/SwitchAccessory.js +1 -45
  85. package/dist/shared/accessory/SwitchAccessory.js.map +1 -0
  86. package/dist/shared/accessory/TemperatureHumiditySensorAccessory.js.map +1 -0
  87. package/dist/shared/{accessories → accessory}/ThermostatAccessory.js.map +1 -1
  88. package/dist/shared/{accessories → accessory}/TowerRackAccessory.js.map +1 -1
  89. package/dist/shared/{accessories → accessory}/ValveAccessory.js.map +1 -1
  90. package/dist/shared/{accessories → accessory}/VibrationSensorAccessory.js.map +1 -1
  91. package/dist/shared/accessory/WeatherStationAccessory.js.map +1 -0
  92. package/dist/shared/accessory/WetBulbGlobeTemperatureAccessory.js.map +1 -0
  93. package/dist/shared/{accessories → accessory}/WhiteNoiseLightAccessory.js +1 -0
  94. package/dist/shared/accessory/WhiteNoiseLightAccessory.js.map +1 -0
  95. package/dist/shared/accessory/WindowAccessory.js.map +1 -0
  96. package/dist/shared/{accessories → accessory}/WindowCoveringAccessory.js.map +1 -1
  97. package/dist/shared/{accessories → accessory}/WirelessSwitchAccessory.js.map +1 -1
  98. package/dist/shared/accessory/characteristic/Active.js.map +1 -0
  99. package/dist/shared/accessory/characteristic/AirQuality.js.map +1 -0
  100. package/dist/shared/accessory/characteristic/CurrentRelativeHumidity.js.map +1 -0
  101. package/dist/shared/accessory/characteristic/CurrentTemperature.js.map +1 -0
  102. package/dist/shared/accessory/characteristic/CurrentWeather.js.map +1 -0
  103. package/dist/shared/accessory/characteristic/CurrentWeatherByOpenMeteo.js.map +1 -0
  104. package/dist/shared/accessory/characteristic/CurrentWetBulbGlobeTemperature.js.map +1 -0
  105. package/dist/shared/{accessories → accessory}/characteristic/EnergyUsage.js +0 -5
  106. package/dist/shared/accessory/characteristic/EnergyUsage.js.map +1 -0
  107. package/dist/shared/{accessories → accessory}/characteristic/Light.js +5 -3
  108. package/dist/shared/accessory/characteristic/Light.js.map +1 -0
  109. package/dist/shared/accessory/characteristic/LightSensor.js.map +1 -0
  110. package/dist/shared/accessory/characteristic/LockPhysicalControls.js.map +1 -0
  111. package/dist/shared/accessory/characteristic/MotionDetected.js.map +1 -0
  112. package/dist/shared/accessory/characteristic/Name.js.map +1 -0
  113. package/dist/shared/accessory/characteristic/OccupancyDetected.js.map +1 -0
  114. package/dist/shared/{accessories → accessory}/characteristic/On.js +1 -0
  115. package/dist/shared/accessory/characteristic/On.js.map +1 -0
  116. package/dist/shared/accessory/characteristic/OutletInUse.js.map +1 -0
  117. package/dist/shared/accessory/characteristic/ProgrammableSwitchEvent.js.map +1 -0
  118. package/dist/shared/accessory/characteristic/RelativeHumidityDehumidifierThreshold.js.map +1 -0
  119. package/dist/shared/accessory/characteristic/RotationSpeed.js.map +1 -0
  120. package/dist/shared/accessory/characteristic/SecuritySystemState.js.map +1 -0
  121. package/dist/shared/accessory/characteristic/SwingMode.js.map +1 -0
  122. package/dist/shared/accessory/characteristic/TargetTemperature.js.map +1 -0
  123. package/dist/shared/accessory/characteristic/TemperatureDisplayUnits.js.map +1 -0
  124. package/dist/shared/util/ConfigHash.js +2 -2
  125. package/dist/shared/util/ConfigHash.js.map +1 -1
  126. package/dist/shared/util/ConfigMigrator.js +162 -0
  127. package/dist/shared/util/ConfigMigrator.js.map +1 -0
  128. package/dist/shared/util/FfmpegStreamingProcess.js.map +1 -1
  129. package/dist/shared/util/InfraredTool.js +0 -2
  130. package/dist/shared/util/InfraredTool.js.map +1 -1
  131. package/dist/shared/util/Logger.js +69 -10
  132. package/dist/shared/util/Logger.js.map +1 -1
  133. package/dist/shared/util/TuyaStreamDelegate.js +2 -8
  134. package/dist/shared/util/TuyaStreamDelegate.js.map +1 -1
  135. package/dist/shared/util/util.js +13 -4
  136. package/dist/shared/util/util.js.map +1 -1
  137. package/eslint.config.mjs +0 -1
  138. package/{jest.config.js → jest.config.ts} +5 -2
  139. package/package.json +8 -5
  140. package/test/ConfigMigrator.test.ts +634 -0
  141. package/test/Logger.test.ts +482 -0
  142. package/test/accessoryFactory.data.test.ts +172 -0
  143. package/test/accessoryFactory.test.ts +64 -35
  144. package/test/config.test.ts +17 -13
  145. package/test/custom.test.ts +2 -2
  146. package/test/errorHandling.test.ts +12 -12
  147. package/test/home.test.ts +1 -1
  148. package/test/hybridDeviceManager.test.ts +808 -0
  149. package/test/localDevice.test.ts +21 -50
  150. package/test/localDeviceManager.behavior.test.ts +16 -30
  151. package/test/localDeviceManager.test.ts +23 -39
  152. package/test/mqttMessages.test.ts +33 -14
  153. package/test/platform.test.ts +340 -810
  154. package/test/platform.validation.local.test.ts +58 -119
  155. package/test/tuyaCustomDeviceManager.test.ts +106 -16
  156. package/test/tuyaDeviceManager.test.ts +636 -639
  157. package/test/tuyaDiscovery.test.ts +21 -33
  158. package/test/tuyaHomeDeviceManager.test.ts +109 -18
  159. package/test/tuyaOpenAPI.test.ts +25 -44
  160. package/test/tuyaOpenMQ.test.ts +15 -23
  161. package/test/util.test.ts +87 -7
  162. package/test/zigbee/LocalDevice.zigbee.test.ts +14 -18
  163. package/test/zigbee/LocalDeviceManager.cloud-discovery.test.ts +19 -20
  164. package/test/zigbee/LocalDeviceManager.zigbee.reconnect.test.ts +18 -20
  165. package/test/zigbee/LocalDeviceManager.zigbee.test.ts +31 -34
  166. package/test/zigbee/ZigbeeGatewayDetection.test.ts +2 -2
  167. package/dist/cloud/device/TuyaDeviceManager.js.map +0 -1
  168. package/dist/local/CloudLocalReconciliation.js +0 -180
  169. package/dist/local/CloudLocalReconciliation.js.map +0 -1
  170. package/dist/shared/accessories/AccessoryFactory.js +0 -309
  171. package/dist/shared/accessories/AccessoryFactory.js.map +0 -1
  172. package/dist/shared/accessories/AirQualitySensorAccessory.js.map +0 -1
  173. package/dist/shared/accessories/BaseAccessory.js.map +0 -1
  174. package/dist/shared/accessories/HumanPresenceSensorAccessory.js.map +0 -1
  175. package/dist/shared/accessories/IRAirConditionerAccessory.js.map +0 -1
  176. package/dist/shared/accessories/IRControlHubAccessory.js.map +0 -1
  177. package/dist/shared/accessories/IRControlHubSubAccessory.js.map +0 -1
  178. package/dist/shared/accessories/IRGenericAccessory.js.map +0 -1
  179. package/dist/shared/accessories/LocationWeatherAccessory.js.map +0 -1
  180. package/dist/shared/accessories/MotionSensorAccessory.js.map +0 -1
  181. package/dist/shared/accessories/OutletAccessory.js.map +0 -1
  182. package/dist/shared/accessories/SceneAccessory.js.map +0 -1
  183. package/dist/shared/accessories/SceneSwitchAccessory.js.map +0 -1
  184. package/dist/shared/accessories/SecuritySystemAccessory.js.map +0 -1
  185. package/dist/shared/accessories/SwitchAccessory.js.map +0 -1
  186. package/dist/shared/accessories/TemperatureHumiditySensorAccessory.js.map +0 -1
  187. package/dist/shared/accessories/WeatherStationAccessory.js.map +0 -1
  188. package/dist/shared/accessories/WetBulbGlobeTemperatureAccessory.js.map +0 -1
  189. package/dist/shared/accessories/WhiteNoiseLightAccessory.js.map +0 -1
  190. package/dist/shared/accessories/WindowAccessory.js.map +0 -1
  191. package/dist/shared/accessories/characteristic/Active.js.map +0 -1
  192. package/dist/shared/accessories/characteristic/AirQuality.js.map +0 -1
  193. package/dist/shared/accessories/characteristic/CurrentRelativeHumidity.js.map +0 -1
  194. package/dist/shared/accessories/characteristic/CurrentTemperature.js.map +0 -1
  195. package/dist/shared/accessories/characteristic/CurrentWeather.js.map +0 -1
  196. package/dist/shared/accessories/characteristic/CurrentWeatherByOpenMeteo.js.map +0 -1
  197. package/dist/shared/accessories/characteristic/CurrentWetBulbGlobeTemperature.js.map +0 -1
  198. package/dist/shared/accessories/characteristic/EnergyUsage.js.map +0 -1
  199. package/dist/shared/accessories/characteristic/Light.js.map +0 -1
  200. package/dist/shared/accessories/characteristic/LightSensor.js.map +0 -1
  201. package/dist/shared/accessories/characteristic/LockPhysicalControls.js.map +0 -1
  202. package/dist/shared/accessories/characteristic/MotionDetected.js.map +0 -1
  203. package/dist/shared/accessories/characteristic/Name.js.map +0 -1
  204. package/dist/shared/accessories/characteristic/OccupancyDetected.js.map +0 -1
  205. package/dist/shared/accessories/characteristic/On.js.map +0 -1
  206. package/dist/shared/accessories/characteristic/OutletInUse.js.map +0 -1
  207. package/dist/shared/accessories/characteristic/ProgrammableSwitchEvent.js.map +0 -1
  208. package/dist/shared/accessories/characteristic/RelativeHumidityDehumidifierThreshold.js.map +0 -1
  209. package/dist/shared/accessories/characteristic/RotationSpeed.js.map +0 -1
  210. package/dist/shared/accessories/characteristic/SecuritySystemState.js.map +0 -1
  211. package/dist/shared/accessories/characteristic/SwingMode.js.map +0 -1
  212. package/dist/shared/accessories/characteristic/TargetTemperature.js.map +0 -1
  213. package/dist/shared/accessories/characteristic/TemperatureDisplayUnits.js.map +0 -1
  214. package/test/zigbee/CloudLocalReconciliation.test.ts +0 -284
  215. package/tuya-local-configs/dev-1.hash +0 -1
  216. package/tuya-local-configs/device1.hash +0 -1
  217. /package/dist/shared/{accessories → accessory}/AirConditionerAccessory.js +0 -0
  218. /package/dist/shared/{accessories → accessory}/AirPurifierAccessory.js +0 -0
  219. /package/dist/shared/{accessories → accessory}/AirQualitySensorAccessory.js +0 -0
  220. /package/dist/shared/{accessories → accessory}/BlindsAccessory.js +0 -0
  221. /package/dist/shared/{accessories → accessory}/CameraAccessory.js +0 -0
  222. /package/dist/shared/{accessories → accessory}/CarbonDioxideSensorAccessory.js +0 -0
  223. /package/dist/shared/{accessories → accessory}/CarbonMonoxideSensorAccessory.js +0 -0
  224. /package/dist/shared/{accessories → accessory}/ContactSensorAccessory.js +0 -0
  225. /package/dist/shared/{accessories → accessory}/DehumidifierAccessory.js +0 -0
  226. /package/dist/shared/{accessories → accessory}/DiffuserAccessory.js +0 -0
  227. /package/dist/shared/{accessories → accessory}/DimmerAccessory.js +0 -0
  228. /package/dist/shared/{accessories → accessory}/DoorbellAccessory.js +0 -0
  229. /package/dist/shared/{accessories → accessory}/ExtractionHoodAccessory.js +0 -0
  230. /package/dist/shared/{accessories → accessory}/FanAccessory.js +0 -0
  231. /package/dist/shared/{accessories → accessory}/GarageDoorAccessory.js +0 -0
  232. /package/dist/shared/{accessories → accessory}/HeaterAccessory.js +0 -0
  233. /package/dist/shared/{accessories → accessory}/HeaterAccessory_old.js +0 -0
  234. /package/dist/shared/{accessories → accessory}/HumanPresenceSensorAccessory.js +0 -0
  235. /package/dist/shared/{accessories → accessory}/HumidifierAccessory.js +0 -0
  236. /package/dist/shared/{accessories → accessory}/IRAirConditionerAccessory.js +0 -0
  237. /package/dist/shared/{accessories → accessory}/IRControlHubAccessory.js +0 -0
  238. /package/dist/shared/{accessories → accessory}/IRControlHubSubAccessory.js +0 -0
  239. /package/dist/shared/{accessories → accessory}/IRGenericAccessory.js +0 -0
  240. /package/dist/shared/{accessories → accessory}/LeakSensorAccessory.js +0 -0
  241. /package/dist/shared/{accessories → accessory}/LightAccessory.js +0 -0
  242. /package/dist/shared/{accessories → accessory}/LightSensorAccessory.js +0 -0
  243. /package/dist/shared/{accessories → accessory}/MotionSensorAccessory.js +0 -0
  244. /package/dist/shared/{accessories → accessory}/OutletAccessory.js +0 -0
  245. /package/dist/shared/{accessories → accessory}/PetFeederAccessory.js +0 -0
  246. /package/dist/shared/{accessories → accessory}/SceneSwitchAccessory.js +0 -0
  247. /package/dist/shared/{accessories → accessory}/SecuritySystemAccessory.js +0 -0
  248. /package/dist/shared/{accessories → accessory}/SmokeSensorAccessory.js +0 -0
  249. /package/dist/shared/{accessories → accessory}/TemperatureHumiditySensorAccessory.js +0 -0
  250. /package/dist/shared/{accessories → accessory}/ThermostatAccessory.js +0 -0
  251. /package/dist/shared/{accessories → accessory}/TowerRackAccessory.js +0 -0
  252. /package/dist/shared/{accessories → accessory}/ValveAccessory.js +0 -0
  253. /package/dist/shared/{accessories → accessory}/VibrationSensorAccessory.js +0 -0
  254. /package/dist/shared/{accessories → accessory}/WeatherStationAccessory.js +0 -0
  255. /package/dist/shared/{accessories → accessory}/WetBulbGlobeTemperatureAccessory.js +0 -0
  256. /package/dist/shared/{accessories → accessory}/WindowAccessory.js +0 -0
  257. /package/dist/shared/{accessories → accessory}/WindowCoveringAccessory.js +0 -0
  258. /package/dist/shared/{accessories → accessory}/WirelessSwitchAccessory.js +0 -0
  259. /package/dist/shared/{accessories → accessory}/characteristic/Active.js +0 -0
  260. /package/dist/shared/{accessories → accessory}/characteristic/AirQuality.js +0 -0
  261. /package/dist/shared/{accessories → accessory}/characteristic/CurrentRelativeHumidity.js +0 -0
  262. /package/dist/shared/{accessories → accessory}/characteristic/CurrentTemperature.js +0 -0
  263. /package/dist/shared/{accessories → accessory}/characteristic/CurrentWeather.js +0 -0
  264. /package/dist/shared/{accessories → accessory}/characteristic/CurrentWeatherByOpenMeteo.js +0 -0
  265. /package/dist/shared/{accessories → accessory}/characteristic/CurrentWetBulbGlobeTemperature.js +0 -0
  266. /package/dist/shared/{accessories → accessory}/characteristic/LightSensor.js +0 -0
  267. /package/dist/shared/{accessories → accessory}/characteristic/LockPhysicalControls.js +0 -0
  268. /package/dist/shared/{accessories → accessory}/characteristic/MotionDetected.js +0 -0
  269. /package/dist/shared/{accessories → accessory}/characteristic/Name.js +0 -0
  270. /package/dist/shared/{accessories → accessory}/characteristic/OccupancyDetected.js +0 -0
  271. /package/dist/shared/{accessories → accessory}/characteristic/OutletInUse.js +0 -0
  272. /package/dist/shared/{accessories → accessory}/characteristic/ProgrammableSwitchEvent.js +0 -0
  273. /package/dist/shared/{accessories → accessory}/characteristic/RelativeHumidityDehumidifierThreshold.js +0 -0
  274. /package/dist/shared/{accessories → accessory}/characteristic/RotationSpeed.js +0 -0
  275. /package/dist/shared/{accessories → accessory}/characteristic/SecuritySystemState.js +0 -0
  276. /package/dist/shared/{accessories → accessory}/characteristic/SwingMode.js +0 -0
  277. /package/dist/shared/{accessories → accessory}/characteristic/TargetTemperature.js +0 -0
  278. /package/dist/shared/{accessories → accessory}/characteristic/TemperatureDisplayUnits.js +0 -0
@@ -5,6 +5,349 @@
5
5
  "headerDisplay": "<p align='center'><img height='60px' src='https://user-images.githubusercontent.com/3979615/78354049-dc7ff780-75f6-11ea-8026-2f8bf81d8331.png'></p>",
6
6
  "footerDisplay": "",
7
7
  "customUi": false,
8
+ "layout": [
9
+ "mode",
10
+ {
11
+ "type": "fieldset",
12
+ "items": [
13
+ {
14
+ "type": "tabs",
15
+ "tabs": [
16
+ {
17
+ "type": "fieldset",
18
+ "title": "Local Settings",
19
+ "notitle": true,
20
+ "items": [
21
+ {
22
+ "type": "help",
23
+ "helpvalue": "⚠These settings are currently inactive because Cloud mode is enabled.",
24
+ "condition": { "functionBody": "return (model.mode === 'cloud')" }
25
+ },
26
+ "local.autoDiscoverDevices",
27
+ "local.discoverTimeout",
28
+ "local.rediscoverInterval",
29
+ {
30
+ "key": "local.devices",
31
+ "add": "Add Manual Device",
32
+ "title": "{{ 'Add New Device' }}",
33
+ "type": "tabarray",
34
+ "notitle": true,
35
+ "items": [
36
+ {
37
+ "type": "div",
38
+ "displayFlex": false,
39
+ "notitle": true,
40
+ "title": "{{ value.name || value.tuyaDeviceId || 'New Device' }}",
41
+ "items": [
42
+ { "key": "local.devices[].category" },
43
+ { "key": "local.devices[].name" },
44
+ { "key": "local.devices[].tuyaDeviceId" },
45
+ { "key": "local.devices[].tuyaKey" },
46
+ { "key": "local.devices[].ip" },
47
+ { "key": "local.devices[].protocolVersion" },
48
+ { "key": "local.devices[].dpMapping" },
49
+ { "key": "local.devices[].outletCount" },
50
+ { "key": "local.devices[].outlets" },
51
+ { "key": "local.devices[].dpPower" },
52
+ { "key": "local.devices[].dpBrightness" },
53
+ { "key": "local.devices[].dpColorTemperature" },
54
+ { "key": "local.devices[].minWhiteColor" },
55
+ { "key": "local.devices[].maxWhiteColor" },
56
+ { "key": "local.devices[].dpMode" },
57
+ { "key": "local.devices[].dpColor" },
58
+ { "key": "local.devices[].colorFunction" },
59
+ { "key": "local.devices[].scaleBrightness" },
60
+ { "key": "local.devices[].scaleWhiteColor" },
61
+ { "key": "local.devices[].voltsId" },
62
+ { "key": "local.devices[].ampsId" },
63
+ { "key": "local.devices[].wattsId" },
64
+ { "key": "local.devices[].voltsDivisor" },
65
+ { "key": "local.devices[].ampsDivisor" },
66
+ { "key": "local.devices[].wattsDivisor" },
67
+ { "key": "local.devices[].noCool" },
68
+ { "key": "local.devices[].noHeat" },
69
+ { "key": "local.devices[].cmdCool" },
70
+ { "key": "local.devices[].cmdHeat" },
71
+ { "key": "local.devices[].noSwing" },
72
+ { "key": "local.devices[].minTemperature" },
73
+ { "key": "local.devices[].maxTemperature" },
74
+ { "key": "local.devices[].minTemperatureSteps" },
75
+ { "key": "local.devices[].dpActive" },
76
+ { "key": "local.devices[].dpDesiredTemperature" },
77
+ { "key": "local.devices[].dpCurrentTemperature" },
78
+ { "key": "local.devices[].dpAction" },
79
+ { "key": "local.devices[].dpStatus" },
80
+ { "key": "local.devices[].flipState" },
81
+ { "key": "local.devices[].timeToOpen" },
82
+ { "key": "local.devices[].timeToTighten" },
83
+ { "key": "local.devices[].timeToClose" },
84
+ { "key": "local.devices[].dpLight" },
85
+ { "key": "local.devices[].dpBlindType" },
86
+ { "key": "local.devices[].dpLightOn" },
87
+ { "key": "local.devices[].dpFanOn" },
88
+ { "key": "local.devices[].dpRotationSpeed" },
89
+ { "key": "local.devices[].dpRotationDirection" },
90
+ { "key": "local.devices[].maxSpeed" },
91
+ { "key": "local.devices[].fanDefaultSpeed" },
92
+ { "key": "local.devices[].useStrings" },
93
+ { "key": "local.devices[].dpChildLock" },
94
+ { "key": "local.devices[].dpTemperatureDisplayUnits" },
95
+ { "key": "local.devices[].cmdLow" },
96
+ { "key": "local.devices[].cmdHigh" },
97
+ { "key": "local.devices[].noChildLock" },
98
+ { "key": "local.devices[].noTemperatureUnit" },
99
+ { "key": "local.devices[].temperatureDivisor" },
100
+ { "key": "local.devices[].thresholdTemperatureDivisor" },
101
+ { "key": "local.devices[].temperatureOffset" }
102
+ ]
103
+ }
104
+ ]
105
+ }
106
+ ]
107
+ },
108
+ {
109
+ "type": "fieldset",
110
+ "title": "Cloud Settings",
111
+ "notitle": true,
112
+ "items": [
113
+ {
114
+ "type": "help",
115
+ "helpvalue": "⚠These settings are currently inactive because Local mode is enabled.",
116
+ "condition": { "functionBody": "return (model.mode === 'local')" }
117
+ },
118
+ {
119
+ "type": "fieldset",
120
+ "title": "Tuya Cloud Account Info",
121
+ "expandable": true,
122
+ "expanded": false,
123
+ "items": [
124
+ "options.projectType",
125
+ "options.endpoint",
126
+ "options.accessId",
127
+ "options.accessKey",
128
+ "options.countryCode",
129
+ "options.username",
130
+ "options.password",
131
+ "options.appSchema"
132
+ ]
133
+ },
134
+ {
135
+ "type": "fieldset",
136
+ "title": "Tuya Home Settings",
137
+ "expandable": true,
138
+ "expanded": false,
139
+ "notitle": false,
140
+ "items": [
141
+ {
142
+ "key": "options.homeWhitelist",
143
+ "add": "Add Another Home ID",
144
+ "title": "{{ 'New Whitelisted Home' }}",
145
+ "type": "tabarray",
146
+ "notitle": true,
147
+ "items": [
148
+ {
149
+ "type": "div",
150
+ "displayFlex": true,
151
+ "flex-direction": "row",
152
+ "notitle": true,
153
+ "title": "{{ value }}",
154
+ "items": [
155
+ {
156
+ "key": "options.homeWhitelist[]",
157
+ "placeholder": "Home ID"
158
+ }
159
+ ]
160
+ }
161
+ ]
162
+ }
163
+ ]
164
+ },
165
+ {
166
+ "type": "fieldset",
167
+ "title": "Tuya Device Settings",
168
+ "expandable": true,
169
+ "expanded": true,
170
+ "notitle": false,
171
+ "items": [
172
+ {
173
+ "key": "options.deviceOverrides",
174
+ "add": "Add Another Device Override",
175
+ "title": "{{ 'New Device Override' }}",
176
+ "type": "tabarray",
177
+ "notitle": true,
178
+ "default": [],
179
+ "items": [
180
+ {
181
+ "type": "div",
182
+ "displayFlex": false,
183
+ "flex-direction": "row",
184
+ "notitle": true,
185
+ "title": "{{ value.id || 'New Device Override' }}",
186
+ "items": [
187
+ {
188
+ "key": "options.deviceOverrides[].id"
189
+ },
190
+ {
191
+ "key": "options.deviceOverrides[].category"
192
+ },
193
+ {
194
+ "key": "options.deviceOverrides[].unbridged"
195
+ },
196
+ {
197
+ "key": "options.deviceOverrides[].configFor"
198
+ },
199
+ {
200
+ "key": "options.deviceOverrides[].schema",
201
+ "add": "Add New Schema",
202
+ "title": "{{ 'New Schema' }}",
203
+ "type": "tabarray",
204
+ "notitle": true,
205
+ "items": [
206
+ {
207
+ "type": "div",
208
+ "displayFlex": true,
209
+ "title": "{{ value.code }}",
210
+ "flex-direction": "column",
211
+ "notitle": false,
212
+ "items": [
213
+ {
214
+ "key": "options.deviceOverrides[].schema[].code"
215
+ },
216
+ {
217
+ "key": "options.deviceOverrides[].schema[].newCode"
218
+ },
219
+ {
220
+ "key": "options.deviceOverrides[].schema[].hidden"
221
+ },
222
+ {
223
+ "key": "options.deviceOverrides[].schema[].type"
224
+ },
225
+ {
226
+ "key": "options.deviceOverrides[].schema[].property",
227
+ "notitle": false,
228
+ "items": [
229
+ "options.deviceOverrides[].schema[].property.min",
230
+ "options.deviceOverrides[].schema[].property.max",
231
+ "options.deviceOverrides[].schema[].property.scale",
232
+ "options.deviceOverrides[].schema[].property.step",
233
+ {
234
+ "key": "options.deviceOverrides[].schema[].property.range",
235
+ "add": "Add Range",
236
+ "title": "{{ 'New Range' }}",
237
+ "type": "tabarray",
238
+ "notitle": true,
239
+ "items": [
240
+ {
241
+ "type": "div",
242
+ "displayFlex": true,
243
+ "flex-direction": "row",
244
+ "notitle": true,
245
+ "title": "{{ value }}",
246
+ "items": [
247
+ {
248
+ "key": "options.deviceOverrides[].schema[].property.range[]",
249
+ "placeholder": "Range"
250
+ }
251
+ ]
252
+ }
253
+ ]
254
+ }
255
+ ]
256
+ }
257
+ ]
258
+ }
259
+ ]
260
+ }
261
+ ]
262
+ }
263
+ ]
264
+ }
265
+ ]
266
+ },
267
+
268
+ {
269
+ "type": "fieldset",
270
+ "title": "Accessory Service Informations",
271
+ "expandable": true,
272
+ "expanded": false,
273
+ "notitle": false,
274
+ "items": [
275
+ {
276
+ "key": "options.serviceInformationOverrides",
277
+ "add": "Add Another Service Information Override",
278
+ "title": "{{ 'New Service Information Override' }}",
279
+ "type": "tabarray",
280
+ "notitle": true,
281
+ "default": [],
282
+ "items": [
283
+ {
284
+ "type": "div",
285
+ "displayFlex": false,
286
+ "flex-direction": "row",
287
+ "notitle": true,
288
+ "title": "{{ value.device_id }}",
289
+ "items": [
290
+ {
291
+ "key": "options.serviceInformationOverrides[].device_id"
292
+ },
293
+ {
294
+ "key": "options.serviceInformationOverrides[].index"
295
+ },
296
+ {
297
+ "key": "options.serviceInformationOverrides[].manifacturer"
298
+ },
299
+ {
300
+ "key": "options.serviceInformationOverrides[].model"
301
+ },
302
+ {
303
+ "key": "options.serviceInformationOverrides[].firmwareRevision"
304
+ },
305
+ {
306
+ "key": "options.serviceInformationOverrides[].configuredName"
307
+ }
308
+ ]
309
+ }
310
+ ]
311
+ }
312
+ ]
313
+ },
314
+ {
315
+ "type": "fieldset",
316
+ "title": "Advance Settings",
317
+ "expandable": true,
318
+ "expanded": false,
319
+ "notitle": false,
320
+ "items": [
321
+ "options.generateWeatherAccessory",
322
+ "options.weatherAPI",
323
+ "options.forceIPv4"
324
+ ]
325
+ }
326
+ ]
327
+ },
328
+ {
329
+ "type": "fieldset",
330
+ "title": "Common Settings",
331
+ "notitle": true,
332
+ "items": [
333
+ {
334
+ "type": "fieldset",
335
+ "title": "Debug Settings",
336
+ "expandable": true,
337
+ "expanded": true,
338
+ "notitle": false,
339
+ "items": [
340
+ "common.debug",
341
+ "common.debugLevel"
342
+ ]
343
+ }
344
+ ]
345
+ }
346
+ ]
347
+ }
348
+ ]
349
+ }
350
+ ],
8
351
  "schema": {
9
352
  "type": "object",
10
353
  "required": ["mode"],
@@ -29,9 +372,6 @@
29
372
  "title": "Local Settings",
30
373
  "description": "Configure local LAN devices. For help getting local keys, see the <a href='#' onClick='alert(\"Visit: wiki/Get-Local-Keys-for-Your-Devices.md\")'>Local Keys Setup Guide</a>.",
31
374
  "type": "object",
32
- "condition": {
33
- "functionBody": "return (model.mode === 'local' || model.mode === 'both');"
34
- },
35
375
  "properties": {
36
376
  "autoDiscoverDevices": {
37
377
  "title": "Auto-Discover Devices",
@@ -625,18 +965,12 @@
625
965
  "options": {
626
966
  "title": "Cloud Account Info",
627
967
  "type": "object",
628
- "condition": {
629
- "functionBody": "return (model.mode === 'cloud' || model.mode === 'both');"
630
- },
631
968
  "properties": {
632
969
  "projectType": {
633
970
  "title": "Project Type (Development Method)",
634
971
  "description": "Required for Cloud mode.",
635
972
  "type": "string",
636
973
  "default": "2",
637
- "condition": {
638
- "functionBody": "return (model.mode === 'cloud' || model.mode === 'both');"
639
- },
640
974
  "oneOf": [
641
975
  {
642
976
  "title": "Custom",
@@ -655,18 +989,12 @@
655
989
  "endpoint": {
656
990
  "title": "Endpoint URL",
657
991
  "type": "string",
658
- "format": "url",
659
- "condition": {
660
- "functionBody": "return (model.mode === 'cloud' || model.mode === 'both');"
661
- }
992
+ "format": "url"
662
993
  },
663
994
  "accessId": {
664
995
  "title": "Access ID",
665
996
  "description": "Required for Cloud mode.",
666
- "type": "string",
667
- "condition": {
668
- "functionBody": "return (model.mode === 'cloud' || model.mode === 'both');"
669
- }
997
+ "type": "string"
670
998
  },
671
999
  "accessKey": {
672
1000
  "description": "Required for Cloud mode.",
@@ -674,9 +1002,6 @@
674
1002
  "type": "string",
675
1003
  "x-schema-form": {
676
1004
  "type": "password"
677
- },
678
- "condition": {
679
- "functionBody": "return (model.mode === 'cloud' || model.mode === 'both');"
680
1005
  }
681
1006
  },
682
1007
  "countryCode": {
@@ -966,9 +1291,6 @@
966
1291
  "deviceOverrides": {
967
1292
  "title": "Device Overriding Configs",
968
1293
  "type": "array",
969
- "condition": {
970
- "functionBody": "return (model.mode === 'cloud' || model.mode === 'both');"
971
- },
972
1294
  "items": {
973
1295
  "type": "object",
974
1296
  "required": ["id"],
@@ -994,6 +1316,33 @@
994
1316
  "functionBody": "return (model.options && model.options.deviceOverrides);"
995
1317
  }
996
1318
  },
1319
+ "configFor": {
1320
+ "title": "When to apply the configuration",
1321
+ "description": "Whether the setting is for devices on Cloud, devices on LAN, or used by both.",
1322
+ "type": "string",
1323
+ "required": true,
1324
+ "default": "cloud",
1325
+ "oneOf": [
1326
+ {
1327
+ "title": "Cloud",
1328
+ "enum": [
1329
+ "cloud"
1330
+ ]
1331
+ },
1332
+ {
1333
+ "title": "LAN",
1334
+ "enum": [
1335
+ "local"
1336
+ ]
1337
+ },
1338
+ {
1339
+ "title": "Both",
1340
+ "enum": [
1341
+ "both"
1342
+ ]
1343
+ }
1344
+ ]
1345
+ },
997
1346
  "schema": {
998
1347
  "title": "Schema Overriding Configs",
999
1348
  "type": "array",
@@ -1129,9 +1478,6 @@
1129
1478
  "title": "Accessory Service Informations ",
1130
1479
  "description": "Accessory Service Information Configs",
1131
1480
  "type": "array",
1132
- "condition": {
1133
- "functionBody": "return (model.mode === 'cloud' || model.mode === 'both');"
1134
- },
1135
1481
  "items": {
1136
1482
  "type": "object",
1137
1483
  "required": ["device_id", "index"],
@@ -1186,6 +1532,17 @@
1186
1532
  "functionBody": "return (model.options && model.options.generateWeatherAccessory);"
1187
1533
  }
1188
1534
  },
1535
+ "forceIPv4": {
1536
+ "title": "Forcing IPv4 connection",
1537
+ "type": "boolean",
1538
+ "default": false
1539
+ }
1540
+ }
1541
+ },
1542
+ "common": {
1543
+ "title": "Common Settings",
1544
+ "type": "object",
1545
+ "properties": {
1189
1546
  "debug": {
1190
1547
  "title": "Enable Debug Logging",
1191
1548
  "type": "boolean",
@@ -1196,332 +1553,10 @@
1196
1553
  "description": "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.",
1197
1554
  "type": "string",
1198
1555
  "condition": {
1199
- "functionBody": "return (model.options && model.options.debug);"
1556
+ "functionBody": "return (model.common.debug);"
1200
1557
  }
1201
- },
1202
- "forceIPv4": {
1203
- "title": "Forcing IPv4 connection",
1204
- "type": "boolean",
1205
- "default": false
1206
1558
  }
1207
1559
  }
1208
1560
  }
1209
1561
  }
1210
- },
1211
- "layout": [
1212
- "mode",
1213
- {
1214
- "type": "fieldset",
1215
- "title": "Local Settings",
1216
- "expandable": true,
1217
- "expanded": true,
1218
- "condition": {
1219
- "functionBody": "return (model.mode === 'local' || model.mode === 'both');"
1220
- },
1221
- "items": [
1222
- "local.autoDiscoverDevices",
1223
- "local.discoverTimeout",
1224
- "local.rediscoverInterval",
1225
- {
1226
- "key": "local.devices",
1227
- "add": "Add Manual Device",
1228
- "title": "{{ 'Add New Device' }}",
1229
- "type": "tabarray",
1230
- "notitle": true,
1231
- "items": [
1232
- {
1233
- "type": "div",
1234
- "displayFlex": false,
1235
- "notitle": true,
1236
- "title": "{{ value.name || value.tuyaDeviceId || 'New Device' }}",
1237
- "items": [
1238
- { "key": "local.devices[].category" },
1239
- { "key": "local.devices[].name" },
1240
- { "key": "local.devices[].tuyaDeviceId" },
1241
- { "key": "local.devices[].tuyaKey" },
1242
- { "key": "local.devices[].ip" },
1243
- { "key": "local.devices[].protocolVersion" },
1244
- { "key": "local.devices[].dpMapping" },
1245
- { "key": "local.devices[].outletCount" },
1246
- { "key": "local.devices[].outlets" },
1247
- { "key": "local.devices[].dpPower" },
1248
- { "key": "local.devices[].dpBrightness" },
1249
- { "key": "local.devices[].dpColorTemperature" },
1250
- { "key": "local.devices[].minWhiteColor" },
1251
- { "key": "local.devices[].maxWhiteColor" },
1252
- { "key": "local.devices[].dpMode" },
1253
- { "key": "local.devices[].dpColor" },
1254
- { "key": "local.devices[].colorFunction" },
1255
- { "key": "local.devices[].scaleBrightness" },
1256
- { "key": "local.devices[].scaleWhiteColor" },
1257
- { "key": "local.devices[].voltsId" },
1258
- { "key": "local.devices[].ampsId" },
1259
- { "key": "local.devices[].wattsId" },
1260
- { "key": "local.devices[].voltsDivisor" },
1261
- { "key": "local.devices[].ampsDivisor" },
1262
- { "key": "local.devices[].wattsDivisor" },
1263
- { "key": "local.devices[].noCool" },
1264
- { "key": "local.devices[].noHeat" },
1265
- { "key": "local.devices[].cmdCool" },
1266
- { "key": "local.devices[].cmdHeat" },
1267
- { "key": "local.devices[].noSwing" },
1268
- { "key": "local.devices[].minTemperature" },
1269
- { "key": "local.devices[].maxTemperature" },
1270
- { "key": "local.devices[].minTemperatureSteps" },
1271
- { "key": "local.devices[].dpActive" },
1272
- { "key": "local.devices[].dpDesiredTemperature" },
1273
- { "key": "local.devices[].dpCurrentTemperature" },
1274
- { "key": "local.devices[].dpAction" },
1275
- { "key": "local.devices[].dpStatus" },
1276
- { "key": "local.devices[].flipState" },
1277
- { "key": "local.devices[].timeToOpen" },
1278
- { "key": "local.devices[].timeToTighten" },
1279
- { "key": "local.devices[].timeToClose" },
1280
- { "key": "local.devices[].dpLight" },
1281
- { "key": "local.devices[].dpBlindType" },
1282
- { "key": "local.devices[].dpLightOn" },
1283
- { "key": "local.devices[].dpFanOn" },
1284
- { "key": "local.devices[].dpRotationSpeed" },
1285
- { "key": "local.devices[].dpRotationDirection" },
1286
- { "key": "local.devices[].maxSpeed" },
1287
- { "key": "local.devices[].fanDefaultSpeed" },
1288
- { "key": "local.devices[].useStrings" },
1289
- { "key": "local.devices[].dpChildLock" },
1290
- { "key": "local.devices[].dpTemperatureDisplayUnits" },
1291
- { "key": "local.devices[].cmdLow" },
1292
- { "key": "local.devices[].cmdHigh" },
1293
- { "key": "local.devices[].noChildLock" },
1294
- { "key": "local.devices[].noTemperatureUnit" },
1295
- { "key": "local.devices[].temperatureDivisor" },
1296
- { "key": "local.devices[].thresholdTemperatureDivisor" },
1297
- { "key": "local.devices[].temperatureOffset" }
1298
- ]
1299
- }
1300
- ]
1301
- }
1302
- ]
1303
- },
1304
- {
1305
- "type": "fieldset",
1306
- "title": "Tuya Cloud Account Info",
1307
- "expandable": true,
1308
- "expanded": false,
1309
- "condition": {
1310
- "functionBody": "return (model.mode === 'cloud' || model.mode === 'both');"
1311
- },
1312
- "items": [
1313
- "options.projectType",
1314
- "options.endpoint",
1315
- "options.accessId",
1316
- "options.accessKey",
1317
- "options.countryCode",
1318
- "options.username",
1319
- "options.password",
1320
- "options.appSchema"
1321
- ]
1322
- },
1323
- {
1324
- "type": "fieldset",
1325
- "title": "Tuya Home Settings",
1326
- "expandable": true,
1327
- "expanded": false,
1328
- "notitle": false,
1329
- "condition": {
1330
- "functionBody": "return (model.mode === 'cloud' || model.mode === 'both');"
1331
- },
1332
- "items": [
1333
- {
1334
- "key": "options.homeWhitelist",
1335
- "add": "Add Another Home ID",
1336
- "title": "{{ 'New Whitelisted Home' }}",
1337
- "type": "tabarray",
1338
- "notitle": true,
1339
- "items": [
1340
- {
1341
- "type": "div",
1342
- "displayFlex": true,
1343
- "flex-direction": "row",
1344
- "notitle": true,
1345
- "title": "{{ value }}",
1346
- "items": [
1347
- {
1348
- "key": "options.homeWhitelist[]",
1349
- "placeholder": "Home ID"
1350
- }
1351
- ]
1352
- }
1353
- ]
1354
- }
1355
- ]
1356
- },
1357
- {
1358
- "type": "fieldset",
1359
- "title": "Tuya Device Settings",
1360
- "expandable": true,
1361
- "expanded": true,
1362
- "notitle": false,
1363
- "condition": {
1364
- "functionBody": "return (model.mode === 'cloud' || model.mode === 'both');"
1365
- },
1366
- "items": [
1367
- {
1368
- "key": "options.deviceOverrides",
1369
- "add": "Add Another Device Override",
1370
- "title": "{{ 'New Device Override' }}",
1371
- "type": "tabarray",
1372
- "notitle": true,
1373
- "default": [],
1374
- "items": [
1375
- {
1376
- "type": "div",
1377
- "displayFlex": false,
1378
- "flex-direction": "row",
1379
- "notitle": true,
1380
- "title": "{{ value.id || 'New Device Override' }}",
1381
- "items": [
1382
- {
1383
- "key": "options.deviceOverrides[].id"
1384
- },
1385
- {
1386
- "key": "options.deviceOverrides[].category"
1387
- },
1388
- {
1389
- "key": "options.deviceOverrides[].unbridged"
1390
- },
1391
- {
1392
- "key": "options.deviceOverrides[].schema",
1393
- "add": "Add New Schema",
1394
- "title": "{{ 'New Schema' }}",
1395
- "type": "tabarray",
1396
- "notitle": true,
1397
- "items": [
1398
- {
1399
- "type": "div",
1400
- "displayFlex": true,
1401
- "title": "{{ value.code }}",
1402
- "flex-direction": "column",
1403
- "notitle": false,
1404
- "items": [
1405
- {
1406
- "key": "options.deviceOverrides[].schema[].code"
1407
- },
1408
- {
1409
- "key": "options.deviceOverrides[].schema[].newCode"
1410
- },
1411
- {
1412
- "key": "options.deviceOverrides[].schema[].hidden"
1413
- },
1414
- {
1415
- "key": "options.deviceOverrides[].schema[].type"
1416
- },
1417
- {
1418
- "key": "options.deviceOverrides[].schema[].property",
1419
- "notitle": false,
1420
- "items": [
1421
- "options.deviceOverrides[].schema[].property.min",
1422
- "options.deviceOverrides[].schema[].property.max",
1423
- "options.deviceOverrides[].schema[].property.scale",
1424
- "options.deviceOverrides[].schema[].property.step",
1425
- {
1426
- "key": "options.deviceOverrides[].schema[].property.range",
1427
- "add": "Add Range",
1428
- "title": "{{ 'New Range' }}",
1429
- "type": "tabarray",
1430
- "notitle": true,
1431
- "items": [
1432
- {
1433
- "type": "div",
1434
- "displayFlex": true,
1435
- "flex-direction": "row",
1436
- "notitle": true,
1437
- "title": "{{ value }}",
1438
- "items": [
1439
- {
1440
- "key": "options.deviceOverrides[].schema[].property.range[]",
1441
- "placeholder": "Range"
1442
- }
1443
- ]
1444
- }
1445
- ]
1446
- }
1447
- ]
1448
- }
1449
- ]
1450
- }
1451
- ]
1452
- }
1453
- ]
1454
- }
1455
- ]
1456
- }
1457
- ]
1458
- },
1459
-
1460
- {
1461
- "type": "fieldset",
1462
- "title": "Accessory Service Informations",
1463
- "expandable": true,
1464
- "expanded": false,
1465
- "notitle": false,
1466
- "condition": {
1467
- "functionBody": "return (model.mode === 'cloud' || model.mode === 'both');"
1468
- },
1469
- "items": [
1470
- {
1471
- "key": "options.serviceInformationOverrides",
1472
- "add": "Add Another Service Information Override",
1473
- "title": "{{ 'New Service Information Override' }}",
1474
- "type": "tabarray",
1475
- "notitle": true,
1476
- "default": [],
1477
- "items": [
1478
- {
1479
- "type": "div",
1480
- "displayFlex": false,
1481
- "flex-direction": "row",
1482
- "notitle": true,
1483
- "title": "{{ value.device_id }}",
1484
- "items": [
1485
- {
1486
- "key": "options.serviceInformationOverrides[].device_id"
1487
- },
1488
- {
1489
- "key": "options.serviceInformationOverrides[].index"
1490
- },
1491
- {
1492
- "key": "options.serviceInformationOverrides[].manifacturer"
1493
- },
1494
- {
1495
- "key": "options.serviceInformationOverrides[].model"
1496
- },
1497
- {
1498
- "key": "options.serviceInformationOverrides[].firmwareRevision"
1499
- },
1500
- {
1501
- "key": "options.serviceInformationOverrides[].configuredName"
1502
- }
1503
- ]
1504
- }
1505
- ]
1506
- }
1507
- ]
1508
- },
1509
- {
1510
- "type": "fieldset",
1511
- "title": "Advance Settings",
1512
- "expandable": true,
1513
- "expanded": false,
1514
- "notitle": false,
1515
- "condition": {
1516
- "functionBody": "return (model.mode === 'cloud' || model.mode === 'both');"
1517
- },
1518
- "items": [
1519
- "options.generateWeatherAccessory",
1520
- "options.weatherAPI",
1521
- "options.forceIPv4",
1522
- "options.debug",
1523
- "options.debugLevel"
1524
- ]
1525
- }
1526
- ]
1527
- }
1562
+ }}