@switchbot/homebridge-switchbot 3.5.0-beta.9 → 3.5.1-beta.0

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 (177) hide show
  1. package/.vscode/settings.json +4 -1
  2. package/CHANGELOG.md +4 -1
  3. package/config.schema.json +164 -22
  4. package/dist/device/blindtilt.d.ts +21 -96
  5. package/dist/device/blindtilt.d.ts.map +1 -1
  6. package/dist/device/blindtilt.js +457 -866
  7. package/dist/device/blindtilt.js.map +1 -1
  8. package/dist/device/bot.d.ts +27 -72
  9. package/dist/device/bot.d.ts.map +1 -1
  10. package/dist/device/bot.js +851 -913
  11. package/dist/device/bot.js.map +1 -1
  12. package/dist/device/ceilinglight.d.ts +15 -69
  13. package/dist/device/ceilinglight.d.ts.map +1 -1
  14. package/dist/device/ceilinglight.js +316 -742
  15. package/dist/device/ceilinglight.js.map +1 -1
  16. package/dist/device/colorbulb.d.ts +15 -76
  17. package/dist/device/colorbulb.d.ts.map +1 -1
  18. package/dist/device/colorbulb.js +380 -833
  19. package/dist/device/colorbulb.js.map +1 -1
  20. package/dist/device/contact.d.ts +14 -66
  21. package/dist/device/contact.d.ts.map +1 -1
  22. package/dist/device/contact.js +267 -602
  23. package/dist/device/contact.js.map +1 -1
  24. package/dist/device/curtain.d.ts +18 -89
  25. package/dist/device/curtain.d.ts.map +1 -1
  26. package/dist/device/curtain.js +469 -897
  27. package/dist/device/curtain.js.map +1 -1
  28. package/dist/device/device.d.ts +76 -0
  29. package/dist/device/device.d.ts.map +1 -0
  30. package/dist/device/device.js +846 -0
  31. package/dist/device/device.js.map +1 -0
  32. package/dist/device/fan.d.ts +63 -0
  33. package/dist/device/fan.d.ts.map +1 -0
  34. package/dist/device/fan.js +645 -0
  35. package/dist/device/fan.js.map +1 -0
  36. package/dist/device/hub.d.ts +19 -58
  37. package/dist/device/hub.d.ts.map +1 -1
  38. package/dist/device/hub.js +304 -640
  39. package/dist/device/hub.js.map +1 -1
  40. package/dist/device/humidifier.d.ts +11 -66
  41. package/dist/device/humidifier.d.ts.map +1 -1
  42. package/dist/device/humidifier.js +300 -710
  43. package/dist/device/humidifier.js.map +1 -1
  44. package/dist/device/iosensor.d.ts +12 -64
  45. package/dist/device/iosensor.d.ts.map +1 -1
  46. package/dist/device/iosensor.js +225 -643
  47. package/dist/device/iosensor.js.map +1 -1
  48. package/dist/device/lightstrip.d.ts +12 -70
  49. package/dist/device/lightstrip.d.ts.map +1 -1
  50. package/dist/device/lightstrip.js +371 -742
  51. package/dist/device/lightstrip.js.map +1 -1
  52. package/dist/device/lock.d.ts +17 -63
  53. package/dist/device/lock.d.ts.map +1 -1
  54. package/dist/device/lock.js +309 -642
  55. package/dist/device/lock.js.map +1 -1
  56. package/dist/device/meter.d.ts +15 -64
  57. package/dist/device/meter.d.ts.map +1 -1
  58. package/dist/device/meter.js +223 -638
  59. package/dist/device/meter.js.map +1 -1
  60. package/dist/device/meterplus.d.ts +15 -65
  61. package/dist/device/meterplus.d.ts.map +1 -1
  62. package/dist/device/meterplus.js +216 -644
  63. package/dist/device/meterplus.js.map +1 -1
  64. package/dist/device/motion.d.ts +12 -69
  65. package/dist/device/motion.d.ts.map +1 -1
  66. package/dist/device/motion.js +209 -588
  67. package/dist/device/motion.js.map +1 -1
  68. package/dist/device/plug.d.ts +10 -57
  69. package/dist/device/plug.d.ts.map +1 -1
  70. package/dist/device/plug.js +141 -532
  71. package/dist/device/plug.js.map +1 -1
  72. package/dist/device/robotvacuumcleaner.d.ts +13 -63
  73. package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
  74. package/dist/device/robotvacuumcleaner.js +252 -609
  75. package/dist/device/robotvacuumcleaner.js.map +1 -1
  76. package/dist/device/waterdetector.d.ts +11 -63
  77. package/dist/device/waterdetector.d.ts.map +1 -1
  78. package/dist/device/waterdetector.js +179 -521
  79. package/dist/device/waterdetector.js.map +1 -1
  80. package/dist/homebridge-ui/public/index.html +22 -16
  81. package/dist/homebridge-ui/server.js +1 -1
  82. package/dist/homebridge-ui/server.js.map +1 -1
  83. package/dist/index.d.ts +1 -1
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +2 -2
  86. package/dist/index.js.map +1 -1
  87. package/dist/irdevice/airconditioner.d.ts +10 -50
  88. package/dist/irdevice/airconditioner.d.ts.map +1 -1
  89. package/dist/irdevice/airconditioner.js +337 -482
  90. package/dist/irdevice/airconditioner.js.map +1 -1
  91. package/dist/irdevice/airpurifier.d.ts +8 -39
  92. package/dist/irdevice/airpurifier.d.ts.map +1 -1
  93. package/dist/irdevice/airpurifier.js +108 -333
  94. package/dist/irdevice/airpurifier.js.map +1 -1
  95. package/dist/irdevice/camera.d.ts +7 -36
  96. package/dist/irdevice/camera.d.ts.map +1 -1
  97. package/dist/irdevice/camera.js +47 -299
  98. package/dist/irdevice/camera.js.map +1 -1
  99. package/dist/irdevice/fan.d.ts +7 -43
  100. package/dist/irdevice/fan.d.ts.map +1 -1
  101. package/dist/irdevice/fan.js +95 -364
  102. package/dist/irdevice/fan.js.map +1 -1
  103. package/dist/irdevice/irdevice.d.ts +46 -0
  104. package/dist/irdevice/irdevice.d.ts.map +1 -0
  105. package/dist/irdevice/irdevice.js +393 -0
  106. package/dist/irdevice/irdevice.js.map +1 -0
  107. package/dist/irdevice/light.d.ts +12 -45
  108. package/dist/irdevice/light.d.ts.map +1 -1
  109. package/dist/irdevice/light.js +121 -376
  110. package/dist/irdevice/light.js.map +1 -1
  111. package/dist/irdevice/other.d.ts +19 -48
  112. package/dist/irdevice/other.d.ts.map +1 -1
  113. package/dist/irdevice/other.js +441 -584
  114. package/dist/irdevice/other.js.map +1 -1
  115. package/dist/irdevice/tv.d.ts +8 -40
  116. package/dist/irdevice/tv.d.ts.map +1 -1
  117. package/dist/irdevice/tv.js +94 -353
  118. package/dist/irdevice/tv.js.map +1 -1
  119. package/dist/irdevice/vacuumcleaner.d.ts +7 -36
  120. package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
  121. package/dist/irdevice/vacuumcleaner.js +48 -299
  122. package/dist/irdevice/vacuumcleaner.js.map +1 -1
  123. package/dist/irdevice/waterheater.d.ts +7 -36
  124. package/dist/irdevice/waterheater.d.ts.map +1 -1
  125. package/dist/irdevice/waterheater.js +50 -305
  126. package/dist/irdevice/waterheater.js.map +1 -1
  127. package/dist/platform.d.ts +22 -8
  128. package/dist/platform.d.ts.map +1 -1
  129. package/dist/platform.js +342 -191
  130. package/dist/platform.js.map +1 -1
  131. package/dist/settings.d.ts +66 -18
  132. package/dist/settings.d.ts.map +1 -1
  133. package/dist/settings.js +16 -552
  134. package/dist/settings.js.map +1 -1
  135. package/dist/utils.d.ts +95 -0
  136. package/dist/utils.d.ts.map +1 -1
  137. package/dist/utils.js +657 -1
  138. package/dist/utils.js.map +1 -1
  139. package/eslint.config.js +96 -0
  140. package/package.json +20 -16
  141. package/src/custom.d.ts +2 -1
  142. package/src/device/blindtilt.ts +488 -937
  143. package/src/device/bot.ts +907 -1016
  144. package/src/device/ceilinglight.ts +330 -798
  145. package/src/device/colorbulb.ts +394 -904
  146. package/src/device/contact.ts +298 -637
  147. package/src/device/curtain.ts +496 -954
  148. package/src/device/device.ts +872 -0
  149. package/src/device/fan.ts +692 -0
  150. package/src/device/hub.ts +338 -671
  151. package/src/device/humidifier.ts +330 -777
  152. package/src/device/iosensor.ts +258 -671
  153. package/src/device/lightstrip.ts +394 -809
  154. package/src/device/lock.ts +345 -700
  155. package/src/device/meter.ts +256 -666
  156. package/src/device/meterplus.ts +248 -672
  157. package/src/device/motion.ts +234 -622
  158. package/src/device/plug.ts +152 -572
  159. package/src/device/robotvacuumcleaner.ts +273 -653
  160. package/src/device/waterdetector.ts +198 -549
  161. package/src/homebridge-ui/public/index.html +22 -16
  162. package/src/homebridge-ui/server.ts +1 -1
  163. package/src/index.ts +4 -3
  164. package/src/irdevice/airconditioner.ts +368 -540
  165. package/src/irdevice/airpurifier.ts +134 -369
  166. package/src/irdevice/camera.ts +60 -324
  167. package/src/irdevice/fan.ts +111 -392
  168. package/src/irdevice/irdevice.ts +406 -0
  169. package/src/irdevice/light.ts +159 -425
  170. package/src/irdevice/other.ts +509 -661
  171. package/src/irdevice/tv.ts +123 -388
  172. package/src/irdevice/vacuumcleaner.ts +61 -324
  173. package/src/irdevice/waterheater.ts +63 -333
  174. package/src/platform.ts +395 -259
  175. package/src/settings.ts +120 -610
  176. package/src/utils.ts +661 -1
  177. package/src/device/waterdetector.json +0 -11
@@ -31,5 +31,8 @@
31
31
  "editor.defaultFormatter": "vscode.json-language-features"
32
32
  },
33
33
  "codeQL.githubDatabase.update": "never",
34
- "codeQL.githubDatabase.download": "never"
34
+ "codeQL.githubDatabase.download": "never",
35
+ "[html]": {
36
+ "editor.defaultFormatter": "vscode.html-language-features"
37
+ }
35
38
  }
package/CHANGELOG.md CHANGED
@@ -2,12 +2,15 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/)
4
4
 
5
- ## [BETA-3.5.0](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v3.5.0) (2024-04-XX)
5
+ ## [3.5.0](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v3.5.0) (2024-05-26)
6
6
 
7
7
  ### What's Changed
8
8
  - Add Support for `Water Detector`
9
+ - Add Support for `Battery Circulator Fan`
9
10
  - Add BLE support for `Smart Lock`
10
11
  - Add `K10+` deviceType Support
12
+ - Add Support for `maxRetries` and `delayBetweenRetries` on OpenAPI status refreshes based on [#959](https://github.com/OpenWonderLabs/homebridge-switchbot/issues/959#issuecomment-2094879876), Thanks [@sametguzeldev](https://github.com/sametguzeldev)
13
+ - Major Refactoring of `device` and `irdevice` files.
11
14
  - Housekeeping and updated dependencies.
12
15
 
13
16
  **Full Changelog**: https://github.com/OpenWonderLabs/homebridge-switchbot/compare/v3.4.0...v3.5.0
@@ -275,7 +275,7 @@
275
275
  ],
276
276
  "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
277
277
  "condition": {
278
- "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType !== 'Hub 2');"
278
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
279
279
  }
280
280
  },
281
281
  "webhook": {
@@ -308,9 +308,30 @@
308
308
  "title": "Hide Hub 2's Temperature Sensor",
309
309
  "type": "boolean",
310
310
  "condition": {
311
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2') && model.options.devices[arrayIndices].deviceId);"
311
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Hub 2' && model.options.devices[arrayIndices].deviceId);"
312
312
  }
313
313
  },
314
+ "convertUnitTo": {
315
+ "title": "Convert Hub's Temperature Unit To",
316
+ "type": "string",
317
+ "condition": {
318
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Hub 2' && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hub.hide_temperature);"
319
+ },
320
+ "oneOf": [
321
+ {
322
+ "title": "Celsius",
323
+ "enum": [
324
+ "CELSIUS"
325
+ ]
326
+ },
327
+ {
328
+ "title": "Fahrenheit",
329
+ "enum": [
330
+ "FAHRENHEIT"
331
+ ]
332
+ }
333
+ ]
334
+ },
314
335
  "hide_humidity": {
315
336
  "title": "Hide Hub 2's Humidity Sensor",
316
337
  "type": "boolean",
@@ -478,14 +499,75 @@
478
499
  "title": "Hide Meter's Temperature Sensor",
479
500
  "type": "boolean",
480
501
  "condition": {
481
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor') && model.options.devices[arrayIndices].deviceId);"
502
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId);"
482
503
  }
483
504
  },
505
+ "convertUnitTo": {
506
+ "title": "Convert Meter's Temperature Unit To",
507
+ "type": "string",
508
+ "condition": {
509
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].meter.hide_temperature);"
510
+ },
511
+ "oneOf": [
512
+ {
513
+ "title": "Celsius",
514
+ "enum": [
515
+ "CELSIUS"
516
+ ]
517
+ },
518
+ {
519
+ "title": "Fahrenheit",
520
+ "enum": [
521
+ "FAHRENHEIT"
522
+ ]
523
+ }
524
+ ]
525
+ },
484
526
  "hide_humidity": {
485
527
  "title": "Hide Meter's Humidity Sensor",
486
528
  "type": "boolean",
487
529
  "condition": {
488
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor') && model.options.devices[arrayIndices].deviceId);"
530
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId);"
531
+ }
532
+ }
533
+ }
534
+ },
535
+ "iosensor": {
536
+ "type": "object",
537
+ "properties": {
538
+ "hide_temperature": {
539
+ "title": "Hide Indoor/Outdoor's Temperature Sensor",
540
+ "type": "boolean",
541
+ "condition": {
542
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' && model.options.devices[arrayIndices].deviceId);"
543
+ }
544
+ },
545
+ "convertUnitTo": {
546
+ "title": "Convert Indoor/Outdoor Sensor's Temperature Unit To",
547
+ "type": "string",
548
+ "condition": {
549
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].iosensor.hide_temperature);"
550
+ },
551
+ "oneOf": [
552
+ {
553
+ "title": "Celsius",
554
+ "enum": [
555
+ "CELSIUS"
556
+ ]
557
+ },
558
+ {
559
+ "title": "Fahrenheit",
560
+ "enum": [
561
+ "FAHRENHEIT"
562
+ ]
563
+ }
564
+ ]
565
+ },
566
+ "hide_humidity": {
567
+ "title": "Hide Indoor/Outdoor's Humidity Sensor",
568
+ "type": "boolean",
569
+ "condition": {
570
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' && model.options.devices[arrayIndices].deviceId);"
489
571
  }
490
572
  }
491
573
  }
@@ -858,6 +940,22 @@
858
940
  "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
859
941
  }
860
942
  },
943
+ "maxRetries": {
944
+ "title": "Device Max Retries for OpenAPI",
945
+ "type": "number",
946
+ "placeholder": 5,
947
+ "condition": {
948
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
949
+ }
950
+ },
951
+ "delayBetweenRetries": {
952
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
953
+ "type": "number",
954
+ "placeholder": 3,
955
+ "condition": {
956
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
957
+ }
958
+ },
861
959
  "maxRetry": {
862
960
  "title": "Max Retries for BLE",
863
961
  "type": "number",
@@ -900,14 +998,29 @@
900
998
  "type": "string",
901
999
  "placeholder": "1.2.8",
902
1000
  "condition": {
903
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId);"
1001
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
904
1002
  }
905
1003
  },
906
1004
  "refreshRate": {
907
1005
  "title": "Device Refresh Rate",
908
1006
  "type": "number",
909
1007
  "placeholder": 360,
910
- "description": "Indicates the number of seconds between polls of SwitchBot API.",
1008
+ "condition": {
1009
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
1010
+ }
1011
+ },
1012
+ "updateRate": {
1013
+ "title": "Device Update Rate",
1014
+ "type": "number",
1015
+ "placeholder": 360,
1016
+ "condition": {
1017
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
1018
+ }
1019
+ },
1020
+ "pushRate": {
1021
+ "title": "Device Push Rate",
1022
+ "type": "number",
1023
+ "placeholder": 360,
911
1024
  "condition": {
912
1025
  "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
913
1026
  }
@@ -916,7 +1029,7 @@
916
1029
  "title": "Offline as Off",
917
1030
  "type": "boolean",
918
1031
  "condition": {
919
- "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
1032
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
920
1033
  }
921
1034
  },
922
1035
  "external": {
@@ -1539,17 +1652,30 @@
1539
1652
  "type": "string",
1540
1653
  "placeholder": "http://${FQDN}:${PORT}/${PATH}"
1541
1654
  },
1655
+ "maxRetries": {
1656
+ "title": "Max Retries for OpenAPI",
1657
+ "type": "number",
1658
+ "placeholder": 5
1659
+ },
1660
+ "delayBetweenRetries": {
1661
+ "title": "Delay Between Retries for OpenAPI (In Seconds)",
1662
+ "type": "number",
1663
+ "placeholder": 3
1664
+ },
1542
1665
  "refreshRate": {
1543
- "title": "Refresh Rate",
1666
+ "title": "Device Refresh Rate",
1667
+ "type": "number",
1668
+ "placeholder": 360
1669
+ },
1670
+ "updateRate": {
1671
+ "title": "Device Update Rate",
1544
1672
  "type": "number",
1545
- "placeholder": 360,
1546
- "description": "Indicates the number of seconds between polls of SwitchBot API."
1673
+ "placeholder": 5
1547
1674
  },
1548
1675
  "pushRate": {
1549
- "title": "Push Rate",
1676
+ "title": "Device Push Rate",
1550
1677
  "type": "number",
1551
- "placeholder": 1,
1552
- "description": "Indicates the number of seconds between pushes to SwitchBot API."
1678
+ "placeholder": 1
1553
1679
  },
1554
1680
  "logging": {
1555
1681
  "title": "Logging Setting",
@@ -1625,10 +1751,13 @@
1625
1751
  "options.devices[].connectionType",
1626
1752
  "options.devices[].webhook",
1627
1753
  "options.devices[].hub.hide_temperature",
1754
+ "options.devices[].hub.convertUnitTo",
1628
1755
  "options.devices[].hub.hide_humidity",
1629
1756
  "options.devices[].hub.hide_lightsensor",
1630
1757
  "options.devices[].scanDuration",
1631
1758
  "options.devices[].disableCaching",
1759
+ "options.devices[].maxRetries",
1760
+ "options.devices[].delayBetweenRetries",
1632
1761
  "options.devices[].maxRetry",
1633
1762
  "options.devices[].bot.mode",
1634
1763
  "options.devices[].bot.deviceType",
@@ -1636,7 +1765,11 @@
1636
1765
  "options.devices[].bot.doublePress",
1637
1766
  "options.devices[].bot.pushRatePress",
1638
1767
  "options.devices[].meter.hide_temperature",
1768
+ "options.devices[].meter.convertUnitTo",
1639
1769
  "options.devices[].meter.hide_humidity",
1770
+ "options.devices[].iosensor.hide_temperature",
1771
+ "options.devices[].iosensor.convertUnitTo",
1772
+ "options.devices[].iosensor.hide_humidity",
1640
1773
  "options.devices[].waterdetector.hide_leak",
1641
1774
  "options.devices[].humidifier.set_minStep",
1642
1775
  "options.devices[].humidifier.hide_temperature",
@@ -1674,7 +1807,18 @@
1674
1807
  "options.devices[].mqttPubOptions",
1675
1808
  "options.devices[].history",
1676
1809
  "options.devices[].firmware",
1677
- "options.devices[].refreshRate",
1810
+ {
1811
+ "key": "options.devices[].refreshRate",
1812
+ "description": "<em class='primary-text'>Specifies the interval, in seconds, for retrieving the latest device status from the SwitchBot API. This interval applies only to this specific device.</em>"
1813
+ },
1814
+ {
1815
+ "key": "options.devices[].updateRate",
1816
+ "description": "<em class='primary-text'>Specifies the interval, in seconds, at which this device will request updates from the SwitchBot API while the device is in motion, for Curtain(s) and Blind Tilt(s) only.</em>"
1817
+ },
1818
+ {
1819
+ "key": "options.devices[].pushRate",
1820
+ "description": "<em class='primary-text'>Specifies the interval, in seconds, between pushes to the SwitchBot API for this specific device.</em>"
1821
+ },
1678
1822
  "options.devices[].offline",
1679
1823
  "options.devices[].external",
1680
1824
  "options.devices[].logging"
@@ -1738,21 +1882,19 @@
1738
1882
  "expanded": false,
1739
1883
  "items": [
1740
1884
  "options.webhookURL",
1741
- {
1742
- "type": "help",
1743
- "helpvalue": "<h5>Refresh Rate</h5><em class='primary-text'>Refresh Rate indicates the number of seconds between polls of SwitchBot API.</em>"
1744
- },
1885
+ "options.maxRetries",
1886
+ "options.delayBetweenRetries",
1745
1887
  {
1746
1888
  "key": "options.refreshRate",
1747
- "notitle": true
1889
+ "description": "<em class='primary-text'>Specifies the interval, in seconds, for retrieving the latest device status from the SwitchBot API.</em>"
1748
1890
  },
1749
1891
  {
1750
- "type": "help",
1751
- "helpvalue": "<h5>Push Rate</h5><em class='primary-text'>Push Rate indicates the number of seconds between pushes to SwitchBot API, Currently only for Curtains.</em>"
1892
+ "key": "options.updateRate",
1893
+ "description": "<em class='primary-text'>Specifies the interval, in seconds, at which devices will request updates from the SwitchBot API while in motion, for Curtain(s) and Blind Tilt(s) only.</em>"
1752
1894
  },
1753
1895
  {
1754
1896
  "key": "options.pushRate",
1755
- "notitle": true
1897
+ "description": "<em class='primary-text'>Specifies the interval, in seconds, between pushes to the SwitchBot API.</em>"
1756
1898
  },
1757
1899
  "options.logging"
1758
1900
  ]
@@ -1,89 +1,35 @@
1
1
  /// <reference types="node" />
2
- import { MqttClient } from 'mqtt';
3
2
  import { Subject } from 'rxjs';
4
- import { SwitchBotPlatform } from '../platform.js';
5
- import { Service, PlatformAccessory, CharacteristicValue, Logging, API, HAP } from 'homebridge';
6
- import { device, devicesConfig, serviceData, deviceStatus, SwitchBotPlatformConfig } from '../settings.js';
7
- declare enum BlindTiltMappingMode {
8
- OnlyUp = "only_up",
9
- OnlyDown = "only_down",
10
- DownAndUp = "down_and_up",
11
- UpAndDown = "up_and_down",
12
- UseTiltForDirection = "use_tilt_for_direction"
13
- }
14
- export declare class BlindTilt {
15
- private readonly platform;
16
- private accessory;
17
- device: device & devicesConfig;
18
- readonly api: API;
19
- readonly log: Logging;
20
- readonly config: SwitchBotPlatformConfig;
21
- protected readonly hap: HAP;
22
- batteryService: Service;
23
- lightSensorService?: Service;
24
- windowCoveringService: Service;
25
- BatteryLevel: CharacteristicValue;
26
- PositionState: CharacteristicValue;
27
- TargetPosition: CharacteristicValue;
28
- CurrentPosition: CharacteristicValue;
29
- StatusLowBattery: CharacteristicValue;
30
- FirmwareRevision: CharacteristicValue;
31
- CurrentAmbientLightLevel?: CharacteristicValue;
32
- TargetHorizontalTiltAngle: CharacteristicValue;
33
- CurrentHorizontalTiltAngle: CharacteristicValue;
34
- OpenAPI_InMotion: deviceStatus['moving'];
35
- OpenAPI_BatteryLevel: serviceData['battery'];
36
- OpenAPI_Direction: deviceStatus['direction'];
37
- OpenAPI_Calibration: serviceData['calibration'];
38
- OpenAPI_CurrentPosition: serviceData['position'];
39
- OpenAPI_FirmwareRevision: deviceStatus['version'];
40
- OpenAPI_CurrentAmbientLightLevel: deviceStatus['brightness'];
41
- Mode: string;
42
- setPositionMode?: string | number;
3
+ import { deviceBase } from './device.js';
4
+ import { BlindTiltMappingMode } from '../utils.js';
5
+ import type { SwitchBotPlatform } from '../platform.js';
6
+ import type { PlatformAccessory, CharacteristicValue } from 'homebridge';
7
+ import type { device, devicesConfig, serviceData, deviceStatus } from '../settings.js';
8
+ export declare class BlindTilt extends deviceBase {
9
+ readonly platform: SwitchBotPlatform;
10
+ private WindowCovering;
11
+ private Battery;
12
+ private LightSensor?;
43
13
  mappingMode: BlindTiltMappingMode;
44
- BLE_InMotion: serviceData['inMotion'];
45
- BLE_BatteryLevel: serviceData['battery'];
46
- BLE_Calibration: serviceData['calibration'];
47
- BLE_CurrentPosition: serviceData['position'];
48
- BLE_CurrentAmbientLightLevel: serviceData['lightLevel'];
49
- BLE_IsConnected?: boolean;
50
- spaceBetweenLevels: number;
51
14
  setNewTarget: boolean;
52
15
  setNewTargetTimer: NodeJS.Timeout;
53
- mqttClient: MqttClient | null;
54
- set_minStep: number;
55
- updateRate: number;
56
- set_minLux: number;
57
- set_maxLux: number;
58
- scanDuration: number;
59
- deviceLogging: string;
60
- deviceRefreshRate: number;
61
- setCloseMode: string;
62
- setOpenMode: string;
63
16
  blindTiltUpdateInProgress: boolean;
64
17
  doBlindTiltUpdate: Subject<void>;
65
- private readonly OpenAPI;
66
- private readonly BLE;
67
18
  constructor(platform: SwitchBotPlatform, accessory: PlatformAccessory, device: device & devicesConfig);
68
19
  /**
69
- * Parse the device status from the SwitchBot api
20
+ * Parse the device status from the SwitchBotBLE API
21
+ */
22
+ BLEparseStatus(serviceData: serviceData): Promise<void>;
23
+ /**
24
+ * Parse the device status from the SwitchBot OpenAPI
70
25
  */
71
- parseStatus(): Promise<void>;
72
- BLEparseStatus(): Promise<void>;
73
- openAPIparseStatus(): Promise<void>;
26
+ openAPIparseStatus(deviceStatus: deviceStatus): Promise<void>;
74
27
  refreshStatus(): Promise<void>;
75
28
  BLERefreshStatus(): Promise<void>;
76
29
  openAPIRefreshStatus(): Promise<void>;
30
+ registerWebhook(accessory: PlatformAccessory, device: device & devicesConfig): Promise<void>;
77
31
  pushChanges(): Promise<void>;
78
32
  BLEpushChanges(): Promise<void>;
79
- retry({ max, fn }: {
80
- max: number;
81
- fn: {
82
- (): any;
83
- (): Promise<any>;
84
- };
85
- }): Promise<null>;
86
- maxRetry(): number;
87
33
  openAPIpushChanges(): Promise<void>;
88
34
  /**
89
35
  * Handle requests to set the value of the "Target Horizontal Tilt" characteristic
@@ -95,22 +41,15 @@ export declare class BlindTilt {
95
41
  TargetPositionSet(value: CharacteristicValue): Promise<void>;
96
42
  startUpdatingBlindTiltIfNeeded(): Promise<void>;
97
43
  updateHomeKitCharacteristics(): Promise<void>;
98
- mqttPublish(topic: string, message: any): void;
99
- setupMqtt(device: device & devicesConfig): Promise<void>;
100
- stopScanning(switchbot: any): Promise<void>;
101
- getCustomBLEAddress(switchbot: any): Promise<void>;
102
44
  BLEPushConnection(): Promise<void>;
103
45
  BLERefreshConnection(switchbot: any): Promise<void>;
104
- SilentPerformance(): Promise<void>;
46
+ setPerformance(): Promise<{
47
+ setPositionMode: number;
48
+ Mode: string;
49
+ }>;
105
50
  setMinMax(): Promise<void>;
106
- minStep(device: device & devicesConfig): number;
107
- minLux(): number;
108
- maxLux(): number;
109
- scan(device: device & devicesConfig): Promise<void>;
110
- statusCode(statusCode: number): Promise<void>;
111
51
  offlineOff(): Promise<void>;
112
52
  apiError(e: any): Promise<void>;
113
- deviceContext(): Promise<void>;
114
53
  /**
115
54
  * Maps device values to homekit values
116
55
  *
@@ -127,19 +66,5 @@ export declare class BlindTilt {
127
66
  * @returns [device position, device direction]
128
67
  */
129
68
  mapHomekitValuesToDeviceValues(homekitPosition: number, homekitTiltAngle: number): [string, number];
130
- refreshRate(device: device & devicesConfig): Promise<void>;
131
- deviceConfig(device: device & devicesConfig): Promise<void>;
132
- deviceLogs(device: device & devicesConfig): Promise<void>;
133
- /**
134
- * Logging for Device
135
- */
136
- infoLog(...log: any[]): void;
137
- warnLog(...log: any[]): void;
138
- debugWarnLog(...log: any[]): void;
139
- errorLog(...log: any[]): void;
140
- debugErrorLog(...log: any[]): void;
141
- debugLog(...log: any[]): void;
142
- enablingDeviceLogging(): boolean;
143
69
  }
144
- export {};
145
70
  //# sourceMappingURL=blindtilt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blindtilt.d.ts","sourceRoot":"","sources":["../../src/device/blindtilt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blindtilt.d.ts","sourceRoot":"","sources":["../../src/device/blindtilt.ts"],"names":[],"mappings":";AAIA,OAAO,EAAY,OAAO,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGvF,qBAAa,SAAU,SAAQ,UAAU;IAsCrC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IApCtC,OAAO,CAAC,cAAc,CAQpB;IAEF,OAAO,CAAC,OAAO,CAMb;IAEF,OAAO,CAAC,WAAW,CAAC,CAIlB;IAGF,WAAW,EAAE,oBAAoB,CAA+B;IAGhE,YAAY,EAAG,OAAO,CAAC;IACvB,iBAAiB,EAAG,MAAM,CAAC,OAAO,CAAC;IAGnC,yBAAyB,EAAG,OAAO,CAAC;IACpC,iBAAiB,EAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAGvB,QAAQ,EAAE,iBAAiB,EACpC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM,GAAG,aAAa;IAyKhC;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA6G7D;;OAEG;IACG,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4G7D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBrC,eAAe,CAAC,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa;IA2B5E,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC/B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0DzC;;OAEG;IACG,4BAA4B,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7E;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC;IAsC/C,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IA0G7C,iBAAiB;IAOjB,oBAAoB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IASnD,cAAc;;;;IA6Bd,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAerC;;;;;;OAMG;IACH,8BAA8B,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAiD5H;;;;;;OAMG;IACH,8BAA8B,CAAC,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;CAyDpG"}