@switchbot/homebridge-switchbot 3.5.0-beta.3 → 3.5.0-beta.31

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 (166) hide show
  1. package/CHANGELOG.md +4 -1
  2. package/config.schema.json +147 -9
  3. package/dist/device/blindtilt.d.ts +21 -94
  4. package/dist/device/blindtilt.d.ts.map +1 -1
  5. package/dist/device/blindtilt.js +347 -756
  6. package/dist/device/blindtilt.js.map +1 -1
  7. package/dist/device/bot.d.ts +25 -71
  8. package/dist/device/bot.d.ts.map +1 -1
  9. package/dist/device/bot.js +582 -759
  10. package/dist/device/bot.js.map +1 -1
  11. package/dist/device/ceilinglight.d.ts +13 -67
  12. package/dist/device/ceilinglight.d.ts.map +1 -1
  13. package/dist/device/ceilinglight.js +209 -587
  14. package/dist/device/ceilinglight.js.map +1 -1
  15. package/dist/device/colorbulb.d.ts +13 -74
  16. package/dist/device/colorbulb.d.ts.map +1 -1
  17. package/dist/device/colorbulb.js +250 -632
  18. package/dist/device/colorbulb.js.map +1 -1
  19. package/dist/device/contact.d.ts +14 -65
  20. package/dist/device/contact.d.ts.map +1 -1
  21. package/dist/device/contact.js +204 -531
  22. package/dist/device/contact.js.map +1 -1
  23. package/dist/device/curtain.d.ts +17 -86
  24. package/dist/device/curtain.d.ts.map +1 -1
  25. package/dist/device/curtain.js +335 -786
  26. package/dist/device/curtain.js.map +1 -1
  27. package/dist/device/device.d.ts +59 -0
  28. package/dist/device/device.d.ts.map +1 -0
  29. package/dist/device/device.js +654 -0
  30. package/dist/device/device.js.map +1 -0
  31. package/dist/device/fan.d.ts +51 -0
  32. package/dist/device/fan.d.ts.map +1 -0
  33. package/dist/device/fan.js +499 -0
  34. package/dist/device/fan.js.map +1 -0
  35. package/dist/device/hub.d.ts +15 -59
  36. package/dist/device/hub.d.ts.map +1 -1
  37. package/dist/device/hub.js +242 -596
  38. package/dist/device/hub.js.map +1 -1
  39. package/dist/device/humidifier.d.ts +10 -65
  40. package/dist/device/humidifier.d.ts.map +1 -1
  41. package/dist/device/humidifier.js +207 -571
  42. package/dist/device/humidifier.js.map +1 -1
  43. package/dist/device/iosensor.d.ts +11 -64
  44. package/dist/device/iosensor.d.ts.map +1 -1
  45. package/dist/device/iosensor.js +174 -584
  46. package/dist/device/iosensor.js.map +1 -1
  47. package/dist/device/lightstrip.d.ts +10 -68
  48. package/dist/device/lightstrip.d.ts.map +1 -1
  49. package/dist/device/lightstrip.js +252 -568
  50. package/dist/device/lightstrip.js.map +1 -1
  51. package/dist/device/lock.d.ts +15 -62
  52. package/dist/device/lock.d.ts.map +1 -1
  53. package/dist/device/lock.js +210 -542
  54. package/dist/device/lock.js.map +1 -1
  55. package/dist/device/meter.d.ts +13 -63
  56. package/dist/device/meter.d.ts.map +1 -1
  57. package/dist/device/meter.js +170 -577
  58. package/dist/device/meter.js.map +1 -1
  59. package/dist/device/meterplus.d.ts +13 -64
  60. package/dist/device/meterplus.d.ts.map +1 -1
  61. package/dist/device/meterplus.js +159 -577
  62. package/dist/device/meterplus.js.map +1 -1
  63. package/dist/device/motion.d.ts +13 -69
  64. package/dist/device/motion.d.ts.map +1 -1
  65. package/dist/device/motion.js +136 -518
  66. package/dist/device/motion.js.map +1 -1
  67. package/dist/device/plug.d.ts +9 -57
  68. package/dist/device/plug.d.ts.map +1 -1
  69. package/dist/device/plug.js +82 -452
  70. package/dist/device/plug.js.map +1 -1
  71. package/dist/device/robotvacuumcleaner.d.ts +11 -62
  72. package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
  73. package/dist/device/robotvacuumcleaner.js +140 -451
  74. package/dist/device/robotvacuumcleaner.js.map +1 -1
  75. package/dist/device/waterdetector.d.ts +9 -70
  76. package/dist/device/waterdetector.d.ts.map +1 -1
  77. package/dist/device/waterdetector.js +121 -664
  78. package/dist/device/waterdetector.js.map +1 -1
  79. package/dist/index.js +1 -1
  80. package/dist/irdevice/airconditioner.d.ts +8 -48
  81. package/dist/irdevice/airconditioner.d.ts.map +1 -1
  82. package/dist/irdevice/airconditioner.js +309 -419
  83. package/dist/irdevice/airconditioner.js.map +1 -1
  84. package/dist/irdevice/airpurifier.d.ts +7 -38
  85. package/dist/irdevice/airpurifier.d.ts.map +1 -1
  86. package/dist/irdevice/airpurifier.js +72 -304
  87. package/dist/irdevice/airpurifier.js.map +1 -1
  88. package/dist/irdevice/camera.d.ts +6 -35
  89. package/dist/irdevice/camera.d.ts.map +1 -1
  90. package/dist/irdevice/camera.js +34 -278
  91. package/dist/irdevice/camera.js.map +1 -1
  92. package/dist/irdevice/fan.d.ts +6 -39
  93. package/dist/irdevice/fan.d.ts.map +1 -1
  94. package/dist/irdevice/fan.js +67 -311
  95. package/dist/irdevice/fan.js.map +1 -1
  96. package/dist/irdevice/irdevice.d.ts +40 -0
  97. package/dist/irdevice/irdevice.d.ts.map +1 -0
  98. package/dist/irdevice/irdevice.js +509 -0
  99. package/dist/irdevice/irdevice.js.map +1 -0
  100. package/dist/irdevice/light.d.ts +6 -34
  101. package/dist/irdevice/light.d.ts.map +1 -1
  102. package/dist/irdevice/light.js +23 -272
  103. package/dist/irdevice/light.js.map +1 -1
  104. package/dist/irdevice/other.d.ts +18 -47
  105. package/dist/irdevice/other.d.ts.map +1 -1
  106. package/dist/irdevice/other.js +352 -546
  107. package/dist/irdevice/other.js.map +1 -1
  108. package/dist/irdevice/tv.d.ts +7 -39
  109. package/dist/irdevice/tv.d.ts.map +1 -1
  110. package/dist/irdevice/tv.js +82 -321
  111. package/dist/irdevice/tv.js.map +1 -1
  112. package/dist/irdevice/vacuumcleaner.d.ts +6 -35
  113. package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
  114. package/dist/irdevice/vacuumcleaner.js +41 -284
  115. package/dist/irdevice/vacuumcleaner.js.map +1 -1
  116. package/dist/irdevice/waterheater.d.ts +6 -35
  117. package/dist/irdevice/waterheater.d.ts.map +1 -1
  118. package/dist/irdevice/waterheater.js +42 -287
  119. package/dist/irdevice/waterheater.js.map +1 -1
  120. package/dist/platform.d.ts +14 -1
  121. package/dist/platform.d.ts.map +1 -1
  122. package/dist/platform.js +237 -94
  123. package/dist/platform.js.map +1 -1
  124. package/dist/settings.d.ts +40 -10
  125. package/dist/settings.d.ts.map +1 -1
  126. package/dist/settings.js +0 -552
  127. package/dist/settings.js.map +1 -1
  128. package/dist/utils.d.ts +77 -0
  129. package/dist/utils.d.ts.map +1 -1
  130. package/dist/utils.js +638 -1
  131. package/dist/utils.js.map +1 -1
  132. package/package.json +16 -15
  133. package/src/custom.d.ts +2 -1
  134. package/src/device/blindtilt.ts +373 -782
  135. package/src/device/bot.ts +616 -844
  136. package/src/device/ceilinglight.ts +222 -607
  137. package/src/device/colorbulb.ts +264 -656
  138. package/src/device/contact.ts +229 -553
  139. package/src/device/curtain.ts +355 -810
  140. package/src/device/device.ts +681 -0
  141. package/src/device/fan.ts +548 -0
  142. package/src/device/hub.ts +268 -623
  143. package/src/device/humidifier.ts +237 -618
  144. package/src/device/iosensor.ts +200 -610
  145. package/src/device/lightstrip.ts +273 -596
  146. package/src/device/lock.ts +247 -582
  147. package/src/device/meter.ts +196 -601
  148. package/src/device/meterplus.ts +184 -602
  149. package/src/device/motion.ts +156 -541
  150. package/src/device/plug.ts +92 -480
  151. package/src/device/robotvacuumcleaner.ts +161 -477
  152. package/src/device/waterdetector.ts +139 -689
  153. package/src/index.ts +1 -1
  154. package/src/irdevice/airconditioner.ts +330 -446
  155. package/src/irdevice/airpurifier.ts +89 -321
  156. package/src/irdevice/camera.ts +42 -293
  157. package/src/irdevice/fan.ts +78 -327
  158. package/src/irdevice/irdevice.ts +526 -0
  159. package/src/irdevice/light.ts +32 -287
  160. package/src/irdevice/other.ts +396 -615
  161. package/src/irdevice/tv.ts +100 -339
  162. package/src/irdevice/vacuumcleaner.ts +49 -305
  163. package/src/irdevice/waterheater.ts +50 -310
  164. package/src/platform.ts +247 -102
  165. package/src/settings.ts +56 -565
  166. package/src/utils.ts +642 -1
package/CHANGELOG.md CHANGED
@@ -2,11 +2,14 @@
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
- ## [3.5.0](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v3.5.0) (2024-04-XX)
5
+ ## [BETA-3.5.0](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v3.5.0) (2024-04-XX)
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`
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)
10
13
  - Housekeeping and updated dependencies.
11
14
 
12
15
  **Full Changelog**: https://github.com/OpenWonderLabs/homebridge-switchbot/compare/v3.4.0...v3.5.0
@@ -149,6 +149,12 @@
149
149
  "WoIOSensor"
150
150
  ]
151
151
  },
152
+ {
153
+ "title": "Water Detector",
154
+ "enum": [
155
+ "Water Detector"
156
+ ]
157
+ },
152
158
  {
153
159
  "title": "Meter",
154
160
  "enum": [
@@ -302,9 +308,30 @@
302
308
  "title": "Hide Hub 2's Temperature Sensor",
303
309
  "type": "boolean",
304
310
  "condition": {
305
- "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);"
306
312
  }
307
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
+ },
308
335
  "hide_humidity": {
309
336
  "title": "Hide Hub 2's Humidity Sensor",
310
337
  "type": "boolean",
@@ -472,14 +499,87 @@
472
499
  "title": "Hide Meter's Temperature Sensor",
473
500
  "type": "boolean",
474
501
  "condition": {
475
- "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);"
476
503
  }
477
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
+ },
478
526
  "hide_humidity": {
479
527
  "title": "Hide Meter's Humidity Sensor",
480
528
  "type": "boolean",
481
529
  "condition": {
482
- "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);"
571
+ }
572
+ }
573
+ }
574
+ },
575
+ "waterdetector": {
576
+ "type": "object",
577
+ "properties": {
578
+ "hide_leak": {
579
+ "title": "Hide Water Detector's Leak Sensor",
580
+ "type": "boolean",
581
+ "condition": {
582
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Water Detector' && model.options.devices[arrayIndices].deviceId);"
483
583
  }
484
584
  }
485
585
  }
@@ -840,6 +940,22 @@
840
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'));"
841
941
  }
842
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
+ },
843
959
  "maxRetry": {
844
960
  "title": "Max Retries for BLE",
845
961
  "type": "number",
@@ -853,28 +969,28 @@
853
969
  "type": "string",
854
970
  "placeholder": "192.168.7.1",
855
971
  "condition": {
856
- "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 === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
972
+ "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 === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
857
973
  }
858
974
  },
859
975
  "mqttOptions": {
860
976
  "title": "MQTT Options",
861
977
  "type": "string",
862
978
  "condition": {
863
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mqttURL && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
979
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mqttURL && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
864
980
  }
865
981
  },
866
982
  "mqttPubOptions": {
867
983
  "title": "MQTT Pub Options",
868
984
  "type": "string",
869
985
  "condition": {
870
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mqttURL && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
986
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mqttURL && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
871
987
  }
872
988
  },
873
989
  "history": {
874
990
  "title": "EVE History",
875
991
  "type": "boolean",
876
992
  "condition": {
877
- "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 === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
993
+ "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 === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
878
994
  }
879
995
  },
880
996
  "firmware": {
@@ -1521,6 +1637,16 @@
1521
1637
  "type": "string",
1522
1638
  "placeholder": "http://${FQDN}:${PORT}/${PATH}"
1523
1639
  },
1640
+ "maxRetries": {
1641
+ "title": "Max Retries for OpenAPI",
1642
+ "type": "number",
1643
+ "placeholder": 5
1644
+ },
1645
+ "delayBetweenRetries": {
1646
+ "title": "Delay Between Retries for OpenAPI (In Seconds)",
1647
+ "type": "number",
1648
+ "placeholder": 3
1649
+ },
1524
1650
  "refreshRate": {
1525
1651
  "title": "Refresh Rate",
1526
1652
  "type": "number",
@@ -1597,7 +1723,8 @@
1597
1723
  "title": "{{ value.configDeviceName || value.deviceId || 'New SwitchBot Device' }}",
1598
1724
  "expandable": true,
1599
1725
  "expanded": false,
1600
- "orderable": false,
1726
+ "draggable": true,
1727
+ "orderable": true,
1601
1728
  "items": [
1602
1729
  "options.devices[].configDeviceName",
1603
1730
  "options.devices[].deviceId",
@@ -1606,10 +1733,13 @@
1606
1733
  "options.devices[].connectionType",
1607
1734
  "options.devices[].webhook",
1608
1735
  "options.devices[].hub.hide_temperature",
1736
+ "options.devices[].hub.convertUnitTo",
1609
1737
  "options.devices[].hub.hide_humidity",
1610
1738
  "options.devices[].hub.hide_lightsensor",
1611
1739
  "options.devices[].scanDuration",
1612
1740
  "options.devices[].disableCaching",
1741
+ "options.devices[].maxRetries",
1742
+ "options.devices[].delayBetweenRetries",
1613
1743
  "options.devices[].maxRetry",
1614
1744
  "options.devices[].bot.mode",
1615
1745
  "options.devices[].bot.deviceType",
@@ -1617,7 +1747,12 @@
1617
1747
  "options.devices[].bot.doublePress",
1618
1748
  "options.devices[].bot.pushRatePress",
1619
1749
  "options.devices[].meter.hide_temperature",
1750
+ "options.devices[].meter.convertUnitTo",
1620
1751
  "options.devices[].meter.hide_humidity",
1752
+ "options.devices[].iosensor.hide_temperature",
1753
+ "options.devices[].iosensor.convertUnitTo",
1754
+ "options.devices[].iosensor.hide_humidity",
1755
+ "options.devices[].waterdetector.hide_leak",
1621
1756
  "options.devices[].humidifier.set_minStep",
1622
1757
  "options.devices[].humidifier.hide_temperature",
1623
1758
  "options.devices[].curtain.set_minStep",
@@ -1675,7 +1810,8 @@
1675
1810
  "title": "{{ value.configDeviceName || value.deviceId || 'New IR Device' }}",
1676
1811
  "expandable": true,
1677
1812
  "expanded": false,
1678
- "orderable": false,
1813
+ "draggable": true,
1814
+ "orderable": true,
1679
1815
  "items": [
1680
1816
  "options.irdevices[].configDeviceName",
1681
1817
  "options.irdevices[].deviceId",
@@ -1717,6 +1853,8 @@
1717
1853
  "expanded": false,
1718
1854
  "items": [
1719
1855
  "options.webhookURL",
1856
+ "options.maxRetries",
1857
+ "options.delayBetweenRetries",
1720
1858
  {
1721
1859
  "type": "help",
1722
1860
  "helpvalue": "<h5>Refresh Rate</h5><em class='primary-text'>Refresh Rate indicates the number of seconds between polls of SwitchBot API.</em>"
@@ -1,89 +1,34 @@
1
1
  /// <reference types="node" />
2
- import { MqttClient } from 'mqtt';
2
+ import { BlindTiltMappingMode } from '../utils.js';
3
3
  import { Subject } from 'rxjs';
4
+ import { deviceBase } from './device.js';
4
5
  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;
6
+ import { PlatformAccessory, CharacteristicValue } from 'homebridge';
7
+ import { 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>;
77
30
  pushChanges(): Promise<void>;
78
31
  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
32
  openAPIpushChanges(): Promise<void>;
88
33
  /**
89
34
  * Handle requests to set the value of the "Target Horizontal Tilt" characteristic
@@ -95,22 +40,18 @@ export declare class BlindTilt {
95
40
  TargetPositionSet(value: CharacteristicValue): Promise<void>;
96
41
  startUpdatingBlindTiltIfNeeded(): Promise<void>;
97
42
  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
43
  BLEPushConnection(): Promise<void>;
103
44
  BLERefreshConnection(switchbot: any): Promise<void>;
104
- SilentPerformance(): Promise<void>;
45
+ setPerformance(): Promise<{
46
+ setPositionMode: number;
47
+ Mode: string;
48
+ }>;
105
49
  setMinMax(): Promise<void>;
106
50
  minStep(device: device & devicesConfig): number;
107
- minLux(): number;
108
- maxLux(): number;
109
- scan(device: device & devicesConfig): Promise<void>;
110
- statusCode(statusCode: number): Promise<void>;
51
+ minLux(): Promise<number>;
52
+ maxLux(): Promise<number>;
111
53
  offlineOff(): Promise<void>;
112
54
  apiError(e: any): Promise<void>;
113
- deviceContext(): Promise<void>;
114
55
  /**
115
56
  * Maps device values to homekit values
116
57
  *
@@ -127,19 +68,5 @@ export declare class BlindTilt {
127
68
  * @returns [device position, device direction]
128
69
  */
129
70
  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
71
  }
144
- export {};
145
72
  //# 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":";AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAY,OAAO,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAW,MAAM,gBAAgB,CAAC;AAG3F,qBAAa,SAAU,SAAQ,UAAU;IAkCrC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IAhCtC,OAAO,CAAC,cAAc,CAOpB;IAEF,OAAO,CAAC,OAAO,CAIb;IAEF,OAAO,CAAC,WAAW,CAAC,CAGlB;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;IA6KhC;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAmH7D;;OAEG;IACG,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAsG7D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCjC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BrC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB5B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAiD/B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqEzC;;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;IA4C/C,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAkG7C,iBAAiB;IAOjB,oBAAoB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IASnD,cAAc;;;;IA6Bd,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBhC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM;IAUzC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAUzB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAUzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrC;;;;;;OAMG;IACH,8BAA8B,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAgD5H;;;;;;OAMG;IACH,8BAA8B,CAAC,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;CAyDpG"}