@switchbot/homebridge-switchbot 5.0.0-beta.99 → 5.0.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.
- package/.changeset/config.json +14 -0
- package/.github/copilot-instructions.md +39 -0
- package/.github/workflows/ci.yml +4 -1
- package/.github/workflows/manual-e2e.yml +6 -3
- package/.github/workflows/release.yml +64 -15
- package/.github/workflows/stale.yml +2 -4
- package/.husky/pre-push +15 -0
- package/CHANGELOG.md +126 -134
- package/MIGRATION.md +16 -6
- package/README.md +84 -3
- package/TODO.md +263 -0
- package/config.schema.json +229 -36
- package/dist/SwitchBotHAPPlatform.d.ts +133 -0
- package/dist/SwitchBotHAPPlatform.d.ts.map +1 -0
- package/dist/SwitchBotHAPPlatform.js +555 -0
- package/dist/SwitchBotHAPPlatform.js.map +1 -0
- package/dist/SwitchBotMatterPlatform.d.ts +141 -0
- package/dist/SwitchBotMatterPlatform.d.ts.map +1 -0
- package/dist/SwitchBotMatterPlatform.js +536 -0
- package/dist/SwitchBotMatterPlatform.js.map +1 -0
- package/dist/device-types.d.ts +31 -0
- package/dist/device-types.d.ts.map +1 -0
- package/dist/device-types.js +246 -0
- package/dist/device-types.js.map +1 -0
- package/dist/deviceCommandMapper.d.ts +10 -0
- package/dist/deviceCommandMapper.d.ts.map +1 -0
- package/dist/deviceCommandMapper.js +319 -0
- package/dist/deviceCommandMapper.js.map +1 -0
- package/dist/deviceFactory.d.ts +3 -2
- package/dist/deviceFactory.d.ts.map +1 -1
- package/dist/deviceFactory.js +107 -29
- package/dist/deviceFactory.js.map +1 -1
- package/dist/devices/genericDevice.d.ts +59 -37
- package/dist/devices/genericDevice.d.ts.map +1 -1
- package/dist/devices/genericDevice.js +376 -78
- package/dist/devices/genericDevice.js.map +1 -1
- package/dist/errors.d.ts +38 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +32 -0
- package/dist/errors.js.map +1 -0
- package/dist/homebridge-ui/device-types.js +246 -0
- package/dist/homebridge-ui/device-types.js.map +1 -0
- package/dist/homebridge-ui/deviceCommandMapper.js +319 -0
- package/dist/homebridge-ui/deviceCommandMapper.js.map +1 -0
- package/dist/homebridge-ui/endpoints/config.d.ts +3 -0
- package/dist/homebridge-ui/endpoints/config.d.ts.map +1 -0
- package/dist/homebridge-ui/endpoints/config.js +90 -0
- package/dist/homebridge-ui/endpoints/config.js.map +1 -0
- package/dist/homebridge-ui/endpoints/devices.d.ts +6 -0
- package/dist/homebridge-ui/endpoints/devices.d.ts.map +1 -0
- package/dist/homebridge-ui/endpoints/devices.js +144 -0
- package/dist/homebridge-ui/endpoints/devices.js.map +1 -0
- package/dist/homebridge-ui/endpoints/discovery.d.ts +7 -0
- package/dist/homebridge-ui/endpoints/discovery.d.ts.map +1 -0
- package/dist/homebridge-ui/endpoints/discovery.js +219 -0
- package/dist/homebridge-ui/endpoints/discovery.js.map +1 -0
- package/dist/homebridge-ui/errors.js +32 -0
- package/dist/homebridge-ui/errors.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/endpoints/config.js +90 -0
- package/dist/homebridge-ui/homebridge-ui/endpoints/config.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/endpoints/devices.js +144 -0
- package/dist/homebridge-ui/homebridge-ui/endpoints/devices.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/endpoints/discovery.js +219 -0
- package/dist/homebridge-ui/homebridge-ui/endpoints/discovery.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/server.js +11 -0
- package/dist/homebridge-ui/homebridge-ui/server.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/utils/config-parser.js +108 -0
- package/dist/homebridge-ui/homebridge-ui/utils/config-parser.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/utils/device-migration.js +111 -0
- package/dist/homebridge-ui/homebridge-ui/utils/device-migration.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/utils/logger.js +17 -0
- package/dist/homebridge-ui/homebridge-ui/utils/logger.js.map +1 -0
- package/dist/homebridge-ui/public/css/styles.css +483 -0
- package/dist/homebridge-ui/public/index.html +197 -621
- package/dist/homebridge-ui/public/js/advanced-settings.d.ts +3 -0
- package/dist/homebridge-ui/public/js/advanced-settings.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/advanced-settings.js +95 -0
- package/dist/homebridge-ui/public/js/advanced-settings.js.map +1 -0
- package/dist/homebridge-ui/public/js/advanced-settings.ts +94 -0
- package/dist/homebridge-ui/public/js/api.d.ts +66 -0
- package/dist/homebridge-ui/public/js/api.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/api.js +295 -0
- package/dist/homebridge-ui/public/js/api.js.map +1 -0
- package/dist/homebridge-ui/public/js/api.ts +355 -0
- package/dist/homebridge-ui/public/js/app.d.ts +2 -0
- package/dist/homebridge-ui/public/js/app.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/app.js +3722 -0
- package/dist/homebridge-ui/public/js/app.js.map +7 -0
- package/dist/homebridge-ui/public/js/app.ts +22 -0
- package/dist/homebridge-ui/public/js/constants.d.ts +2 -0
- package/dist/homebridge-ui/public/js/constants.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/constants.js +2 -0
- package/dist/homebridge-ui/public/js/constants.js.map +1 -0
- package/dist/homebridge-ui/public/js/constants.ts +1 -0
- package/dist/homebridge-ui/public/js/credentials.d.ts +3 -0
- package/dist/homebridge-ui/public/js/credentials.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/credentials.js +99 -0
- package/dist/homebridge-ui/public/js/credentials.js.map +1 -0
- package/dist/homebridge-ui/public/js/credentials.ts +105 -0
- package/dist/homebridge-ui/public/js/devices-delete.d.ts +3 -0
- package/dist/homebridge-ui/public/js/devices-delete.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/devices-delete.js +199 -0
- package/dist/homebridge-ui/public/js/devices-delete.js.map +1 -0
- package/dist/homebridge-ui/public/js/devices-delete.ts +227 -0
- package/dist/homebridge-ui/public/js/devices.d.ts +9 -0
- package/dist/homebridge-ui/public/js/devices.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/devices.js +98 -0
- package/dist/homebridge-ui/public/js/devices.js.map +1 -0
- package/dist/homebridge-ui/public/js/devices.ts +106 -0
- package/dist/homebridge-ui/public/js/discovery.d.ts +9 -0
- package/dist/homebridge-ui/public/js/discovery.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/discovery.js +1201 -0
- package/dist/homebridge-ui/public/js/discovery.js.map +1 -0
- package/dist/homebridge-ui/public/js/discovery.ts +1335 -0
- package/dist/homebridge-ui/public/js/logger.d.ts +7 -0
- package/dist/homebridge-ui/public/js/logger.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/logger.js +17 -0
- package/dist/homebridge-ui/public/js/logger.js.map +1 -0
- package/dist/homebridge-ui/public/js/logger.ts +17 -0
- package/dist/homebridge-ui/public/js/modal.d.ts +5 -0
- package/dist/homebridge-ui/public/js/modal.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/modal.js +35 -0
- package/dist/homebridge-ui/public/js/modal.js.map +1 -0
- package/dist/homebridge-ui/public/js/modal.ts +35 -0
- package/dist/homebridge-ui/public/js/modals.d.ts +15 -0
- package/dist/homebridge-ui/public/js/modals.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/modals.js +675 -0
- package/dist/homebridge-ui/public/js/modals.js.map +1 -0
- package/dist/homebridge-ui/public/js/modals.ts +765 -0
- package/dist/homebridge-ui/public/js/render.d.ts +71 -0
- package/dist/homebridge-ui/public/js/render.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/render.js +960 -0
- package/dist/homebridge-ui/public/js/render.js.map +1 -0
- package/dist/homebridge-ui/public/js/render.ts +1084 -0
- package/dist/homebridge-ui/public/js/toast.d.ts +6 -0
- package/dist/homebridge-ui/public/js/toast.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/toast.js +38 -0
- package/dist/homebridge-ui/public/js/toast.js.map +1 -0
- package/dist/homebridge-ui/public/js/toast.ts +44 -0
- package/dist/homebridge-ui/public/js/types.d.ts +23 -0
- package/dist/homebridge-ui/public/js/types.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/types.js +2 -0
- package/dist/homebridge-ui/public/js/types.js.map +1 -0
- package/dist/homebridge-ui/public/js/types.ts +26 -0
- package/dist/homebridge-ui/server.d.ts +1 -3
- package/dist/homebridge-ui/server.d.ts.map +1 -1
- package/dist/homebridge-ui/server.js +8 -471
- package/dist/homebridge-ui/server.js.map +1 -1
- package/dist/homebridge-ui/settings.js +8 -0
- package/dist/homebridge-ui/settings.js.map +1 -0
- package/dist/homebridge-ui/switchbotClient.js +247 -0
- package/dist/homebridge-ui/switchbotClient.js.map +1 -0
- package/dist/homebridge-ui/utils/config-parser.d.ts +39 -0
- package/dist/homebridge-ui/utils/config-parser.d.ts.map +1 -0
- package/dist/homebridge-ui/utils/config-parser.js +108 -0
- package/dist/homebridge-ui/utils/config-parser.js.map +1 -0
- package/dist/homebridge-ui/utils/device-migration.d.ts +35 -0
- package/dist/homebridge-ui/utils/device-migration.d.ts.map +1 -0
- package/dist/homebridge-ui/utils/device-migration.js +111 -0
- package/dist/homebridge-ui/utils/device-migration.js.map +1 -0
- package/dist/homebridge-ui/utils/logger.d.ts +7 -0
- package/dist/homebridge-ui/utils/logger.d.ts.map +1 -0
- package/dist/homebridge-ui/utils/logger.js +17 -0
- package/dist/homebridge-ui/utils/logger.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/settings.d.ts +1 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +1 -0
- package/dist/settings.js.map +1 -1
- package/dist/switchbotClient.d.ts +12 -10
- package/dist/switchbotClient.d.ts.map +1 -1
- package/dist/switchbotClient.js +156 -103
- package/dist/switchbotClient.js.map +1 -1
- package/dist/utils.d.ts +76 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1121 -4
- package/dist/utils.js.map +1 -1
- package/docs/assets/highlight.css +16 -2
- package/docs/assets/main.js +1 -1
- package/docs/index.html +82 -5
- package/docs/variables/default.html +3 -1
- package/eslint.config.js +9 -5
- package/nodemon.json +2 -2
- package/package.json +34 -21
- package/scripts/build-ui.js +37 -0
- package/scripts/free-dev-ports.mjs +105 -0
- package/scripts/generate-matter-maps.js +34 -17
- package/scripts/sync-device-types.mjs +31 -0
- package/src/SwitchBotHAPPlatform.ts +558 -0
- package/src/SwitchBotMatterPlatform.ts +538 -0
- package/src/device-types.js +246 -0
- package/src/device-types.js.map +1 -0
- package/src/device-types.ts +261 -0
- package/src/deviceCommandMapper.js +319 -0
- package/src/deviceCommandMapper.js.map +1 -0
- package/src/deviceCommandMapper.ts +333 -0
- package/src/deviceFactory.ts +125 -45
- package/src/devices/genericDevice.ts +411 -69
- package/src/errors.js +32 -0
- package/src/errors.js.map +1 -0
- package/src/errors.ts +35 -0
- package/src/homebridge-ui/endpoints/config.ts +110 -0
- package/src/homebridge-ui/endpoints/devices.ts +153 -0
- package/src/homebridge-ui/endpoints/discovery.ts +240 -0
- package/src/homebridge-ui/public/css/styles.css +483 -0
- package/src/homebridge-ui/public/index.html +197 -621
- package/src/homebridge-ui/public/js/advanced-settings.ts +94 -0
- package/src/homebridge-ui/public/js/api.ts +355 -0
- package/src/homebridge-ui/public/js/app.ts +22 -0
- package/src/homebridge-ui/public/js/constants.ts +1 -0
- package/src/homebridge-ui/public/js/credentials.ts +105 -0
- package/src/homebridge-ui/public/js/devices-delete.ts +227 -0
- package/src/homebridge-ui/public/js/devices.ts +106 -0
- package/src/homebridge-ui/public/js/discovery.ts +1335 -0
- package/src/homebridge-ui/public/js/logger.ts +17 -0
- package/src/homebridge-ui/public/js/modal.ts +35 -0
- package/src/homebridge-ui/public/js/modals.ts +765 -0
- package/src/homebridge-ui/public/js/render.ts +1084 -0
- package/src/homebridge-ui/public/js/toast.ts +44 -0
- package/src/homebridge-ui/public/js/types.ts +26 -0
- package/src/homebridge-ui/server.ts +9 -554
- package/src/homebridge-ui/utils/config-parser.ts +125 -0
- package/src/homebridge-ui/utils/device-migration.ts +144 -0
- package/src/homebridge-ui/utils/logger.ts +17 -0
- package/src/index.ts +12 -2
- package/src/settings.js +8 -0
- package/src/settings.js.map +1 -0
- package/src/settings.ts +2 -0
- package/src/switchbotClient.js +247 -0
- package/src/switchbotClient.js.map +1 -0
- package/src/switchbotClient.ts +177 -114
- package/src/utils.ts +1133 -5
- package/test/client/switchbot-client-debounce.spec.ts +35 -0
- package/test/client/switchbot-client-openapi.spec.ts +19 -0
- package/test/client/switchbotClient.spec.ts +64 -0
- package/test/device/device-mapping.spec.ts +23 -0
- package/test/device/deviceBase.spec.ts +26 -0
- package/test/device/deviceFactory-edge.spec.ts +15 -0
- package/test/device/deviceFactory.spec.ts +33 -0
- package/test/device/fan-swing.spec.ts +34 -0
- package/test/device/genericDevice-blepoll.spec.ts +47 -0
- package/test/device/irdevice.spec.ts +9 -0
- package/test/device/lock-users.spec.ts +35 -0
- package/test/device/matter-descriptors.spec.ts +22 -0
- package/test/device/matter-device-state.spec.ts +37 -0
- package/test/e2e/run-e2e.spec.ts +18 -19
- package/test/errors/errors.spec.ts +10 -0
- package/test/helpers/matter-harness.ts +20 -9
- package/test/homebridge-ui/server.spec.ts +9 -0
- package/test/platform/accessory-restore.spec.ts +37 -0
- package/test/platform/matter-childbridge.spec.ts +34 -0
- package/test/platform/matter-integration.spec.ts +33 -0
- package/test/platform/platform-edge.spec.ts +73 -0
- package/test/platform/platform.integration.spec.ts +34 -0
- package/test/utils/utils-extra.spec.ts +10 -0
- package/test/utils/utils.spec.ts +53 -0
- package/todo/TODO.md +80 -0
- package/tsconfig.ui.json +11 -0
- package/.github/npm-version-script-esm.js +0 -97
- package/.github/workflows/beta-release.yml +0 -52
- package/dist/platform.d.ts +0 -35
- package/dist/platform.d.ts.map +0 -1
- package/dist/platform.js +0 -945
- package/dist/platform.js.map +0 -1
- package/src/platform.ts +0 -963
- package/test/accessory-restore.spec.ts +0 -73
- package/test/device-mapping.spec.ts +0 -37
- package/test/deviceFactory.spec.ts +0 -18
- package/test/fan-swing.spec.ts +0 -29
- package/test/lock-users.spec.ts +0 -44
- package/test/matter-childbridge.spec.ts +0 -55
- package/test/matter-descriptors.spec.ts +0 -97
- package/test/matter-device-state.spec.ts +0 -101
- package/test/matter-integration.spec.ts +0 -70
- package/test/platform.integration.spec.ts +0 -55
- package/test/switchbot-client-debounce.spec.ts +0 -131
- package/test/switchbot-client-openapi.spec.ts +0 -56
- package/test/switchbotClient.spec.ts +0 -10
- package/test/utils.spec.ts +0 -20
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
// deviceCommandMapper.ts
|
|
2
|
+
// Maps HAP/Matter commands to node-switchbot device methods for all supported device types
|
|
3
|
+
export const deviceTypeCommandMap = {
|
|
4
|
+
// SwitchBot AI Hub (read-only/generic)
|
|
5
|
+
'ai hub': {},
|
|
6
|
+
// SwitchBot Cameras (read-only/generic)
|
|
7
|
+
'indoor cam': {},
|
|
8
|
+
'pan/tilt cam': {},
|
|
9
|
+
'pan/tilt cam 2k': {},
|
|
10
|
+
'pan/tilt cam plus 2k': {},
|
|
11
|
+
'pan/tilt cam plus 3k': {},
|
|
12
|
+
// SwitchBot Air Purifiers (read-only/generic)
|
|
13
|
+
'air purifier pm2.5': {},
|
|
14
|
+
'air purifier table pm2.5': {},
|
|
15
|
+
'air purifier voc': {},
|
|
16
|
+
'air purifier table voc': {},
|
|
17
|
+
// SwitchBot Home Climate Panel (read-only/generic)
|
|
18
|
+
'home climate panel': {},
|
|
19
|
+
// SwitchBot WoIOSensor (read-only/generic)
|
|
20
|
+
'woiosensor': {},
|
|
21
|
+
// SwitchBot Candle Warmer Lamp
|
|
22
|
+
'candle warmer lamp': {
|
|
23
|
+
turnOn: async (device) => device.turnOn(),
|
|
24
|
+
turnOff: async (device) => device.turnOff(),
|
|
25
|
+
},
|
|
26
|
+
// SwitchBot Hubs (read-only/generic)
|
|
27
|
+
'hub': {},
|
|
28
|
+
'hub 2': {},
|
|
29
|
+
'hub 3': {},
|
|
30
|
+
'hub mini': {},
|
|
31
|
+
'hub plus': {},
|
|
32
|
+
// SwitchBot Robot Vacuum Cleaner K20 Plus Pro
|
|
33
|
+
'robot vacuum cleaner k20 plus pro': {
|
|
34
|
+
start: async (device) => device.start(),
|
|
35
|
+
stop: async (device) => device.stop(),
|
|
36
|
+
pause: async (device) => device.pause(),
|
|
37
|
+
dock: async (device) => device.dock(),
|
|
38
|
+
resume: async (device) => device.resume(),
|
|
39
|
+
locate: async (device) => device.locate(),
|
|
40
|
+
},
|
|
41
|
+
// SwitchBot Robot Vacuum Cleaner S1
|
|
42
|
+
'robot vacuum cleaner s1': {
|
|
43
|
+
start: async (device) => device.start(),
|
|
44
|
+
stop: async (device) => device.stop(),
|
|
45
|
+
pause: async (device) => device.pause(),
|
|
46
|
+
dock: async (device) => device.dock(),
|
|
47
|
+
resume: async (device) => device.resume(),
|
|
48
|
+
locate: async (device) => device.locate(),
|
|
49
|
+
},
|
|
50
|
+
// SwitchBot Robot Vacuum Cleaner S1 Plus
|
|
51
|
+
'robot vacuum cleaner s1 plus': {
|
|
52
|
+
start: async (device) => device.start(),
|
|
53
|
+
stop: async (device) => device.stop(),
|
|
54
|
+
pause: async (device) => device.pause(),
|
|
55
|
+
dock: async (device) => device.dock(),
|
|
56
|
+
resume: async (device) => device.resume(),
|
|
57
|
+
locate: async (device) => device.locate(),
|
|
58
|
+
},
|
|
59
|
+
// SwitchBot Robot Vacuum Cleaner S10
|
|
60
|
+
'robot vacuum cleaner s10': {
|
|
61
|
+
start: async (device) => device.start(),
|
|
62
|
+
stop: async (device) => device.stop(),
|
|
63
|
+
pause: async (device) => device.pause(),
|
|
64
|
+
dock: async (device) => device.dock(),
|
|
65
|
+
resume: async (device) => device.resume(),
|
|
66
|
+
locate: async (device) => device.locate(),
|
|
67
|
+
},
|
|
68
|
+
// SwitchBot Robot Vacuum Cleaner S20
|
|
69
|
+
'robot vacuum cleaner s20': {
|
|
70
|
+
start: async (device) => device.start(),
|
|
71
|
+
stop: async (device) => device.stop(),
|
|
72
|
+
pause: async (device) => device.pause(),
|
|
73
|
+
dock: async (device) => device.dock(),
|
|
74
|
+
resume: async (device) => device.resume(),
|
|
75
|
+
locate: async (device) => device.locate(),
|
|
76
|
+
},
|
|
77
|
+
// SwitchBot Relay Switch 2PM
|
|
78
|
+
'relay switch 2pm': {
|
|
79
|
+
turnOn: async (device) => device.turnOn(),
|
|
80
|
+
turnOff: async (device) => device.turnOff(),
|
|
81
|
+
},
|
|
82
|
+
// SwitchBot K10+
|
|
83
|
+
'k10+': {
|
|
84
|
+
start: async (device) => device.start(),
|
|
85
|
+
stop: async (device) => device.stop(),
|
|
86
|
+
pause: async (device) => device.pause(),
|
|
87
|
+
dock: async (device) => device.dock(),
|
|
88
|
+
resume: async (device) => device.resume(),
|
|
89
|
+
locate: async (device) => device.locate(),
|
|
90
|
+
},
|
|
91
|
+
// SwitchBot K10+ Pro
|
|
92
|
+
'k10+ pro': {
|
|
93
|
+
start: async (device) => device.start(),
|
|
94
|
+
stop: async (device) => device.stop(),
|
|
95
|
+
pause: async (device) => device.pause(),
|
|
96
|
+
dock: async (device) => device.dock(),
|
|
97
|
+
resume: async (device) => device.resume(),
|
|
98
|
+
locate: async (device) => device.locate(),
|
|
99
|
+
},
|
|
100
|
+
// SwitchBot Robot Vacuum Cleaner K10+ Pro Combo
|
|
101
|
+
'robot vacuum cleaner k10+ pro combo': {
|
|
102
|
+
start: async (device) => device.start(),
|
|
103
|
+
stop: async (device) => device.stop(),
|
|
104
|
+
pause: async (device) => device.pause(),
|
|
105
|
+
dock: async (device) => device.dock(),
|
|
106
|
+
resume: async (device) => device.resume(),
|
|
107
|
+
locate: async (device) => device.locate(),
|
|
108
|
+
},
|
|
109
|
+
// SwitchBot Robot Vacuum Cleaner K11+
|
|
110
|
+
'robot vacuum cleaner k11+': {
|
|
111
|
+
start: async (device) => device.start(),
|
|
112
|
+
stop: async (device) => device.stop(),
|
|
113
|
+
pause: async (device) => device.pause(),
|
|
114
|
+
dock: async (device) => device.dock(),
|
|
115
|
+
resume: async (device) => device.resume(),
|
|
116
|
+
locate: async (device) => device.locate(),
|
|
117
|
+
},
|
|
118
|
+
// SwitchBot MeterPro(CO2) (read-only)
|
|
119
|
+
'meterpro(co2)': {},
|
|
120
|
+
// SwitchBot Water Detector (read-only)
|
|
121
|
+
'water detector': {},
|
|
122
|
+
// SwitchBot Garage Door Opener
|
|
123
|
+
'garage door opener': {
|
|
124
|
+
open: async (device) => device.open(),
|
|
125
|
+
close: async (device) => device.close(),
|
|
126
|
+
stop: async (device) => device.stop(),
|
|
127
|
+
},
|
|
128
|
+
// SwitchBot Relay Switch 1
|
|
129
|
+
'relay switch 1': {
|
|
130
|
+
turnOn: async (device) => device.turnOn(),
|
|
131
|
+
turnOff: async (device) => device.turnOff(),
|
|
132
|
+
},
|
|
133
|
+
// SwitchBot Relay Switch 1PM
|
|
134
|
+
'relay switch 1pm': {
|
|
135
|
+
turnOn: async (device) => device.turnOn(),
|
|
136
|
+
turnOff: async (device) => device.turnOff(),
|
|
137
|
+
},
|
|
138
|
+
// SwitchBot Smart Radiator Thermostat (read-only or not directly controllable)
|
|
139
|
+
'smart radiator thermostat': {},
|
|
140
|
+
// SwitchBot Humidifier2
|
|
141
|
+
'humidifier2': {
|
|
142
|
+
turnOn: async (device) => device.turnOn(),
|
|
143
|
+
turnOff: async (device) => device.turnOff(),
|
|
144
|
+
setMode: async (device, body) => device.setMode(body?.parameter),
|
|
145
|
+
setHumidity: async (device, body) => device.setHumidity(body?.parameter),
|
|
146
|
+
},
|
|
147
|
+
// SwitchBot MeterPlus (read-only)
|
|
148
|
+
'meterplus': {},
|
|
149
|
+
// SwitchBot Meter Pro (read-only)
|
|
150
|
+
'meter pro': {},
|
|
151
|
+
// SwitchBot MeterPro (read-only)
|
|
152
|
+
'meterpro': {},
|
|
153
|
+
// SwitchBot RGBICWW Floor Lamp
|
|
154
|
+
'rgbicww floor lamp': {
|
|
155
|
+
turnOn: async (device) => device.turnOn(),
|
|
156
|
+
turnOff: async (device) => device.turnOff(),
|
|
157
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
158
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
159
|
+
},
|
|
160
|
+
// SwitchBot RGBICWW Strip Light
|
|
161
|
+
'rgbicww strip light': {
|
|
162
|
+
turnOn: async (device) => device.turnOn(),
|
|
163
|
+
turnOff: async (device) => device.turnOff(),
|
|
164
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
165
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
166
|
+
},
|
|
167
|
+
// SwitchBot Circulator Fan
|
|
168
|
+
'circulator fan': {
|
|
169
|
+
turnOn: async (device) => device.turnOn(),
|
|
170
|
+
turnOff: async (device) => device.turnOff(),
|
|
171
|
+
setSpeed: async (device, body) => device.setSpeed(body?.parameter),
|
|
172
|
+
swing: async (device) => device.swing(),
|
|
173
|
+
},
|
|
174
|
+
// SwitchBot Battery Circulator Fan
|
|
175
|
+
'battery circulator fan': {
|
|
176
|
+
turnOn: async (device) => device.turnOn(),
|
|
177
|
+
turnOff: async (device) => device.turnOff(),
|
|
178
|
+
setSpeed: async (device, body) => device.setSpeed(body?.parameter),
|
|
179
|
+
swing: async (device) => device.swing(),
|
|
180
|
+
},
|
|
181
|
+
// SwitchBot Standing Circulator Fan
|
|
182
|
+
'standing circulator fan': {
|
|
183
|
+
turnOn: async (device) => device.turnOn(),
|
|
184
|
+
turnOff: async (device) => device.turnOff(),
|
|
185
|
+
setSpeed: async (device, body) => device.setSpeed(body?.parameter),
|
|
186
|
+
swing: async (device) => device.swing(),
|
|
187
|
+
},
|
|
188
|
+
// SwitchBot Bot
|
|
189
|
+
'bot': {
|
|
190
|
+
turnOn: async (device) => device.turnOn(),
|
|
191
|
+
turnOff: async (device) => device.turnOff(),
|
|
192
|
+
press: async (device) => device.press(),
|
|
193
|
+
},
|
|
194
|
+
// SwitchBot Curtain
|
|
195
|
+
'curtain': {
|
|
196
|
+
open: async (device) => device.open(),
|
|
197
|
+
close: async (device) => device.close(),
|
|
198
|
+
pause: async (device) => device.pause(),
|
|
199
|
+
setPosition: async (device, body) => device.setPosition(body?.parameter),
|
|
200
|
+
},
|
|
201
|
+
// SwitchBot Blind Tilt
|
|
202
|
+
'blind tilt': {
|
|
203
|
+
open: async (device) => device.open(),
|
|
204
|
+
close: async (device) => device.close(),
|
|
205
|
+
pause: async (device) => device.pause(),
|
|
206
|
+
setPosition: async (device, body) => device.setPosition(body?.parameter),
|
|
207
|
+
},
|
|
208
|
+
// SwitchBot Roller Shade
|
|
209
|
+
'roller shade': {
|
|
210
|
+
open: async (device) => device.open(),
|
|
211
|
+
close: async (device) => device.close(),
|
|
212
|
+
pause: async (device) => device.pause(),
|
|
213
|
+
setPosition: async (device, body) => device.setPosition(body?.parameter),
|
|
214
|
+
},
|
|
215
|
+
// SwitchBot Plug
|
|
216
|
+
'plug': {
|
|
217
|
+
turnOn: async (device) => device.turnOn(),
|
|
218
|
+
turnOff: async (device) => device.turnOff(),
|
|
219
|
+
},
|
|
220
|
+
// SwitchBot Strip Light 3
|
|
221
|
+
'strip light 3': {
|
|
222
|
+
turnOn: async (device) => device.turnOn(),
|
|
223
|
+
turnOff: async (device) => device.turnOff(),
|
|
224
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
225
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
226
|
+
},
|
|
227
|
+
// SwitchBot Floor Lamp
|
|
228
|
+
'floor lamp': {
|
|
229
|
+
turnOn: async (device) => device.turnOn(),
|
|
230
|
+
turnOff: async (device) => device.turnOff(),
|
|
231
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
232
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
233
|
+
},
|
|
234
|
+
// SwitchBot RGBIC Neon Rope Light
|
|
235
|
+
'rgbic neon rope light': {
|
|
236
|
+
turnOn: async (device) => device.turnOn(),
|
|
237
|
+
turnOff: async (device) => device.turnOff(),
|
|
238
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
239
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
240
|
+
},
|
|
241
|
+
// SwitchBot RGBIC Neon Wire Rope Light
|
|
242
|
+
'rgbic neon wire rope light': {
|
|
243
|
+
turnOn: async (device) => device.turnOn(),
|
|
244
|
+
turnOff: async (device) => device.turnOff(),
|
|
245
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
246
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
247
|
+
},
|
|
248
|
+
// SwitchBot Plug Mini
|
|
249
|
+
'plug mini': {
|
|
250
|
+
turnOn: async (device) => device.turnOn(),
|
|
251
|
+
turnOff: async (device) => device.turnOff(),
|
|
252
|
+
},
|
|
253
|
+
// SwitchBot Color Bulb
|
|
254
|
+
'color bulb': {
|
|
255
|
+
turnOn: async (device) => device.turnOn(),
|
|
256
|
+
turnOff: async (device) => device.turnOff(),
|
|
257
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
258
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
259
|
+
},
|
|
260
|
+
// SwitchBot Light Strip
|
|
261
|
+
'light strip': {
|
|
262
|
+
turnOn: async (device) => device.turnOn(),
|
|
263
|
+
turnOff: async (device) => device.turnOff(),
|
|
264
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
265
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
266
|
+
},
|
|
267
|
+
// SwitchBot Fan
|
|
268
|
+
'fan': {
|
|
269
|
+
turnOn: async (device) => device.turnOn(),
|
|
270
|
+
turnOff: async (device) => device.turnOff(),
|
|
271
|
+
setSpeed: async (device, body) => device.setSpeed(body?.parameter),
|
|
272
|
+
swing: async (device) => device.swing(),
|
|
273
|
+
},
|
|
274
|
+
// SwitchBot Lock
|
|
275
|
+
'lock': {
|
|
276
|
+
lock: async (device) => device.lock(),
|
|
277
|
+
unlock: async (device) => device.unlock(),
|
|
278
|
+
},
|
|
279
|
+
// SwitchBot Curtain 3
|
|
280
|
+
'curtain3': {
|
|
281
|
+
open: async (device) => device.open(),
|
|
282
|
+
close: async (device) => device.close(),
|
|
283
|
+
pause: async (device) => device.pause(),
|
|
284
|
+
setPosition: async (device, body) => device.setPosition(body?.parameter),
|
|
285
|
+
},
|
|
286
|
+
// SwitchBot Meter
|
|
287
|
+
'meter': {}, // Read-only
|
|
288
|
+
// SwitchBot Motion Sensor
|
|
289
|
+
'motion sensor': {}, // Read-only
|
|
290
|
+
// SwitchBot Contact Sensor
|
|
291
|
+
'contact sensor': {}, // Read-only
|
|
292
|
+
// SwitchBot Humidifier
|
|
293
|
+
'humidifier': {
|
|
294
|
+
turnOn: async (device) => device.turnOn(),
|
|
295
|
+
turnOff: async (device) => device.turnOff(),
|
|
296
|
+
setMode: async (device, body) => device.setMode(body?.parameter),
|
|
297
|
+
setHumidity: async (device, body) => device.setHumidity(body?.parameter),
|
|
298
|
+
},
|
|
299
|
+
// SwitchBot Vacuum
|
|
300
|
+
'vacuum': {
|
|
301
|
+
start: async (device) => device.start(),
|
|
302
|
+
stop: async (device) => device.stop(),
|
|
303
|
+
pause: async (device) => device.pause(),
|
|
304
|
+
dock: async (device) => device.dock(),
|
|
305
|
+
resume: async (device) => device.resume(),
|
|
306
|
+
locate: async (device) => device.locate(),
|
|
307
|
+
},
|
|
308
|
+
// Add more device types and commands as needed
|
|
309
|
+
};
|
|
310
|
+
// Helper to get the handler for a device type and command
|
|
311
|
+
export function getDeviceCommandHandler(deviceType, command) {
|
|
312
|
+
const typeKey = deviceType.toLowerCase();
|
|
313
|
+
const typeMap = deviceTypeCommandMap[typeKey];
|
|
314
|
+
if (!typeMap) {
|
|
315
|
+
return undefined;
|
|
316
|
+
}
|
|
317
|
+
return typeMap[command];
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=deviceCommandMapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceCommandMapper.js","sourceRoot":"","sources":["deviceCommandMapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
// deviceCommandMapper.ts
|
|
2
|
+
// Maps HAP/Matter commands to node-switchbot device methods for all supported device types
|
|
3
|
+
|
|
4
|
+
// This is a starter mapping. Expand as needed for new device types and commands.
|
|
5
|
+
// Each device type maps to a set of commands, each command maps to a function that takes (device, body) and returns a Promise.
|
|
6
|
+
|
|
7
|
+
export type DeviceCommandHandler = (device: any, body: any) => Promise<any>
|
|
8
|
+
|
|
9
|
+
export interface DeviceCommandMap {
|
|
10
|
+
[command: string]: DeviceCommandHandler
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface DeviceTypeCommandMap {
|
|
14
|
+
[deviceType: string]: DeviceCommandMap
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const deviceTypeCommandMap: DeviceTypeCommandMap = {
|
|
18
|
+
// SwitchBot AI Hub (read-only/generic)
|
|
19
|
+
'ai hub': {},
|
|
20
|
+
// SwitchBot Cameras (read-only/generic)
|
|
21
|
+
'indoor cam': {},
|
|
22
|
+
'pan/tilt cam': {},
|
|
23
|
+
'pan/tilt cam 2k': {},
|
|
24
|
+
'pan/tilt cam plus 2k': {},
|
|
25
|
+
'pan/tilt cam plus 3k': {},
|
|
26
|
+
// SwitchBot Air Purifiers (read-only/generic)
|
|
27
|
+
'air purifier pm2.5': {},
|
|
28
|
+
'air purifier table pm2.5': {},
|
|
29
|
+
'air purifier voc': {},
|
|
30
|
+
'air purifier table voc': {},
|
|
31
|
+
// SwitchBot Home Climate Panel (read-only/generic)
|
|
32
|
+
'home climate panel': {},
|
|
33
|
+
// SwitchBot WoIOSensor (read-only/generic)
|
|
34
|
+
'woiosensor': {},
|
|
35
|
+
// SwitchBot Candle Warmer Lamp
|
|
36
|
+
'candle warmer lamp': {
|
|
37
|
+
turnOn: async device => device.turnOn(),
|
|
38
|
+
turnOff: async device => device.turnOff(),
|
|
39
|
+
},
|
|
40
|
+
// SwitchBot Hubs (read-only/generic)
|
|
41
|
+
'hub': {},
|
|
42
|
+
'hub 2': {},
|
|
43
|
+
'hub 3': {},
|
|
44
|
+
'hub mini': {},
|
|
45
|
+
'hub plus': {},
|
|
46
|
+
// SwitchBot Robot Vacuum Cleaner K20 Plus Pro
|
|
47
|
+
'robot vacuum cleaner k20 plus pro': {
|
|
48
|
+
start: async device => device.start(),
|
|
49
|
+
stop: async device => device.stop(),
|
|
50
|
+
pause: async device => device.pause(),
|
|
51
|
+
dock: async device => device.dock(),
|
|
52
|
+
resume: async device => device.resume(),
|
|
53
|
+
locate: async device => device.locate(),
|
|
54
|
+
},
|
|
55
|
+
// SwitchBot Robot Vacuum Cleaner S1
|
|
56
|
+
'robot vacuum cleaner s1': {
|
|
57
|
+
start: async device => device.start(),
|
|
58
|
+
stop: async device => device.stop(),
|
|
59
|
+
pause: async device => device.pause(),
|
|
60
|
+
dock: async device => device.dock(),
|
|
61
|
+
resume: async device => device.resume(),
|
|
62
|
+
locate: async device => device.locate(),
|
|
63
|
+
},
|
|
64
|
+
// SwitchBot Robot Vacuum Cleaner S1 Plus
|
|
65
|
+
'robot vacuum cleaner s1 plus': {
|
|
66
|
+
start: async device => device.start(),
|
|
67
|
+
stop: async device => device.stop(),
|
|
68
|
+
pause: async device => device.pause(),
|
|
69
|
+
dock: async device => device.dock(),
|
|
70
|
+
resume: async device => device.resume(),
|
|
71
|
+
locate: async device => device.locate(),
|
|
72
|
+
},
|
|
73
|
+
// SwitchBot Robot Vacuum Cleaner S10
|
|
74
|
+
'robot vacuum cleaner s10': {
|
|
75
|
+
start: async device => device.start(),
|
|
76
|
+
stop: async device => device.stop(),
|
|
77
|
+
pause: async device => device.pause(),
|
|
78
|
+
dock: async device => device.dock(),
|
|
79
|
+
resume: async device => device.resume(),
|
|
80
|
+
locate: async device => device.locate(),
|
|
81
|
+
},
|
|
82
|
+
// SwitchBot Robot Vacuum Cleaner S20
|
|
83
|
+
'robot vacuum cleaner s20': {
|
|
84
|
+
start: async device => device.start(),
|
|
85
|
+
stop: async device => device.stop(),
|
|
86
|
+
pause: async device => device.pause(),
|
|
87
|
+
dock: async device => device.dock(),
|
|
88
|
+
resume: async device => device.resume(),
|
|
89
|
+
locate: async device => device.locate(),
|
|
90
|
+
},
|
|
91
|
+
// SwitchBot Relay Switch 2PM
|
|
92
|
+
'relay switch 2pm': {
|
|
93
|
+
turnOn: async device => device.turnOn(),
|
|
94
|
+
turnOff: async device => device.turnOff(),
|
|
95
|
+
},
|
|
96
|
+
// SwitchBot K10+
|
|
97
|
+
'k10+': {
|
|
98
|
+
start: async device => device.start(),
|
|
99
|
+
stop: async device => device.stop(),
|
|
100
|
+
pause: async device => device.pause(),
|
|
101
|
+
dock: async device => device.dock(),
|
|
102
|
+
resume: async device => device.resume(),
|
|
103
|
+
locate: async device => device.locate(),
|
|
104
|
+
},
|
|
105
|
+
// SwitchBot K10+ Pro
|
|
106
|
+
'k10+ pro': {
|
|
107
|
+
start: async device => device.start(),
|
|
108
|
+
stop: async device => device.stop(),
|
|
109
|
+
pause: async device => device.pause(),
|
|
110
|
+
dock: async device => device.dock(),
|
|
111
|
+
resume: async device => device.resume(),
|
|
112
|
+
locate: async device => device.locate(),
|
|
113
|
+
},
|
|
114
|
+
// SwitchBot Robot Vacuum Cleaner K10+ Pro Combo
|
|
115
|
+
'robot vacuum cleaner k10+ pro combo': {
|
|
116
|
+
start: async device => device.start(),
|
|
117
|
+
stop: async device => device.stop(),
|
|
118
|
+
pause: async device => device.pause(),
|
|
119
|
+
dock: async device => device.dock(),
|
|
120
|
+
resume: async device => device.resume(),
|
|
121
|
+
locate: async device => device.locate(),
|
|
122
|
+
},
|
|
123
|
+
// SwitchBot Robot Vacuum Cleaner K11+
|
|
124
|
+
'robot vacuum cleaner k11+': {
|
|
125
|
+
start: async device => device.start(),
|
|
126
|
+
stop: async device => device.stop(),
|
|
127
|
+
pause: async device => device.pause(),
|
|
128
|
+
dock: async device => device.dock(),
|
|
129
|
+
resume: async device => device.resume(),
|
|
130
|
+
locate: async device => device.locate(),
|
|
131
|
+
},
|
|
132
|
+
// SwitchBot MeterPro(CO2) (read-only)
|
|
133
|
+
'meterpro(co2)': {},
|
|
134
|
+
// SwitchBot Water Detector (read-only)
|
|
135
|
+
'water detector': {},
|
|
136
|
+
// SwitchBot Garage Door Opener
|
|
137
|
+
'garage door opener': {
|
|
138
|
+
open: async device => device.open(),
|
|
139
|
+
close: async device => device.close(),
|
|
140
|
+
stop: async device => device.stop(),
|
|
141
|
+
},
|
|
142
|
+
// SwitchBot Relay Switch 1
|
|
143
|
+
'relay switch 1': {
|
|
144
|
+
turnOn: async device => device.turnOn(),
|
|
145
|
+
turnOff: async device => device.turnOff(),
|
|
146
|
+
},
|
|
147
|
+
// SwitchBot Relay Switch 1PM
|
|
148
|
+
'relay switch 1pm': {
|
|
149
|
+
turnOn: async device => device.turnOn(),
|
|
150
|
+
turnOff: async device => device.turnOff(),
|
|
151
|
+
},
|
|
152
|
+
// SwitchBot Smart Radiator Thermostat (read-only or not directly controllable)
|
|
153
|
+
'smart radiator thermostat': {},
|
|
154
|
+
// SwitchBot Humidifier2
|
|
155
|
+
'humidifier2': {
|
|
156
|
+
turnOn: async device => device.turnOn(),
|
|
157
|
+
turnOff: async device => device.turnOff(),
|
|
158
|
+
setMode: async (device, body) => device.setMode(body?.parameter),
|
|
159
|
+
setHumidity: async (device, body) => device.setHumidity(body?.parameter),
|
|
160
|
+
},
|
|
161
|
+
// SwitchBot MeterPlus (read-only)
|
|
162
|
+
'meterplus': {},
|
|
163
|
+
// SwitchBot Meter Pro (read-only)
|
|
164
|
+
'meter pro': {},
|
|
165
|
+
// SwitchBot MeterPro (read-only)
|
|
166
|
+
'meterpro': {},
|
|
167
|
+
// SwitchBot RGBICWW Floor Lamp
|
|
168
|
+
'rgbicww floor lamp': {
|
|
169
|
+
turnOn: async device => device.turnOn(),
|
|
170
|
+
turnOff: async device => device.turnOff(),
|
|
171
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
172
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
173
|
+
},
|
|
174
|
+
// SwitchBot RGBICWW Strip Light
|
|
175
|
+
'rgbicww strip light': {
|
|
176
|
+
turnOn: async device => device.turnOn(),
|
|
177
|
+
turnOff: async device => device.turnOff(),
|
|
178
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
179
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
180
|
+
},
|
|
181
|
+
// SwitchBot Circulator Fan
|
|
182
|
+
'circulator fan': {
|
|
183
|
+
turnOn: async device => device.turnOn(),
|
|
184
|
+
turnOff: async device => device.turnOff(),
|
|
185
|
+
setSpeed: async (device, body) => device.setSpeed(body?.parameter),
|
|
186
|
+
swing: async device => device.swing(),
|
|
187
|
+
},
|
|
188
|
+
// SwitchBot Battery Circulator Fan
|
|
189
|
+
'battery circulator fan': {
|
|
190
|
+
turnOn: async device => device.turnOn(),
|
|
191
|
+
turnOff: async device => device.turnOff(),
|
|
192
|
+
setSpeed: async (device, body) => device.setSpeed(body?.parameter),
|
|
193
|
+
swing: async device => device.swing(),
|
|
194
|
+
},
|
|
195
|
+
// SwitchBot Standing Circulator Fan
|
|
196
|
+
'standing circulator fan': {
|
|
197
|
+
turnOn: async device => device.turnOn(),
|
|
198
|
+
turnOff: async device => device.turnOff(),
|
|
199
|
+
setSpeed: async (device, body) => device.setSpeed(body?.parameter),
|
|
200
|
+
swing: async device => device.swing(),
|
|
201
|
+
},
|
|
202
|
+
// SwitchBot Bot
|
|
203
|
+
'bot': {
|
|
204
|
+
turnOn: async device => device.turnOn(),
|
|
205
|
+
turnOff: async device => device.turnOff(),
|
|
206
|
+
press: async device => device.press(),
|
|
207
|
+
},
|
|
208
|
+
// SwitchBot Curtain
|
|
209
|
+
'curtain': {
|
|
210
|
+
open: async device => device.open(),
|
|
211
|
+
close: async device => device.close(),
|
|
212
|
+
pause: async device => device.pause(),
|
|
213
|
+
setPosition: async (device, body) => device.setPosition(body?.parameter),
|
|
214
|
+
},
|
|
215
|
+
// SwitchBot Blind Tilt
|
|
216
|
+
'blind tilt': {
|
|
217
|
+
open: async device => device.open(),
|
|
218
|
+
close: async device => device.close(),
|
|
219
|
+
pause: async device => device.pause(),
|
|
220
|
+
setPosition: async (device, body) => device.setPosition(body?.parameter),
|
|
221
|
+
},
|
|
222
|
+
// SwitchBot Roller Shade
|
|
223
|
+
'roller shade': {
|
|
224
|
+
open: async device => device.open(),
|
|
225
|
+
close: async device => device.close(),
|
|
226
|
+
pause: async device => device.pause(),
|
|
227
|
+
setPosition: async (device, body) => device.setPosition(body?.parameter),
|
|
228
|
+
},
|
|
229
|
+
// SwitchBot Plug
|
|
230
|
+
'plug': {
|
|
231
|
+
turnOn: async device => device.turnOn(),
|
|
232
|
+
turnOff: async device => device.turnOff(),
|
|
233
|
+
},
|
|
234
|
+
// SwitchBot Strip Light 3
|
|
235
|
+
'strip light 3': {
|
|
236
|
+
turnOn: async device => device.turnOn(),
|
|
237
|
+
turnOff: async device => device.turnOff(),
|
|
238
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
239
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
240
|
+
},
|
|
241
|
+
// SwitchBot Floor Lamp
|
|
242
|
+
'floor lamp': {
|
|
243
|
+
turnOn: async device => device.turnOn(),
|
|
244
|
+
turnOff: async device => device.turnOff(),
|
|
245
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
246
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
247
|
+
},
|
|
248
|
+
// SwitchBot RGBIC Neon Rope Light
|
|
249
|
+
'rgbic neon rope light': {
|
|
250
|
+
turnOn: async device => device.turnOn(),
|
|
251
|
+
turnOff: async device => device.turnOff(),
|
|
252
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
253
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
254
|
+
},
|
|
255
|
+
// SwitchBot RGBIC Neon Wire Rope Light
|
|
256
|
+
'rgbic neon wire rope light': {
|
|
257
|
+
turnOn: async device => device.turnOn(),
|
|
258
|
+
turnOff: async device => device.turnOff(),
|
|
259
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
260
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
261
|
+
},
|
|
262
|
+
// SwitchBot Plug Mini
|
|
263
|
+
'plug mini': {
|
|
264
|
+
turnOn: async device => device.turnOn(),
|
|
265
|
+
turnOff: async device => device.turnOff(),
|
|
266
|
+
},
|
|
267
|
+
// SwitchBot Color Bulb
|
|
268
|
+
'color bulb': {
|
|
269
|
+
turnOn: async device => device.turnOn(),
|
|
270
|
+
turnOff: async device => device.turnOff(),
|
|
271
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
272
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
273
|
+
},
|
|
274
|
+
// SwitchBot Light Strip
|
|
275
|
+
'light strip': {
|
|
276
|
+
turnOn: async device => device.turnOn(),
|
|
277
|
+
turnOff: async device => device.turnOff(),
|
|
278
|
+
setBrightness: async (device, body) => device.setBrightness(body?.parameter),
|
|
279
|
+
setColor: async (device, body) => device.setColor(body?.parameter),
|
|
280
|
+
},
|
|
281
|
+
// SwitchBot Fan
|
|
282
|
+
'fan': {
|
|
283
|
+
turnOn: async device => device.turnOn(),
|
|
284
|
+
turnOff: async device => device.turnOff(),
|
|
285
|
+
setSpeed: async (device, body) => device.setSpeed(body?.parameter),
|
|
286
|
+
swing: async device => device.swing(),
|
|
287
|
+
},
|
|
288
|
+
// SwitchBot Lock
|
|
289
|
+
'lock': {
|
|
290
|
+
lock: async device => device.lock(),
|
|
291
|
+
unlock: async device => device.unlock(),
|
|
292
|
+
},
|
|
293
|
+
// SwitchBot Curtain 3
|
|
294
|
+
'curtain3': {
|
|
295
|
+
open: async device => device.open(),
|
|
296
|
+
close: async device => device.close(),
|
|
297
|
+
pause: async device => device.pause(),
|
|
298
|
+
setPosition: async (device, body) => device.setPosition(body?.parameter),
|
|
299
|
+
},
|
|
300
|
+
// SwitchBot Meter
|
|
301
|
+
'meter': {}, // Read-only
|
|
302
|
+
// SwitchBot Motion Sensor
|
|
303
|
+
'motion sensor': {}, // Read-only
|
|
304
|
+
// SwitchBot Contact Sensor
|
|
305
|
+
'contact sensor': {}, // Read-only
|
|
306
|
+
// SwitchBot Humidifier
|
|
307
|
+
'humidifier': {
|
|
308
|
+
turnOn: async device => device.turnOn(),
|
|
309
|
+
turnOff: async device => device.turnOff(),
|
|
310
|
+
setMode: async (device, body) => device.setMode(body?.parameter),
|
|
311
|
+
setHumidity: async (device, body) => device.setHumidity(body?.parameter),
|
|
312
|
+
},
|
|
313
|
+
// SwitchBot Vacuum
|
|
314
|
+
'vacuum': {
|
|
315
|
+
start: async device => device.start(),
|
|
316
|
+
stop: async device => device.stop(),
|
|
317
|
+
pause: async device => device.pause(),
|
|
318
|
+
dock: async device => device.dock(),
|
|
319
|
+
resume: async device => device.resume(),
|
|
320
|
+
locate: async device => device.locate(),
|
|
321
|
+
},
|
|
322
|
+
// Add more device types and commands as needed
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// Helper to get the handler for a device type and command
|
|
326
|
+
export function getDeviceCommandHandler(deviceType: string, command: string): DeviceCommandHandler | undefined {
|
|
327
|
+
const typeKey = deviceType.toLowerCase()
|
|
328
|
+
const typeMap = deviceTypeCommandMap[typeKey]
|
|
329
|
+
if (!typeMap) {
|
|
330
|
+
return undefined
|
|
331
|
+
}
|
|
332
|
+
return typeMap[command]
|
|
333
|
+
}
|