@switchbot/homebridge-switchbot 4.3.3 → 4.3.5

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 (137) hide show
  1. package/.github/workflows/release.yml +14 -2
  2. package/CHANGELOG.md +142 -707
  3. package/README.md +10 -0
  4. package/config.schema.json +480 -2
  5. package/dist/device/blindtilt.d.ts +1 -1
  6. package/dist/device/blindtilt.d.ts.map +1 -1
  7. package/dist/device/blindtilt.js.map +1 -1
  8. package/dist/device/bot.d.ts +1 -1
  9. package/dist/device/bot.d.ts.map +1 -1
  10. package/dist/device/bot.js.map +1 -1
  11. package/dist/device/ceilinglight.d.ts +1 -1
  12. package/dist/device/ceilinglight.d.ts.map +1 -1
  13. package/dist/device/ceilinglight.js.map +1 -1
  14. package/dist/device/colorbulb.d.ts +1 -1
  15. package/dist/device/colorbulb.d.ts.map +1 -1
  16. package/dist/device/colorbulb.js.map +1 -1
  17. package/dist/device/contact.d.ts +1 -1
  18. package/dist/device/contact.d.ts.map +1 -1
  19. package/dist/device/contact.js.map +1 -1
  20. package/dist/device/curtain.d.ts +1 -1
  21. package/dist/device/curtain.d.ts.map +1 -1
  22. package/dist/device/curtain.js.map +1 -1
  23. package/dist/device/device.d.ts +1 -1
  24. package/dist/device/device.d.ts.map +1 -1
  25. package/dist/device/device.js +12 -0
  26. package/dist/device/device.js.map +1 -1
  27. package/dist/device/fan.d.ts +1 -1
  28. package/dist/device/fan.d.ts.map +1 -1
  29. package/dist/device/fan.js.map +1 -1
  30. package/dist/device/hub.d.ts +1 -1
  31. package/dist/device/hub.d.ts.map +1 -1
  32. package/dist/device/hub.js.map +1 -1
  33. package/dist/device/humidifier.d.ts +1 -1
  34. package/dist/device/humidifier.d.ts.map +1 -1
  35. package/dist/device/humidifier.js.map +1 -1
  36. package/dist/device/iosensor.d.ts +1 -1
  37. package/dist/device/iosensor.d.ts.map +1 -1
  38. package/dist/device/iosensor.js.map +1 -1
  39. package/dist/device/lightstrip.d.ts +1 -1
  40. package/dist/device/lightstrip.d.ts.map +1 -1
  41. package/dist/device/lightstrip.js.map +1 -1
  42. package/dist/device/lock.d.ts +4 -4
  43. package/dist/device/lock.d.ts.map +1 -1
  44. package/dist/device/lock.js +4 -4
  45. package/dist/device/lock.js.map +1 -1
  46. package/dist/device/meter.d.ts +1 -1
  47. package/dist/device/meter.d.ts.map +1 -1
  48. package/dist/device/meter.js.map +1 -1
  49. package/dist/device/meterplus.d.ts +1 -1
  50. package/dist/device/meterplus.d.ts.map +1 -1
  51. package/dist/device/meterplus.js.map +1 -1
  52. package/dist/device/meterpro.d.ts +1 -1
  53. package/dist/device/meterpro.d.ts.map +1 -1
  54. package/dist/device/meterpro.js.map +1 -1
  55. package/dist/device/motion.d.ts +1 -1
  56. package/dist/device/motion.d.ts.map +1 -1
  57. package/dist/device/motion.js.map +1 -1
  58. package/dist/device/plug.d.ts +1 -1
  59. package/dist/device/plug.d.ts.map +1 -1
  60. package/dist/device/plug.js.map +1 -1
  61. package/dist/device/presence.d.ts +1 -1
  62. package/dist/device/presence.d.ts.map +1 -1
  63. package/dist/device/presence.js.map +1 -1
  64. package/dist/device/relayswitch.d.ts +1 -1
  65. package/dist/device/relayswitch.d.ts.map +1 -1
  66. package/dist/device/relayswitch.js.map +1 -1
  67. package/dist/device/robotvacuumcleaner.d.ts +1 -1
  68. package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
  69. package/dist/device/robotvacuumcleaner.js.map +1 -1
  70. package/dist/device/waterdetector.d.ts +1 -1
  71. package/dist/device/waterdetector.d.ts.map +1 -1
  72. package/dist/device/waterdetector.js.map +1 -1
  73. package/dist/irdevice/airconditioner.d.ts.map +1 -1
  74. package/dist/irdevice/airconditioner.js.map +1 -1
  75. package/dist/irdevice/airpurifier.d.ts.map +1 -1
  76. package/dist/irdevice/airpurifier.js.map +1 -1
  77. package/dist/irdevice/camera.d.ts.map +1 -1
  78. package/dist/irdevice/camera.js.map +1 -1
  79. package/dist/irdevice/fan.d.ts.map +1 -1
  80. package/dist/irdevice/fan.js.map +1 -1
  81. package/dist/irdevice/light.d.ts.map +1 -1
  82. package/dist/irdevice/light.js.map +1 -1
  83. package/dist/irdevice/other.d.ts.map +1 -1
  84. package/dist/irdevice/other.js.map +1 -1
  85. package/dist/irdevice/tv.d.ts.map +1 -1
  86. package/dist/irdevice/tv.js.map +1 -1
  87. package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
  88. package/dist/irdevice/vacuumcleaner.js.map +1 -1
  89. package/dist/irdevice/waterheater.d.ts.map +1 -1
  90. package/dist/irdevice/waterheater.js.map +1 -1
  91. package/dist/platform.d.ts.map +1 -1
  92. package/dist/platform.js +4 -2
  93. package/dist/platform.js.map +1 -1
  94. package/dist/settings.d.ts +1 -1
  95. package/dist/settings.d.ts.map +1 -1
  96. package/docs/assets/highlight.css +14 -0
  97. package/docs/assets/icons.js +1 -1
  98. package/docs/assets/icons.svg +1 -1
  99. package/docs/assets/main.js +2 -2
  100. package/docs/assets/style.css +3 -3
  101. package/docs/index.html +41 -13
  102. package/docs/variables/default.html +1 -1
  103. package/eslint.config.js +1 -5
  104. package/package.json +15 -21
  105. package/src/device/blindtilt.ts +2 -4
  106. package/src/device/bot.ts +2 -4
  107. package/src/device/ceilinglight.ts +2 -4
  108. package/src/device/colorbulb.ts +2 -4
  109. package/src/device/contact.ts +2 -4
  110. package/src/device/curtain.ts +6 -8
  111. package/src/device/device.ts +19 -9
  112. package/src/device/fan.ts +2 -4
  113. package/src/device/hub.ts +3 -5
  114. package/src/device/humidifier.ts +2 -4
  115. package/src/device/iosensor.ts +3 -5
  116. package/src/device/lightstrip.ts +2 -4
  117. package/src/device/lock.ts +12 -14
  118. package/src/device/meter.ts +3 -5
  119. package/src/device/meterplus.ts +3 -5
  120. package/src/device/meterpro.ts +3 -5
  121. package/src/device/motion.ts +2 -4
  122. package/src/device/plug.ts +2 -4
  123. package/src/device/presence.ts +2 -4
  124. package/src/device/relayswitch.ts +2 -4
  125. package/src/device/robotvacuumcleaner.ts +2 -4
  126. package/src/device/waterdetector.ts +2 -4
  127. package/src/irdevice/airconditioner.ts +0 -1
  128. package/src/irdevice/airpurifier.ts +0 -1
  129. package/src/irdevice/camera.ts +0 -1
  130. package/src/irdevice/fan.ts +0 -1
  131. package/src/irdevice/light.ts +0 -1
  132. package/src/irdevice/other.ts +0 -1
  133. package/src/irdevice/tv.ts +0 -1
  134. package/src/irdevice/vacuumcleaner.ts +0 -1
  135. package/src/irdevice/waterheater.ts +0 -1
  136. package/src/platform.ts +4 -2
  137. package/src/settings.ts +1 -1
package/README.md CHANGED
@@ -224,6 +224,16 @@
224
224
  - [OpenWonderLabs/SwitchBotAPI](https://github.com/OpenWonderLabs/SwitchBotAPI)
225
225
  - [OpenWonderLabs/SwitchBotAPI-BLE](https://github.com/OpenWonderLabs/SwitchBotAPI-BLE)
226
226
 
227
+ ## Development / Tests
228
+
229
+ - Run unit tests:
230
+ ```bash
231
+ npm run test
232
+ ```
233
+
234
+ - Notes:
235
+ - Added Lock Ultra (Cloud + BLE) support (requires `node-switchbot` v3.6.3).
236
+
227
237
  ## Community
228
238
 
229
239
  - [SwitchBot (Official website)](https://www.switch-bot.com/)
@@ -312,6 +312,30 @@
312
312
  "Smart Lock Pro"
313
313
  ]
314
314
  },
315
+ {
316
+ "title": "Smart Lock Ultra",
317
+ "enum": [
318
+ "Smart Lock Ultra"
319
+ ]
320
+ },
321
+ {
322
+ "title": "Lock Ultra",
323
+ "enum": [
324
+ "Lock Ultra"
325
+ ]
326
+ },
327
+ {
328
+ "title": "Smart Lock Ultra",
329
+ "enum": [
330
+ "Smart Lock Ultra"
331
+ ]
332
+ },
333
+ {
334
+ "title": "Lock Ultra",
335
+ "enum": [
336
+ "Lock Ultra"
337
+ ]
338
+ },
315
339
  {
316
340
  "title": "Strip Light",
317
341
  "enum": [
@@ -626,7 +650,7 @@
626
650
  "title": "Hide Lock's Contact Sensor",
627
651
  "type": "boolean",
628
652
  "condition": {
629
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Smart Lock' || model.options.devices[arrayIndices].configDeviceType === 'Smart Lock Pro') && model.options.devices[arrayIndices].deviceId);"
653
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Smart Lock' || model.options.devices[arrayIndices].configDeviceType === 'Smart Lock Pro' || model.options.devices[arrayIndices].configDeviceType === 'Smart Lock Ultra' || model.options.devices[arrayIndices].configDeviceType === 'Lock Ultra') && model.options.devices[arrayIndices].deviceId);"
630
654
  }
631
655
  },
632
656
  "hide_leak": {
@@ -6447,7 +6471,7 @@
6447
6471
  "title": "Hide Lock's Contact Sensor",
6448
6472
  "type": "boolean",
6449
6473
  "condition": {
6450
- "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Smart Lock'].hide_device && (model.options.deviceConfig['Smart Lock'].configDeviceType === 'Smart Lock' || model.options.deviceConfig['Smart Lock'].configDeviceType === 'Smart Lock Pro') && model.options.deviceConfig['Smart Lock'].deviceId);"
6474
+ "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Smart Lock'].hide_device && (model.options.deviceConfig['Smart Lock'].configDeviceType === 'Smart Lock' || model.options.deviceConfig['Smart Lock'].configDeviceType === 'Smart Lock Pro' ) && model.options.deviceConfig['Smart Lock'].deviceId);"
6451
6475
  }
6452
6476
  },
6453
6477
  "activate_latchbutton": {
@@ -6835,6 +6859,406 @@
6835
6859
  }
6836
6860
  }
6837
6861
  },
6862
+ "Smart Lock Ultra": {
6863
+ "type": "object",
6864
+ "properties": {
6865
+ "hide_device": {
6866
+ "title": "Hide All Smart Lock Ultras",
6867
+ "type": "boolean",
6868
+ "description": "If true, device will be removed or hidden from HomeKit."
6869
+ },
6870
+ "hide_contactsensor": {
6871
+ "title": "Hide Lock's Contact Sensor",
6872
+ "type": "boolean",
6873
+ "condition": {
6874
+ "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Smart Lock Ultra'].hide_device && (model.options.deviceConfig['Smart Lock Ultra'].configDeviceType === 'Smart Lock' || model.options.deviceConfig['Smart Lock Ultra'].configDeviceType === 'Smart Lock Pro' || model.options.deviceConfig['Smart Lock Ultra'].configDeviceType === 'Smart Lock Ultra' || model.options.deviceConfig['Smart Lock Ultra'].configDeviceType === 'Lock Ultra') && model.options.deviceConfig['Smart Lock Ultra'].deviceId);"
6875
+ }
6876
+ },
6877
+ "activate_latchbutton": {
6878
+ "title": "Activate Latch Button",
6879
+ "type": "boolean",
6880
+ "condition": {
6881
+ "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Smart Lock Ultra'].hide_device && (model.options.deviceConfig['Smart Lock Ultra'].configDeviceType === 'Smart Lock' || model.options.deviceConfig['Smart Lock Ultra'].configDeviceType === 'Smart Lock Pro' || model.options.deviceConfig['Smart Lock Ultra'].configDeviceType === 'Smart Lock Ultra' || model.options.deviceConfig['Smart Lock Ultra'].configDeviceType === 'Lock Ultra') && model.options.deviceConfig['Smart Lock Ultra'].deviceId);"
6882
+ }
6883
+ },
6884
+ "connectionType": {
6885
+ "title": "Connection Type",
6886
+ "type": "string",
6887
+ "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
6888
+ "condition": {
6889
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Ultra'] && !model.options.deviceConfig['Smart Lock Ultra'].hide_device);"
6890
+ },
6891
+ "oneOf": [
6892
+ {
6893
+ "title": "BLE",
6894
+ "enum": [
6895
+ "BLE"
6896
+ ]
6897
+ },
6898
+ {
6899
+ "title": "BLE/OpenAPI",
6900
+ "enum": [
6901
+ "BLE/OpenAPI"
6902
+ ]
6903
+ },
6904
+ {
6905
+ "title": "Disabled",
6906
+ "enum": [
6907
+ "Disabled"
6908
+ ]
6909
+ },
6910
+ {
6911
+ "title": "OpenAPI",
6912
+ "enum": [
6913
+ "OpenAPI"
6914
+ ]
6915
+ }
6916
+ ]
6917
+ },
6918
+ "disablePlatformBLE": {
6919
+ "title": "Disable Platform BLE",
6920
+ "type": "boolean",
6921
+ "condition": {
6922
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Ultra'] && !model.options.deviceConfig['Smart Lock Ultra'].hide_device && model.options.deviceConfig['Smart Lock Ultra'].connectionType !== 'Disabled');"
6923
+ }
6924
+ },
6925
+ "scanDuration": {
6926
+ "title": "Scan Duration (Default is 1 Second) for BLE",
6927
+ "type": "number",
6928
+ "placeholder": 1,
6929
+ "condition": {
6930
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Ultra'] && !model.options.deviceConfig['Smart Lock Ultra'].hide_device && (model.options.deviceConfig['Smart Lock Ultra'].connectionType === 'BLE' || model.options.deviceConfig['Smart Lock Ultra'].connectionType === 'BLE/OpenAPI'));"
6931
+ }
6932
+ },
6933
+ "webhook": {
6934
+ "title": "Enable Webhook for all Smart Lock Ultras",
6935
+ "type": "boolean",
6936
+ "condition": {
6937
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Ultra'] && !model.options.deviceConfig['Smart Lock Ultra'].hide_device && (model.options.deviceConfig['Smart Lock Ultra'].connectionType === 'OpenAPI' || model.options.deviceConfig['Smart Lock Ultra'].connectionType === 'BLE/OpenAPI'));"
6938
+ }
6939
+ },
6940
+ "external": {
6941
+ "title": "External Accessory",
6942
+ "type": "boolean",
6943
+ "condition": {
6944
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Ultra'] && !model.options.deviceConfig['Smart Lock Ultra'].hide_device);"
6945
+ }
6946
+ },
6947
+ "maxRetry": {
6948
+ "title": "Max Retries for BLE",
6949
+ "type": "number",
6950
+ "placeholder": "5",
6951
+ "condition": {
6952
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Ultra'] && !model.options.deviceConfig['Smart Lock Ultra'].hide_device && (model.options.deviceConfig['Smart Lock Ultra'].connectionType === 'BLE' || model.options.deviceConfig['Smart Lock Ultra'].connectionType === 'BLE/OpenAPI'));"
6953
+ }
6954
+ },
6955
+ "maxRetries": {
6956
+ "title": "Device Max Retries for OpenAPI",
6957
+ "type": "number",
6958
+ "placeholder": 5,
6959
+ "condition": {
6960
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Ultra'] && !model.options.deviceConfig['Smart Lock Ultra'].hide_device && (model.options.deviceConfig['Smart Lock Ultra'].connectionType === 'OpenAPI' || model.options.deviceConfig['Smart Lock Ultra'].connectionType === 'BLE/OpenAPI'));"
6961
+ }
6962
+ },
6963
+ "delayBetweenRetries": {
6964
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
6965
+ "type": "number",
6966
+ "placeholder": 3,
6967
+ "condition": {
6968
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Ultra'] && !model.options.deviceConfig['Smart Lock Ultra'].hide_device && (model.options.deviceConfig['Smart Lock Ultra'].connectionType === 'OpenAPI' || model.options.deviceConfig['Smart Lock Ultra'].connectionType === 'BLE/OpenAPI'));"
6969
+ }
6970
+ },
6971
+ "disableCaching": {
6972
+ "title": "Disable Caching",
6973
+ "type": "boolean",
6974
+ "condition": {
6975
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Ultra'] && !model.options.deviceConfig['Smart Lock Ultra'].hide_device);"
6976
+ }
6977
+ },
6978
+ "offline": {
6979
+ "title": "Offline as Off",
6980
+ "type": "boolean",
6981
+ "condition": {
6982
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Ultra'].hide_device);"
6983
+ }
6984
+ },
6985
+ "history": {
6986
+ "title": "EVE History",
6987
+ "type": "boolean",
6988
+ "condition": {
6989
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Ultra'].hide_device);"
6990
+ }
6991
+ },
6992
+ "firmware": {
6993
+ "title": "Firmware Override",
6994
+ "type": "string",
6995
+ "placeholder": "1.2.8",
6996
+ "condition": {
6997
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Ultra'].hide_device);"
6998
+ }
6999
+ },
7000
+ "logging": {
7001
+ "title": "Logging by Device Type",
7002
+ "type": "string",
7003
+ "default": "",
7004
+ "condition": {
7005
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Ultra'].hide_device);"
7006
+ },
7007
+ "oneOf": [
7008
+ {
7009
+ "title": "Debug Logging",
7010
+ "enum": [
7011
+ "debug"
7012
+ ]
7013
+ },
7014
+ {
7015
+ "title": "Default Logging",
7016
+ "enum": [
7017
+ ""
7018
+ ]
7019
+ },
7020
+ {
7021
+ "title": "No Logging",
7022
+ "enum": [
7023
+ "none"
7024
+ ]
7025
+ },
7026
+ {
7027
+ "title": "Standard Logging",
7028
+ "enum": [
7029
+ "standard"
7030
+ ]
7031
+ }
7032
+ ]
7033
+ },
7034
+ "refreshRate": {
7035
+ "title": "Device Refresh Rate",
7036
+ "type": "number",
7037
+ "placeholder": 5,
7038
+ "condition": {
7039
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Ultra'].hide_device);"
7040
+ }
7041
+ },
7042
+ "updateRate": {
7043
+ "title": "Update Rate",
7044
+ "type": "number",
7045
+ "minimum": 1,
7046
+ "placeholder": 5,
7047
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
7048
+ "condition": {
7049
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Ultra'].hide_device);"
7050
+ }
7051
+ },
7052
+ "pushRate": {
7053
+ "title": "Device Push Rate",
7054
+ "type": "number",
7055
+ "placeholder": 360,
7056
+ "condition": {
7057
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Ultra'].hide_device);"
7058
+ }
7059
+ }
7060
+ }
7061
+ },
7062
+ "Lock Ultra": {
7063
+ "type": "object",
7064
+ "properties": {
7065
+ "hide_device": {
7066
+ "title": "Hide All Lock Ultras",
7067
+ "type": "boolean",
7068
+ "description": "If true, device will be removed or hidden from HomeKit."
7069
+ },
7070
+ "hide_contactsensor": {
7071
+ "title": "Hide Lock's Contact Sensor",
7072
+ "type": "boolean",
7073
+ "condition": {
7074
+ "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Lock Ultra'].hide_device && (model.options.deviceConfig['Lock Ultra'].configDeviceType === 'Smart Lock' || model.options.deviceConfig['Lock Ultra'].configDeviceType === 'Smart Lock Pro' || model.options.deviceConfig['Lock Ultra'].configDeviceType === 'Smart Lock Ultra' || model.options.deviceConfig['Lock Ultra'].configDeviceType === 'Lock Ultra') && model.options.deviceConfig['Lock Ultra'].deviceId);"
7075
+ }
7076
+ },
7077
+ "activate_latchbutton": {
7078
+ "title": "Activate Latch Button",
7079
+ "type": "boolean",
7080
+ "condition": {
7081
+ "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Lock Ultra'].hide_device && (model.options.deviceConfig['Lock Ultra'].configDeviceType === 'Smart Lock' || model.options.deviceConfig['Lock Ultra'].configDeviceType === 'Smart Lock Pro' || model.options.deviceConfig['Lock Ultra'].configDeviceType === 'Smart Lock Ultra' || model.options.deviceConfig['Lock Ultra'].configDeviceType === 'Lock Ultra') && model.options.deviceConfig['Lock Ultra'].deviceId);"
7082
+ }
7083
+ },
7084
+ "connectionType": {
7085
+ "title": "Connection Type",
7086
+ "type": "string",
7087
+ "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
7088
+ "condition": {
7089
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Lock Ultra'] && !model.options.deviceConfig['Lock Ultra'].hide_device);"
7090
+ },
7091
+ "oneOf": [
7092
+ {
7093
+ "title": "BLE",
7094
+ "enum": [
7095
+ "BLE"
7096
+ ]
7097
+ },
7098
+ {
7099
+ "title": "BLE/OpenAPI",
7100
+ "enum": [
7101
+ "BLE/OpenAPI"
7102
+ ]
7103
+ },
7104
+ {
7105
+ "title": "Disabled",
7106
+ "enum": [
7107
+ "Disabled"
7108
+ ]
7109
+ },
7110
+ {
7111
+ "title": "OpenAPI",
7112
+ "enum": [
7113
+ "OpenAPI"
7114
+ ]
7115
+ }
7116
+ ]
7117
+ },
7118
+ "disablePlatformBLE": {
7119
+ "title": "Disable Platform BLE",
7120
+ "type": "boolean",
7121
+ "condition": {
7122
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Lock Ultra'] && !model.options.deviceConfig['Lock Ultra'].hide_device && model.options.deviceConfig['Lock Ultra'].connectionType !== 'Disabled');"
7123
+ }
7124
+ },
7125
+ "scanDuration": {
7126
+ "title": "Scan Duration (Default is 1 Second) for BLE",
7127
+ "type": "number",
7128
+ "placeholder": 1,
7129
+ "condition": {
7130
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Lock Ultra'] && !model.options.deviceConfig['Lock Ultra'].hide_device && (model.options.deviceConfig['Lock Ultra'].connectionType === 'BLE' || model.options.deviceConfig['Lock Ultra'].connectionType === 'BLE/OpenAPI'));"
7131
+ }
7132
+ },
7133
+ "webhook": {
7134
+ "title": "Enable Webhook for all Lock Ultras",
7135
+ "type": "boolean",
7136
+ "condition": {
7137
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Lock Ultra'] && !model.options.deviceConfig['Lock Ultra'].hide_device && (model.options.deviceConfig['Lock Ultra'].connectionType === 'OpenAPI' || model.options.deviceConfig['Lock Ultra'].connectionType === 'BLE/OpenAPI'));"
7138
+ }
7139
+ },
7140
+ "external": {
7141
+ "title": "External Accessory",
7142
+ "type": "boolean",
7143
+ "condition": {
7144
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Lock Ultra'] && !model.options.deviceConfig['Lock Ultra'].hide_device);"
7145
+ }
7146
+ },
7147
+ "maxRetry": {
7148
+ "title": "Max Retries for BLE",
7149
+ "type": "number",
7150
+ "placeholder": "5",
7151
+ "condition": {
7152
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Lock Ultra'] && !model.options.deviceConfig['Lock Ultra'].hide_device && (model.options.deviceConfig['Lock Ultra'].connectionType === 'BLE' || model.options.deviceConfig['Lock Ultra'].connectionType === 'BLE/OpenAPI'));"
7153
+ }
7154
+ },
7155
+ "maxRetries": {
7156
+ "title": "Device Max Retries for OpenAPI",
7157
+ "type": "number",
7158
+ "placeholder": 5,
7159
+ "condition": {
7160
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Lock Ultra'] && !model.options.deviceConfig['Lock Ultra'].hide_device && (model.options.deviceConfig['Lock Ultra'].connectionType === 'OpenAPI' || model.options.deviceConfig['Lock Ultra'].connectionType === 'BLE/OpenAPI'));"
7161
+ }
7162
+ },
7163
+ "delayBetweenRetries": {
7164
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
7165
+ "type": "number",
7166
+ "placeholder": 3,
7167
+ "condition": {
7168
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Lock Ultra'] && !model.options.deviceConfig['Lock Ultra'].hide_device && (model.options.deviceConfig['Lock Ultra'].connectionType === 'OpenAPI' || model.options.deviceConfig['Lock Ultra'].connectionType === 'BLE/OpenAPI'));"
7169
+ }
7170
+ },
7171
+ "disableCaching": {
7172
+ "title": "Disable Caching",
7173
+ "type": "boolean",
7174
+ "condition": {
7175
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Lock Ultra'] && !model.options.deviceConfig['Lock Ultra'].hide_device);"
7176
+ }
7177
+ },
7178
+ "offline": {
7179
+ "title": "Offline as Off",
7180
+ "type": "boolean",
7181
+ "condition": {
7182
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Lock Ultra'].hide_device);"
7183
+ }
7184
+ },
7185
+ "history": {
7186
+ "title": "EVE History",
7187
+ "type": "boolean",
7188
+ "condition": {
7189
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Lock Ultra'].hide_device);"
7190
+ }
7191
+ },
7192
+ "firmware": {
7193
+ "title": "Firmware Override",
7194
+ "type": "string",
7195
+ "placeholder": "1.2.8",
7196
+ "condition": {
7197
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Lock Ultra'].hide_device);"
7198
+ }
7199
+ },
7200
+ "logging": {
7201
+ "title": "Logging by Device Type",
7202
+ "type": "string",
7203
+ "default": "",
7204
+ "condition": {
7205
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Lock Ultra'].hide_device);"
7206
+ },
7207
+ "oneOf": [
7208
+ {
7209
+ "title": "Debug Logging",
7210
+ "enum": [
7211
+ "debug"
7212
+ ]
7213
+ },
7214
+ {
7215
+ "title": "Default Logging",
7216
+ "enum": [
7217
+ ""
7218
+ ]
7219
+ },
7220
+ {
7221
+ "title": "No Logging",
7222
+ "enum": [
7223
+ "none"
7224
+ ]
7225
+ },
7226
+ {
7227
+ "title": "Standard Logging",
7228
+ "enum": [
7229
+ "standard"
7230
+ ]
7231
+ }
7232
+ ]
7233
+ },
7234
+ "refreshRate": {
7235
+ "title": "Device Refresh Rate",
7236
+ "type": "number",
7237
+ "placeholder": 5,
7238
+ "condition": {
7239
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Lock Ultra'].hide_device);"
7240
+ }
7241
+ },
7242
+ "updateRate": {
7243
+ "title": "Update Rate",
7244
+ "type": "number",
7245
+ "minimum": 1,
7246
+ "placeholder": 5,
7247
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
7248
+ "condition": {
7249
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Lock Ultra'].hide_device);"
7250
+ }
7251
+ },
7252
+ "pushRate": {
7253
+ "title": "Device Push Rate",
7254
+ "type": "number",
7255
+ "placeholder": 360,
7256
+ "condition": {
7257
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Lock Ultra'].hide_device);"
7258
+ }
7259
+ }
7260
+ }
7261
+ },
6838
7262
  "Color Bulb": {
6839
7263
  "type": "object",
6840
7264
  "properties": {
@@ -14143,6 +14567,60 @@
14143
14567
  "options.deviceConfig['Smart Lock Pro'].pushRate"
14144
14568
  ]
14145
14569
  },
14570
+ {
14571
+ "type": "fieldset",
14572
+ "title": "Smart Lock Ultra Settings",
14573
+ "expandable": true,
14574
+ "expanded": false,
14575
+ "items": [
14576
+ "options.deviceConfig['Smart Lock Ultra'].hide_device",
14577
+ "options.deviceConfig['Smart Lock Ultra'].hide_contactsensor",
14578
+ "options.deviceConfig['Smart Lock Ultra'].activate_latchbutton",
14579
+ "options.deviceConfig['Smart Lock Ultra'].connectionType",
14580
+ "options.deviceConfig['Smart Lock Ultra'].disablePlatformBLE",
14581
+ "options.deviceConfig['Smart Lock Ultra'].scanDuration",
14582
+ "options.deviceConfig['Smart Lock Ultra'].webhook",
14583
+ "options.deviceConfig['Smart Lock Ultra'].external",
14584
+ "options.deviceConfig['Smart Lock Ultra'].maxRetry",
14585
+ "options.deviceConfig['Smart Lock Ultra'].maxRetries",
14586
+ "options.deviceConfig['Smart Lock Ultra'].delayBetweenRetries",
14587
+ "options.deviceConfig['Smart Lock Ultra'].disableCaching",
14588
+ "options.deviceConfig['Smart Lock Ultra'].offline",
14589
+ "options.deviceConfig['Smart Lock Ultra'].history",
14590
+ "options.deviceConfig['Smart Lock Ultra'].firmware",
14591
+ "options.deviceConfig['Smart Lock Ultra'].logging",
14592
+ "options.deviceConfig['Smart Lock Ultra'].refreshRate",
14593
+ "options.deviceConfig['Smart Lock Ultra'].updateRate",
14594
+ "options.deviceConfig['Smart Lock Ultra'].pushRate"
14595
+ ]
14596
+ },
14597
+ {
14598
+ "type": "fieldset",
14599
+ "title": "Lock Ultra Settings",
14600
+ "expandable": true,
14601
+ "expanded": false,
14602
+ "items": [
14603
+ "options.deviceConfig['Lock Ultra'].hide_device",
14604
+ "options.deviceConfig['Lock Ultra'].hide_contactsensor",
14605
+ "options.deviceConfig['Lock Ultra'].activate_latchbutton",
14606
+ "options.deviceConfig['Lock Ultra'].connectionType",
14607
+ "options.deviceConfig['Lock Ultra'].disablePlatformBLE",
14608
+ "options.deviceConfig['Lock Ultra'].scanDuration",
14609
+ "options.deviceConfig['Lock Ultra'].webhook",
14610
+ "options.deviceConfig['Lock Ultra'].external",
14611
+ "options.deviceConfig['Lock Ultra'].maxRetry",
14612
+ "options.deviceConfig['Lock Ultra'].maxRetries",
14613
+ "options.deviceConfig['Lock Ultra'].delayBetweenRetries",
14614
+ "options.deviceConfig['Lock Ultra'].disableCaching",
14615
+ "options.deviceConfig['Lock Ultra'].offline",
14616
+ "options.deviceConfig['Lock Ultra'].history",
14617
+ "options.deviceConfig['Lock Ultra'].firmware",
14618
+ "options.deviceConfig['Lock Ultra'].logging",
14619
+ "options.deviceConfig['Lock Ultra'].refreshRate",
14620
+ "options.deviceConfig['Lock Ultra'].updateRate",
14621
+ "options.deviceConfig['Lock Ultra'].pushRate"
14622
+ ]
14623
+ },
14146
14624
  {
14147
14625
  "type": "fieldset",
14148
14626
  "title": "Color Bulb Settings",
@@ -1,8 +1,8 @@
1
1
  import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
2
2
  import type { blindTiltServiceData, blindTiltStatus, blindTiltWebhookContext, device, SwitchBotBLE } from 'node-switchbot';
3
+ import { Subject } from 'rxjs';
3
4
  import type { SwitchBotPlatform } from '../platform.js';
4
5
  import type { devicesConfig } from '../settings.js';
5
- import { Subject } from 'rxjs';
6
6
  import { BlindTiltMappingMode } from '../utils.js';
7
7
  import { deviceBase } from './device.js';
8
8
  export declare class BlindTilt extends deviceBase {
@@ -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":"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"}