@switchbot/homebridge-switchbot 5.0.0-beta.13 → 5.0.0-beta.131
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/.github/ISSUE_TEMPLATE/e2e-verification.md +36 -0
- package/.github/copilot-instructions.md +39 -0
- package/.github/workflows/ci.yml +32 -0
- package/.github/workflows/manual-e2e.yml +115 -0
- package/.github/workflows/release.yml +0 -4
- package/CHANGELOG.md +35 -0
- package/E2E-VERIFICATION.md +121 -0
- package/MIGRATION.md +54 -0
- package/README.md +99 -3
- package/TODO.md +263 -0
- package/config.schema.json +198 -14787
- 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/deviceFactory.d.ts +13 -0
- package/dist/deviceFactory.d.ts.map +1 -0
- package/dist/deviceFactory.js +165 -0
- package/dist/deviceFactory.js.map +1 -0
- package/dist/devices/deviceBase.d.ts +50 -0
- package/dist/devices/deviceBase.d.ts.map +1 -0
- package/dist/devices/deviceBase.js +119 -0
- package/dist/devices/deviceBase.js.map +1 -0
- package/dist/devices/genericDevice.d.ts +277 -0
- package/dist/devices/genericDevice.d.ts.map +1 -0
- package/dist/devices/genericDevice.js +1396 -0
- package/dist/devices/genericDevice.js.map +1 -0
- package/dist/errors.d.ts +5 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +51 -0
- package/dist/errors.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 +107 -0
- package/dist/homebridge-ui/endpoints/config.js.map +1 -0
- package/dist/homebridge-ui/endpoints/credentials.d.ts +6 -0
- package/dist/homebridge-ui/endpoints/credentials.d.ts.map +1 -0
- package/dist/homebridge-ui/endpoints/credentials.js +65 -0
- package/dist/homebridge-ui/endpoints/credentials.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 +430 -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 +212 -0
- package/dist/homebridge-ui/endpoints/discovery.js.map +1 -0
- package/dist/homebridge-ui/public/css/styles.css +447 -0
- package/dist/homebridge-ui/public/index.html +144 -248
- package/dist/homebridge-ui/public/js/api.d.ts +62 -0
- package/dist/homebridge-ui/public/js/api.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/api.js +225 -0
- package/dist/homebridge-ui/public/js/api.js.map +1 -0
- package/dist/homebridge-ui/public/js/api.ts +279 -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 +3600 -0
- package/dist/homebridge-ui/public/js/app.js.map +7 -0
- package/dist/homebridge-ui/public/js/app.ts +23 -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 +96 -0
- package/dist/homebridge-ui/public/js/credentials.js.map +1 -0
- package/dist/homebridge-ui/public/js/credentials.ts +100 -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 +206 -0
- package/dist/homebridge-ui/public/js/devices-delete.js.map +1 -0
- package/dist/homebridge-ui/public/js/devices-delete.ts +236 -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 +94 -0
- package/dist/homebridge-ui/public/js/devices.js.map +1 -0
- package/dist/homebridge-ui/public/js/devices.ts +114 -0
- package/dist/homebridge-ui/public/js/discovery.d.ts +4 -0
- package/dist/homebridge-ui/public/js/discovery.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/discovery.js +1364 -0
- package/dist/homebridge-ui/public/js/discovery.js.map +1 -0
- package/dist/homebridge-ui/public/js/discovery.ts +1492 -0
- package/dist/homebridge-ui/public/js/logger.d.ts +6 -0
- package/dist/homebridge-ui/public/js/logger.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/logger.js +12 -0
- package/dist/homebridge-ui/public/js/logger.js.map +1 -0
- package/dist/homebridge-ui/public/js/logger.ts +11 -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 +26 -0
- package/dist/homebridge-ui/public/js/modal.js.map +1 -0
- package/dist/homebridge-ui/public/js/modal.ts +28 -0
- package/dist/homebridge-ui/public/js/modals.d.ts +7 -0
- package/dist/homebridge-ui/public/js/modals.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/modals.js +494 -0
- package/dist/homebridge-ui/public/js/modals.js.map +1 -0
- package/dist/homebridge-ui/public/js/modals.ts +546 -0
- package/dist/homebridge-ui/public/js/render.d.ts +68 -0
- package/dist/homebridge-ui/public/js/render.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/render.js +914 -0
- package/dist/homebridge-ui/public/js/render.js.map +1 -0
- package/dist/homebridge-ui/public/js/render.ts +1026 -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 +29 -0
- package/dist/homebridge-ui/public/js/toast.js.map +1 -0
- package/dist/homebridge-ui/public/js/toast.ts +37 -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.js +11 -41
- package/dist/homebridge-ui/server.js.map +1 -1
- package/dist/homebridge-ui/utils/config-parser.d.ts +35 -0
- package/dist/homebridge-ui/utils/config-parser.d.ts.map +1 -0
- package/dist/homebridge-ui/utils/config-parser.js +87 -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.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/platform.d.ts +39 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +1587 -0
- package/dist/platform.js.map +1 -0
- package/dist/settings.d.ts +10 -249
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +5 -30
- package/dist/settings.js.map +1 -1
- package/dist/switchbotClient.d.ts +32 -0
- package/dist/switchbotClient.d.ts.map +1 -0
- package/dist/switchbotClient.js +253 -0
- package/dist/switchbotClient.js.map +1 -0
- package/dist/utils.d.ts +36 -82
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +40 -786
- package/dist/utils.js.map +1 -1
- package/docs/assets/highlight.css +21 -0
- package/docs/assets/icons.js +1 -1
- package/docs/assets/icons.svg +1 -1
- package/docs/assets/main.js +2 -2
- package/docs/assets/style.css +3 -3
- package/docs/index.html +103 -13
- package/docs/variables/default.html +1 -1
- package/eslint.config.js +7 -8
- package/nodemon.json +2 -2
- package/package.json +36 -32
- package/scripts/build-ui.js +36 -0
- package/scripts/e2e/README.md +25 -0
- package/scripts/e2e/curtain-e2e.sh +70 -0
- package/scripts/e2e/fan-e2e.sh +75 -0
- package/scripts/e2e/light-advanced-e2e.sh +97 -0
- package/scripts/e2e/light-e2e.sh +75 -0
- package/scripts/e2e/list-accessories.sh +19 -0
- package/scripts/e2e/lock-e2e.sh +65 -0
- package/scripts/free-dev-ports.mjs +105 -0
- package/scripts/generate-matter-maps.js +60 -0
- package/scripts/run-e2e-local.sh +14 -0
- package/scripts/sync-device-types.mjs +28 -0
- package/src/device-types.ts +261 -0
- package/src/deviceFactory.ts +208 -0
- package/src/devices/deviceBase.ts +141 -0
- package/src/devices/genericDevice.ts +1345 -0
- package/src/errors.ts +43 -0
- package/src/homebridge-ui/endpoints/config.ts +126 -0
- package/src/homebridge-ui/endpoints/credentials.ts +74 -0
- package/src/homebridge-ui/endpoints/devices.ts +464 -0
- package/src/homebridge-ui/endpoints/discovery.ts +233 -0
- package/src/homebridge-ui/public/css/styles.css +447 -0
- package/src/homebridge-ui/public/index.html +144 -248
- package/src/homebridge-ui/public/js/api.ts +279 -0
- package/src/homebridge-ui/public/js/app.ts +23 -0
- package/src/homebridge-ui/public/js/constants.ts +1 -0
- package/src/homebridge-ui/public/js/credentials.ts +100 -0
- package/src/homebridge-ui/public/js/devices-delete.ts +236 -0
- package/src/homebridge-ui/public/js/devices.ts +114 -0
- package/src/homebridge-ui/public/js/discovery.ts +1492 -0
- package/src/homebridge-ui/public/js/logger.ts +11 -0
- package/src/homebridge-ui/public/js/modal.ts +28 -0
- package/src/homebridge-ui/public/js/modals.ts +546 -0
- package/src/homebridge-ui/public/js/render.ts +1026 -0
- package/src/homebridge-ui/public/js/toast.ts +37 -0
- package/src/homebridge-ui/public/js/types.ts +26 -0
- package/src/homebridge-ui/server.ts +11 -43
- package/src/homebridge-ui/utils/config-parser.ts +108 -0
- package/src/homebridge-ui/utils/device-migration.ts +144 -0
- package/src/homebridge-ui/utils/logger.ts +17 -0
- package/src/index.ts +1 -3
- package/src/platform.ts +1601 -0
- package/src/settings.ts +12 -277
- package/src/switchbotClient.ts +251 -0
- package/src/utils.ts +48 -812
- package/test/accessory-restore.spec.ts +73 -0
- package/test/device-mapping.spec.ts +37 -0
- package/test/deviceFactory.spec.ts +18 -0
- package/test/e2e/run-e2e.spec.ts +52 -0
- package/test/fan-swing.spec.ts +29 -0
- package/test/helpers/matter-harness.ts +53 -0
- package/test/lock-users.spec.ts +44 -0
- package/test/matter-childbridge.spec.ts +59 -0
- package/test/matter-descriptors.spec.ts +110 -0
- package/test/matter-device-state.spec.ts +101 -0
- package/test/matter-integration.spec.ts +136 -0
- package/test/platform.integration.spec.ts +55 -0
- package/test/switchbot-client-debounce.spec.ts +131 -0
- package/test/switchbot-client-openapi.spec.ts +56 -0
- package/test/switchbotClient.spec.ts +10 -0
- package/test/utils.spec.ts +36 -0
- package/todo/COMPLETED.md +542 -0
- package/todo/README.md +59 -0
- package/todo/TODO.md +190 -0
- package/todo/mockups/filtering-sorting.svg +112 -0
- package/todo/mockups/modal-switchbot-theme.svg +66 -0
- package/todo/mockups/signal-strength-visualization.svg +94 -0
- package/vitest.config.ts +7 -0
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/clover.xml +0 -15847
- package/coverage/coverage-final.json +0 -42
- package/coverage/docs/assets/dmt/dmt-component-data.js.html +0 -85
- package/coverage/docs/assets/dmt/dmt-components.js.html +0 -286
- package/coverage/docs/assets/dmt/index.html +0 -131
- package/coverage/docs/assets/hierarchy.js.html +0 -85
- package/coverage/docs/assets/icons.js.html +0 -136
- package/coverage/docs/assets/index.html +0 -146
- package/coverage/docs/assets/main.js.html +0 -265
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -191
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
- package/coverage/src/device/blindtilt.ts.html +0 -3238
- package/coverage/src/device/bot.ts.html +0 -2803
- package/coverage/src/device/ceilinglight.ts.html +0 -2338
- package/coverage/src/device/colorbulb.ts.html +0 -2824
- package/coverage/src/device/contact.ts.html +0 -1465
- package/coverage/src/device/curtain.ts.html +0 -2869
- package/coverage/src/device/device.ts.html +0 -2500
- package/coverage/src/device/fan.ts.html +0 -2242
- package/coverage/src/device/hub.ts.html +0 -1408
- package/coverage/src/device/humidifier.ts.html +0 -2116
- package/coverage/src/device/index.html +0 -416
- package/coverage/src/device/iosensor.ts.html +0 -1375
- package/coverage/src/device/lightstrip.ts.html +0 -2617
- package/coverage/src/device/lock.ts.html +0 -1963
- package/coverage/src/device/meter.ts.html +0 -1372
- package/coverage/src/device/meterplus.ts.html +0 -1384
- package/coverage/src/device/meterpro.ts.html +0 -1618
- package/coverage/src/device/motion.ts.html +0 -1264
- package/coverage/src/device/plug.ts.html +0 -1372
- package/coverage/src/device/relayswitch.ts.html +0 -2284
- package/coverage/src/device/robotvacuumcleaner.ts.html +0 -1810
- package/coverage/src/device/waterdetector.ts.html +0 -1294
- package/coverage/src/homebridge-ui/index.html +0 -116
- package/coverage/src/homebridge-ui/server.ts.html +0 -229
- package/coverage/src/index.html +0 -161
- package/coverage/src/index.ts.html +0 -124
- package/coverage/src/irdevice/airconditioner.ts.html +0 -1687
- package/coverage/src/irdevice/airpurifier.ts.html +0 -844
- package/coverage/src/irdevice/camera.ts.html +0 -475
- package/coverage/src/irdevice/fan.ts.html +0 -766
- package/coverage/src/irdevice/index.html +0 -251
- package/coverage/src/irdevice/irdevice.ts.html +0 -1117
- package/coverage/src/irdevice/light.ts.html +0 -826
- package/coverage/src/irdevice/other.ts.html +0 -2458
- package/coverage/src/irdevice/tv.ts.html +0 -1222
- package/coverage/src/irdevice/vacuumcleaner.ts.html +0 -466
- package/coverage/src/irdevice/waterheater.ts.html +0 -469
- package/coverage/src/platform.ts.html +0 -8776
- package/coverage/src/settings.ts.html +0 -934
- package/coverage/src/utils.ts.html +0 -2092
- package/dist/baseMatterAccessory.test.d.ts +0 -2
- package/dist/baseMatterAccessory.test.d.ts.map +0 -1
- package/dist/baseMatterAccessory.test.js +0 -71
- package/dist/baseMatterAccessory.test.js.map +0 -1
- package/dist/devices-hap/airpurifier.d.ts +0 -54
- package/dist/devices-hap/airpurifier.d.ts.map +0 -1
- package/dist/devices-hap/airpurifier.js +0 -527
- package/dist/devices-hap/airpurifier.js.map +0 -1
- package/dist/devices-hap/blindtilt.d.ts +0 -90
- package/dist/devices-hap/blindtilt.d.ts.map +0 -1
- package/dist/devices-hap/blindtilt.js +0 -974
- package/dist/devices-hap/blindtilt.js.map +0 -1
- package/dist/devices-hap/bot.d.ts +0 -102
- package/dist/devices-hap/bot.d.ts.map +0 -1
- package/dist/devices-hap/bot.js +0 -811
- package/dist/devices-hap/bot.js.map +0 -1
- package/dist/devices-hap/ceilinglight.d.ts +0 -85
- package/dist/devices-hap/ceilinglight.d.ts.map +0 -1
- package/dist/devices-hap/ceilinglight.js +0 -701
- package/dist/devices-hap/ceilinglight.js.map +0 -1
- package/dist/devices-hap/colorbulb.d.ts +0 -88
- package/dist/devices-hap/colorbulb.d.ts.map +0 -1
- package/dist/devices-hap/colorbulb.js +0 -881
- package/dist/devices-hap/colorbulb.js.map +0 -1
- package/dist/devices-hap/contact.d.ts +0 -44
- package/dist/devices-hap/contact.d.ts.map +0 -1
- package/dist/devices-hap/contact.js +0 -409
- package/dist/devices-hap/contact.js.map +0 -1
- package/dist/devices-hap/curtain.d.ts +0 -73
- package/dist/devices-hap/curtain.d.ts.map +0 -1
- package/dist/devices-hap/curtain.js +0 -869
- package/dist/devices-hap/curtain.js.map +0 -1
- package/dist/devices-hap/device.d.ts +0 -98
- package/dist/devices-hap/device.d.ts.map +0 -1
- package/dist/devices-hap/device.js +0 -749
- package/dist/devices-hap/device.js.map +0 -1
- package/dist/devices-hap/fan.d.ts +0 -69
- package/dist/devices-hap/fan.d.ts.map +0 -1
- package/dist/devices-hap/fan.js +0 -649
- package/dist/devices-hap/fan.js.map +0 -1
- package/dist/devices-hap/hub.d.ts +0 -37
- package/dist/devices-hap/hub.d.ts.map +0 -1
- package/dist/devices-hap/hub.js +0 -392
- package/dist/devices-hap/hub.js.map +0 -1
- package/dist/devices-hap/humidifier.d.ts +0 -68
- package/dist/devices-hap/humidifier.d.ts.map +0 -1
- package/dist/devices-hap/humidifier.js +0 -628
- package/dist/devices-hap/humidifier.js.map +0 -1
- package/dist/devices-hap/iosensor.d.ts +0 -42
- package/dist/devices-hap/iosensor.d.ts.map +0 -1
- package/dist/devices-hap/iosensor.js +0 -382
- package/dist/devices-hap/iosensor.js.map +0 -1
- package/dist/devices-hap/lightstrip.d.ts +0 -79
- package/dist/devices-hap/lightstrip.d.ts.map +0 -1
- package/dist/devices-hap/lightstrip.js +0 -797
- package/dist/devices-hap/lightstrip.js.map +0 -1
- package/dist/devices-hap/lock.d.ts +0 -53
- package/dist/devices-hap/lock.d.ts.map +0 -1
- package/dist/devices-hap/lock.js +0 -561
- package/dist/devices-hap/lock.js.map +0 -1
- package/dist/devices-hap/meter.d.ts +0 -37
- package/dist/devices-hap/meter.d.ts.map +0 -1
- package/dist/devices-hap/meter.js +0 -379
- package/dist/devices-hap/meter.js.map +0 -1
- package/dist/devices-hap/meterplus.d.ts +0 -42
- package/dist/devices-hap/meterplus.d.ts.map +0 -1
- package/dist/devices-hap/meterplus.js +0 -384
- package/dist/devices-hap/meterplus.js.map +0 -1
- package/dist/devices-hap/meterpro.d.ts +0 -43
- package/dist/devices-hap/meterpro.d.ts.map +0 -1
- package/dist/devices-hap/meterpro.js +0 -468
- package/dist/devices-hap/meterpro.js.map +0 -1
- package/dist/devices-hap/motion.d.ts +0 -42
- package/dist/devices-hap/motion.d.ts.map +0 -1
- package/dist/devices-hap/motion.js +0 -345
- package/dist/devices-hap/motion.js.map +0 -1
- package/dist/devices-hap/plug.d.ts +0 -49
- package/dist/devices-hap/plug.d.ts.map +0 -1
- package/dist/devices-hap/plug.js +0 -395
- package/dist/devices-hap/plug.js.map +0 -1
- package/dist/devices-hap/relayswitch.d.ts +0 -96
- package/dist/devices-hap/relayswitch.d.ts.map +0 -1
- package/dist/devices-hap/relayswitch.js +0 -642
- package/dist/devices-hap/relayswitch.js.map +0 -1
- package/dist/devices-hap/robotvacuumcleaner.d.ts +0 -54
- package/dist/devices-hap/robotvacuumcleaner.d.ts.map +0 -1
- package/dist/devices-hap/robotvacuumcleaner.js +0 -523
- package/dist/devices-hap/robotvacuumcleaner.js.map +0 -1
- package/dist/devices-hap/waterdetector.d.ts +0 -41
- package/dist/devices-hap/waterdetector.d.ts.map +0 -1
- package/dist/devices-hap/waterdetector.js +0 -356
- package/dist/devices-hap/waterdetector.js.map +0 -1
- package/dist/devices-matter/BaseMatterAccessory.d.ts +0 -78
- package/dist/devices-matter/BaseMatterAccessory.d.ts.map +0 -1
- package/dist/devices-matter/BaseMatterAccessory.js +0 -220
- package/dist/devices-matter/BaseMatterAccessory.js.map +0 -1
- package/dist/devices-matter/ColorLightAccessory.d.ts +0 -20
- package/dist/devices-matter/ColorLightAccessory.d.ts.map +0 -1
- package/dist/devices-matter/ColorLightAccessory.js +0 -95
- package/dist/devices-matter/ColorLightAccessory.js.map +0 -1
- package/dist/devices-matter/ColorTemperatureLightAccessory.d.ts +0 -18
- package/dist/devices-matter/ColorTemperatureLightAccessory.d.ts.map +0 -1
- package/dist/devices-matter/ColorTemperatureLightAccessory.js +0 -76
- package/dist/devices-matter/ColorTemperatureLightAccessory.js.map +0 -1
- package/dist/devices-matter/ContactSensorAccessory.d.ts +0 -12
- package/dist/devices-matter/ContactSensorAccessory.d.ts.map +0 -1
- package/dist/devices-matter/ContactSensorAccessory.js +0 -34
- package/dist/devices-matter/ContactSensorAccessory.js.map +0 -1
- package/dist/devices-matter/DimmableLightAccessory.d.ts +0 -58
- package/dist/devices-matter/DimmableLightAccessory.d.ts.map +0 -1
- package/dist/devices-matter/DimmableLightAccessory.js +0 -167
- package/dist/devices-matter/DimmableLightAccessory.js.map +0 -1
- package/dist/devices-matter/DoorLockAccessory.d.ts +0 -14
- package/dist/devices-matter/DoorLockAccessory.d.ts.map +0 -1
- package/dist/devices-matter/DoorLockAccessory.js +0 -50
- package/dist/devices-matter/DoorLockAccessory.js.map +0 -1
- package/dist/devices-matter/ExtendedColorLightAccessory.d.ts +0 -21
- package/dist/devices-matter/ExtendedColorLightAccessory.d.ts.map +0 -1
- package/dist/devices-matter/ExtendedColorLightAccessory.js +0 -106
- package/dist/devices-matter/ExtendedColorLightAccessory.js.map +0 -1
- package/dist/devices-matter/FanAccessory.d.ts +0 -16
- package/dist/devices-matter/FanAccessory.d.ts.map +0 -1
- package/dist/devices-matter/FanAccessory.js +0 -81
- package/dist/devices-matter/FanAccessory.js.map +0 -1
- package/dist/devices-matter/HumiditySensorAccessory.d.ts +0 -12
- package/dist/devices-matter/HumiditySensorAccessory.d.ts.map +0 -1
- package/dist/devices-matter/HumiditySensorAccessory.js +0 -34
- package/dist/devices-matter/HumiditySensorAccessory.js.map +0 -1
- package/dist/devices-matter/LeakSensorAccessory.d.ts +0 -12
- package/dist/devices-matter/LeakSensorAccessory.d.ts.map +0 -1
- package/dist/devices-matter/LeakSensorAccessory.js +0 -33
- package/dist/devices-matter/LeakSensorAccessory.js.map +0 -1
- package/dist/devices-matter/LightSensorAccessory.d.ts +0 -12
- package/dist/devices-matter/LightSensorAccessory.d.ts.map +0 -1
- package/dist/devices-matter/LightSensorAccessory.js +0 -34
- package/dist/devices-matter/LightSensorAccessory.js.map +0 -1
- package/dist/devices-matter/OccupancySensorAccessory.d.ts +0 -12
- package/dist/devices-matter/OccupancySensorAccessory.d.ts.map +0 -1
- package/dist/devices-matter/OccupancySensorAccessory.js +0 -39
- package/dist/devices-matter/OccupancySensorAccessory.js.map +0 -1
- package/dist/devices-matter/OnOffLightAccessory.d.ts +0 -38
- package/dist/devices-matter/OnOffLightAccessory.d.ts.map +0 -1
- package/dist/devices-matter/OnOffLightAccessory.js +0 -110
- package/dist/devices-matter/OnOffLightAccessory.js.map +0 -1
- package/dist/devices-matter/OnOffOutletAccessory.d.ts +0 -14
- package/dist/devices-matter/OnOffOutletAccessory.d.ts.map +0 -1
- package/dist/devices-matter/OnOffOutletAccessory.js +0 -43
- package/dist/devices-matter/OnOffOutletAccessory.js.map +0 -1
- package/dist/devices-matter/OnOffSwitchAccessory.d.ts +0 -14
- package/dist/devices-matter/OnOffSwitchAccessory.d.ts.map +0 -1
- package/dist/devices-matter/OnOffSwitchAccessory.js +0 -42
- package/dist/devices-matter/OnOffSwitchAccessory.js.map +0 -1
- package/dist/devices-matter/RoboticVacuumAccessory.d.ts +0 -68
- package/dist/devices-matter/RoboticVacuumAccessory.d.ts.map +0 -1
- package/dist/devices-matter/RoboticVacuumAccessory.js +0 -334
- package/dist/devices-matter/RoboticVacuumAccessory.js.map +0 -1
- package/dist/devices-matter/SmokeCOAlarmAccessory.d.ts +0 -11
- package/dist/devices-matter/SmokeCOAlarmAccessory.d.ts.map +0 -1
- package/dist/devices-matter/SmokeCOAlarmAccessory.js +0 -49
- package/dist/devices-matter/SmokeCOAlarmAccessory.js.map +0 -1
- package/dist/devices-matter/TemperatureSensorAccessory.d.ts +0 -12
- package/dist/devices-matter/TemperatureSensorAccessory.d.ts.map +0 -1
- package/dist/devices-matter/TemperatureSensorAccessory.js +0 -36
- package/dist/devices-matter/TemperatureSensorAccessory.js.map +0 -1
- package/dist/devices-matter/ThermostatAccessory.d.ts +0 -19
- package/dist/devices-matter/ThermostatAccessory.d.ts.map +0 -1
- package/dist/devices-matter/ThermostatAccessory.js +0 -95
- package/dist/devices-matter/ThermostatAccessory.js.map +0 -1
- package/dist/devices-matter/VenetianBlindAccessory.d.ts +0 -19
- package/dist/devices-matter/VenetianBlindAccessory.d.ts.map +0 -1
- package/dist/devices-matter/VenetianBlindAccessory.js +0 -99
- package/dist/devices-matter/VenetianBlindAccessory.js.map +0 -1
- package/dist/devices-matter/WindowBlindAccessory.d.ts +0 -17
- package/dist/devices-matter/WindowBlindAccessory.d.ts.map +0 -1
- package/dist/devices-matter/WindowBlindAccessory.js +0 -80
- package/dist/devices-matter/WindowBlindAccessory.js.map +0 -1
- package/dist/devices-matter/custom/PowerStripAccessory.d.ts +0 -97
- package/dist/devices-matter/custom/PowerStripAccessory.d.ts.map +0 -1
- package/dist/devices-matter/custom/PowerStripAccessory.js +0 -265
- package/dist/devices-matter/custom/PowerStripAccessory.js.map +0 -1
- package/dist/devices-matter/custom/index.d.ts +0 -8
- package/dist/devices-matter/custom/index.d.ts.map +0 -1
- package/dist/devices-matter/custom/index.js +0 -8
- package/dist/devices-matter/custom/index.js.map +0 -1
- package/dist/devices-matter/index.d.ts +0 -29
- package/dist/devices-matter/index.d.ts.map +0 -1
- package/dist/devices-matter/index.js +0 -28
- package/dist/devices-matter/index.js.map +0 -1
- package/dist/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -19
- package/dist/index.test.js.map +0 -1
- package/dist/irdevice/airconditioner.d.ts +0 -61
- package/dist/irdevice/airconditioner.d.ts.map +0 -1
- package/dist/irdevice/airconditioner.js +0 -472
- package/dist/irdevice/airconditioner.js.map +0 -1
- package/dist/irdevice/airpurifier.d.ts +0 -50
- package/dist/irdevice/airpurifier.d.ts.map +0 -1
- package/dist/irdevice/airpurifier.js +0 -213
- package/dist/irdevice/airpurifier.js.map +0 -1
- package/dist/irdevice/camera.d.ts +0 -32
- package/dist/irdevice/camera.d.ts.map +0 -1
- package/dist/irdevice/camera.js +0 -107
- package/dist/irdevice/camera.js.map +0 -1
- package/dist/irdevice/fan.d.ts +0 -36
- package/dist/irdevice/fan.d.ts.map +0 -1
- package/dist/irdevice/fan.js +0 -200
- package/dist/irdevice/fan.js.map +0 -1
- package/dist/irdevice/irdevice.d.ts +0 -68
- package/dist/irdevice/irdevice.d.ts.map +0 -1
- package/dist/irdevice/irdevice.js +0 -298
- package/dist/irdevice/irdevice.js.map +0 -1
- package/dist/irdevice/light.d.ts +0 -36
- package/dist/irdevice/light.d.ts.map +0 -1
- package/dist/irdevice/light.js +0 -206
- package/dist/irdevice/light.js.map +0 -1
- package/dist/irdevice/other.d.ts +0 -57
- package/dist/irdevice/other.d.ts.map +0 -1
- package/dist/irdevice/other.js +0 -778
- package/dist/irdevice/other.js.map +0 -1
- package/dist/irdevice/tv.d.ts +0 -45
- package/dist/irdevice/tv.d.ts.map +0 -1
- package/dist/irdevice/tv.js +0 -327
- package/dist/irdevice/tv.js.map +0 -1
- package/dist/irdevice/vacuumcleaner.d.ts +0 -28
- package/dist/irdevice/vacuumcleaner.d.ts.map +0 -1
- package/dist/irdevice/vacuumcleaner.js +0 -104
- package/dist/irdevice/vacuumcleaner.js.map +0 -1
- package/dist/irdevice/waterheater.d.ts +0 -30
- package/dist/irdevice/waterheater.d.ts.map +0 -1
- package/dist/irdevice/waterheater.js +0 -105
- package/dist/irdevice/waterheater.js.map +0 -1
- package/dist/platform-hap.d.ts +0 -149
- package/dist/platform-hap.d.ts.map +0 -1
- package/dist/platform-hap.js +0 -2861
- package/dist/platform-hap.js.map +0 -1
- package/dist/platform-matter.d.ts +0 -120
- package/dist/platform-matter.d.ts.map +0 -1
- package/dist/platform-matter.js +0 -999
- package/dist/platform-matter.js.map +0 -1
- package/dist/utils.test.d.ts +0 -2
- package/dist/utils.test.d.ts.map +0 -1
- package/dist/utils.test.js +0 -95
- package/dist/utils.test.js.map +0 -1
- package/dist/verifyconfig.test.d.ts +0 -2
- package/dist/verifyconfig.test.d.ts.map +0 -1
- package/dist/verifyconfig.test.js +0 -167
- package/dist/verifyconfig.test.js.map +0 -1
- package/src/baseMatterAccessory.test.ts +0 -88
- package/src/custom.d.ts +0 -7
- package/src/devices-hap/airpurifier.ts +0 -563
- package/src/devices-hap/blindtilt.ts +0 -1049
- package/src/devices-hap/bot.ts +0 -900
- package/src/devices-hap/ceilinglight.ts +0 -742
- package/src/devices-hap/colorbulb.ts +0 -904
- package/src/devices-hap/contact.ts +0 -457
- package/src/devices-hap/curtain.ts +0 -944
- package/src/devices-hap/device.ts +0 -811
- package/src/devices-hap/fan.ts +0 -711
- package/src/devices-hap/hub.ts +0 -439
- package/src/devices-hap/humidifier.ts +0 -669
- package/src/devices-hap/iosensor.ts +0 -427
- package/src/devices-hap/lightstrip.ts +0 -836
- package/src/devices-hap/lock.ts +0 -620
- package/src/devices-hap/meter.ts +0 -426
- package/src/devices-hap/meterplus.ts +0 -430
- package/src/devices-hap/meterpro.ts +0 -522
- package/src/devices-hap/motion.ts +0 -390
- package/src/devices-hap/plug.ts +0 -423
- package/src/devices-hap/relayswitch.ts +0 -727
- package/src/devices-hap/robotvacuumcleaner.ts +0 -568
- package/src/devices-hap/waterdetector.ts +0 -400
- package/src/devices-matter/BaseMatterAccessory.ts +0 -249
- package/src/devices-matter/ColorLightAccessory.ts +0 -110
- package/src/devices-matter/ColorTemperatureLightAccessory.ts +0 -90
- package/src/devices-matter/ContactSensorAccessory.ts +0 -41
- package/src/devices-matter/DimmableLightAccessory.ts +0 -192
- package/src/devices-matter/DoorLockAccessory.ts +0 -60
- package/src/devices-matter/ExtendedColorLightAccessory.ts +0 -122
- package/src/devices-matter/FanAccessory.ts +0 -95
- package/src/devices-matter/HumiditySensorAccessory.ts +0 -41
- package/src/devices-matter/LeakSensorAccessory.ts +0 -40
- package/src/devices-matter/LightSensorAccessory.ts +0 -41
- package/src/devices-matter/OccupancySensorAccessory.ts +0 -48
- package/src/devices-matter/OnOffLightAccessory.ts +0 -125
- package/src/devices-matter/OnOffOutletAccessory.ts +0 -51
- package/src/devices-matter/OnOffSwitchAccessory.ts +0 -51
- package/src/devices-matter/RoboticVacuumAccessory.ts +0 -407
- package/src/devices-matter/SmokeCOAlarmAccessory.ts +0 -59
- package/src/devices-matter/TemperatureSensorAccessory.ts +0 -43
- package/src/devices-matter/ThermostatAccessory.ts +0 -110
- package/src/devices-matter/VenetianBlindAccessory.ts +0 -115
- package/src/devices-matter/WindowBlindAccessory.ts +0 -92
- package/src/devices-matter/custom/PowerStripAccessory.ts +0 -309
- package/src/devices-matter/custom/index.ts +0 -8
- package/src/devices-matter/index.ts +0 -29
- package/src/index.test.ts +0 -24
- package/src/irdevice/airconditioner.ts +0 -533
- package/src/irdevice/airpurifier.ts +0 -252
- package/src/irdevice/camera.ts +0 -129
- package/src/irdevice/fan.ts +0 -226
- package/src/irdevice/irdevice.ts +0 -344
- package/src/irdevice/light.ts +0 -246
- package/src/irdevice/other.ts +0 -790
- package/src/irdevice/tv.ts +0 -378
- package/src/irdevice/vacuumcleaner.ts +0 -126
- package/src/irdevice/waterheater.ts +0 -127
- package/src/platform-hap.ts +0 -2997
- package/src/platform-matter.ts +0 -1124
- package/src/utils.test.ts +0 -96
- package/src/verifyconfig.test.ts +0 -197
package/todo/TODO.md
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# SwitchBot Plugin TODO List (2026)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
#### 8. Batch Import
|
|
5
|
+
|
|
6
|
+
- [x] Add checkboxes to select multiple devices
|
|
7
|
+
- [x] Add "Add Selected to Config" button
|
|
8
|
+
- [x] Implement bulk configuration with smart defaults
|
|
9
|
+
|
|
10
|
+
- [x] Show firmware update available indicators
|
|
11
|
+
- [x] Show offline/unreachable warnings
|
|
12
|
+
- [x] Add "Needs Attention" section at top
|
|
13
|
+
- [ ] Implement battery level trending (if historical data available)
|
|
14
|
+
|
|
15
|
+
#### 10. Export/Import Discovery
|
|
16
|
+
|
|
17
|
+
- [ ] Add "Export Results" button (JSON format)
|
|
18
|
+
- [ ] Add "Import Results" for comparison or troubleshooting
|
|
19
|
+
- [ ] Share with support for debugging
|
|
20
|
+
- [ ] Compare current vs previous discovery (show differences)
|
|
21
|
+
- [ ] Generate discovery report (formatted summary)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Bug Fixes & Technical Debt
|
|
26
|
+
|
|
27
|
+
### Testing & Quality Assurance
|
|
28
|
+
|
|
29
|
+
- [ ] **Test discovery with real hardware**
|
|
30
|
+
- [ ] Test BLE discovery with nearby devices
|
|
31
|
+
- [ ] Test OpenAPI discovery with cloud-registered devices
|
|
32
|
+
- [ ] Test with mixed BLE+API devices
|
|
33
|
+
- [ ] Test connection type badge display
|
|
34
|
+
- [ ] Verify deduplication works correctly
|
|
35
|
+
|
|
36
|
+
- [ ] **Add error handling improvements**
|
|
37
|
+
- [ ] Better error messages for users
|
|
38
|
+
- [ ] Retry logic with exponential backoff
|
|
39
|
+
- [ ] Graceful degradation when BLE unavailable
|
|
40
|
+
- [ ] Network timeout handling
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Documentation
|
|
45
|
+
|
|
46
|
+
- [ ] **Update README with discovery features**
|
|
47
|
+
- [ ] Document BLE vs OpenAPI discovery
|
|
48
|
+
- [ ] Add screenshots of new UI features
|
|
49
|
+
- [ ] Explain connection type badges
|
|
50
|
+
- [ ] Add troubleshooting guide for discovery issues
|
|
51
|
+
|
|
52
|
+
- [ ] **Create developer documentation**
|
|
53
|
+
- [ ] Document new modular structure
|
|
54
|
+
- [ ] API documentation for endpoints
|
|
55
|
+
- [ ] Contributing guidelines for UI changes
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Priority Summary
|
|
60
|
+
|
|
61
|
+
### Must Do (Next Release)
|
|
62
|
+
|
|
63
|
+
1. Better Loading States
|
|
64
|
+
|
|
65
|
+
### Should Do (Soon)
|
|
66
|
+
|
|
67
|
+
1. Connection Recommendations
|
|
68
|
+
2. Device Grouping
|
|
69
|
+
3. Test discovery with real hardware
|
|
70
|
+
4. Update README with new features
|
|
71
|
+
|
|
72
|
+
### Nice to Have (Future)
|
|
73
|
+
|
|
74
|
+
1. Configurable BLE Scan
|
|
75
|
+
2. Discovery History/Cache
|
|
76
|
+
3. Connection Testing
|
|
77
|
+
4. Batch Import
|
|
78
|
+
5. Device Health Dashboard
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Notes
|
|
83
|
+
|
|
84
|
+
- See [COMPLETED.md](COMPLETED.md) for all completed features
|
|
85
|
+
- UI mockups available in [mockups/](mockups/) directory
|
|
86
|
+
- Consider user feedback on most-wanted features
|
|
87
|
+
- Test all changes with real SwitchBot devices
|
|
88
|
+
- Maintain backwards compatibility with existing configs
|
|
89
|
+
- Keep UI responsive and fast (< 500ms interactions)
|
|
90
|
+
- Follow Homebridge UI/UX conventions
|
|
91
|
+
# Integration: node-switchbot Beta Updates (March 2026)
|
|
92
|
+
|
|
93
|
+
## Tasks to Integrate Latest node-switchbot Features
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
## Next Features
|
|
97
|
+
|
|
98
|
+
### Advanced Features (Priority: Low)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
#### 8. Batch Import
|
|
104
|
+
|
|
105
|
+
- [ ] Add checkboxes to select multiple devices
|
|
106
|
+
- [ ] Add "Add Selected to Config" button
|
|
107
|
+
- [ ] Implement bulk configuration with smart defaults
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
- [x] Show firmware update available indicators
|
|
111
|
+
- [x] Show offline/unreachable warnings
|
|
112
|
+
- [ ] Add "Needs Attention" section at top
|
|
113
|
+
- [ ] Implement battery level trending (if historical data available)
|
|
114
|
+
|
|
115
|
+
#### 10. Export/Import Discovery
|
|
116
|
+
|
|
117
|
+
- [ ] Add "Export Results" button (JSON format)
|
|
118
|
+
- [ ] Add "Import Results" for comparison or troubleshooting
|
|
119
|
+
- [ ] Share with support for debugging
|
|
120
|
+
- [ ] Compare current vs previous discovery (show differences)
|
|
121
|
+
- [ ] Generate discovery report (formatted summary)
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Bug Fixes & Technical Debt
|
|
126
|
+
|
|
127
|
+
### Testing & Quality Assurance
|
|
128
|
+
|
|
129
|
+
- [ ] **Test discovery with real hardware**
|
|
130
|
+
- [ ] Test BLE discovery with nearby devices
|
|
131
|
+
- [ ] Test OpenAPI discovery with cloud-registered devices
|
|
132
|
+
- [ ] Test with mixed BLE+API devices
|
|
133
|
+
- [ ] Test connection type badge display
|
|
134
|
+
- [ ] Verify deduplication works correctly
|
|
135
|
+
|
|
136
|
+
- [ ] **Add error handling improvements**
|
|
137
|
+
- [ ] Better error messages for users
|
|
138
|
+
- [ ] Retry logic with exponential backoff
|
|
139
|
+
- [ ] Graceful degradation when BLE unavailable
|
|
140
|
+
- [ ] Network timeout handling
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Documentation
|
|
145
|
+
|
|
146
|
+
- [ ] **Update README with discovery features**
|
|
147
|
+
- [ ] Document BLE vs OpenAPI discovery
|
|
148
|
+
- [ ] Add screenshots of new UI features
|
|
149
|
+
- [ ] Explain connection type badges
|
|
150
|
+
- [ ] Add troubleshooting guide for discovery issues
|
|
151
|
+
|
|
152
|
+
- [ ] **Create developer documentation**
|
|
153
|
+
- [ ] Document new modular structure
|
|
154
|
+
- [ ] API documentation for endpoints
|
|
155
|
+
- [ ] Contributing guidelines for UI changes
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Priority Summary
|
|
160
|
+
|
|
161
|
+
### Must Do (Next Release)
|
|
162
|
+
|
|
163
|
+
1. Better Loading States
|
|
164
|
+
|
|
165
|
+
### Should Do (Soon)
|
|
166
|
+
|
|
167
|
+
1. Connection Recommendations
|
|
168
|
+
2. Device Grouping
|
|
169
|
+
3. Test discovery with real hardware
|
|
170
|
+
4. Update README with new features
|
|
171
|
+
|
|
172
|
+
### Nice to Have (Future)
|
|
173
|
+
|
|
174
|
+
1. Configurable BLE Scan
|
|
175
|
+
2. Discovery History/Cache
|
|
176
|
+
3. Connection Testing
|
|
177
|
+
4. Batch Import
|
|
178
|
+
5. Device Health Dashboard
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Notes
|
|
183
|
+
|
|
184
|
+
- See [COMPLETED.md](COMPLETED.md) for all completed features
|
|
185
|
+
- UI mockups available in [mockups/](mockups/) directory
|
|
186
|
+
- Consider user feedback on most-wanted features
|
|
187
|
+
- Test all changes with real SwitchBot devices
|
|
188
|
+
- Maintain backwards compatibility with existing configs
|
|
189
|
+
- Keep UI responsive and fast (< 500ms interactions)
|
|
190
|
+
- Follow Homebridge UI/UX conventions
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<svg width="700" height="500" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- Background -->
|
|
3
|
+
<rect width="700" height="500" fill="#f5f5f5"/>
|
|
4
|
+
|
|
5
|
+
<!-- Title -->
|
|
6
|
+
<text x="20" y="30" font-family="system-ui, -apple-system, Arial" font-size="18" font-weight="600" fill="#1a1a1a">
|
|
7
|
+
Discovery Results - Filtering & Sorting
|
|
8
|
+
</text>
|
|
9
|
+
|
|
10
|
+
<!-- Main Container -->
|
|
11
|
+
<rect x="20" y="50" width="660" height="430" rx="8" fill="#fff" stroke="#ddd" stroke-width="1"/>
|
|
12
|
+
|
|
13
|
+
<!-- Filter Buttons -->
|
|
14
|
+
<g transform="translate(40, 75)">
|
|
15
|
+
<text x="0" y="0" font-family="system-ui" font-size="12" font-weight="600" fill="#666">Filter by Connection:</text>
|
|
16
|
+
|
|
17
|
+
<!-- All Button (Active) -->
|
|
18
|
+
<rect x="0" y="10" width="60" height="32" rx="6" fill="#ef4444"/>
|
|
19
|
+
<text x="30" y="31" font-family="system-ui" font-size="13" font-weight="500" fill="#fff" text-anchor="middle">All</text>
|
|
20
|
+
|
|
21
|
+
<!-- BLE Button -->
|
|
22
|
+
<rect x="70" y="10" width="80" height="32" rx="6" fill="#e5e7eb" stroke="#ddd" stroke-width="1"/>
|
|
23
|
+
<text x="110" y="31" font-family="system-ui" font-size="13" font-weight="500" fill="#4b5563" text-anchor="middle">BLE Only</text>
|
|
24
|
+
|
|
25
|
+
<!-- API Button -->
|
|
26
|
+
<rect x="160" y="10" width="80" height="32" rx="6" fill="#e5e7eb" stroke="#ddd" stroke-width="1"/>
|
|
27
|
+
<text x="200" y="31" font-family="system-ui" font-size="13" font-weight="500" fill="#4b5563" text-anchor="middle">API Only</text>
|
|
28
|
+
|
|
29
|
+
<!-- Both Button -->
|
|
30
|
+
<rect x="250" y="10" width="60" height="32" rx="6" fill="#e5e7eb" stroke="#ddd" stroke-width="1"/>
|
|
31
|
+
<text x="280" y="31" font-family="system-ui" font-size="13" font-weight="500" fill="#4b5563" text-anchor="middle">Both</text>
|
|
32
|
+
|
|
33
|
+
<!-- IR Button -->
|
|
34
|
+
<rect x="320" y="10" width="100" height="32" rx="6" fill="#e5e7eb" stroke="#ddd" stroke-width="1"/>
|
|
35
|
+
<text x="370" y="31" font-family="system-ui" font-size="13" font-weight="500" fill="#4b5563" text-anchor="middle">IR Devices</text>
|
|
36
|
+
</g>
|
|
37
|
+
|
|
38
|
+
<!-- Sort Dropdown and Search -->
|
|
39
|
+
<g transform="translate(40, 145)">
|
|
40
|
+
<text x="0" y="0" font-family="system-ui" font-size="12" font-weight="600" fill="#666">Sort by:</text>
|
|
41
|
+
|
|
42
|
+
<!-- Sort Dropdown -->
|
|
43
|
+
<rect x="0" y="10" width="180" height="32" rx="6" fill="#fff" stroke="#d1d5db" stroke-width="1"/>
|
|
44
|
+
<text x="10" y="31" font-family="system-ui" font-size="13" fill="#1a1a1a">Signal Strength ▼</text>
|
|
45
|
+
|
|
46
|
+
<!-- Search Box -->
|
|
47
|
+
<text x="210" y="0" font-family="system-ui" font-size="12" font-weight="600" fill="#666">Search:</text>
|
|
48
|
+
<rect x="210" y="10" width="410" height="32" rx="6" fill="#fff" stroke="#d1d5db" stroke-width="1"/>
|
|
49
|
+
<text x="220" y="31" font-family="system-ui" font-size="13" fill="#9ca3af">🔍 Search by name, ID, or type...</text>
|
|
50
|
+
</g>
|
|
51
|
+
|
|
52
|
+
<!-- Status Line -->
|
|
53
|
+
<text x="40" y="210" font-family="system-ui" font-size="12" fill="#666">
|
|
54
|
+
Showing 12 of 12 device(s)
|
|
55
|
+
</text>
|
|
56
|
+
|
|
57
|
+
<!-- Device List -->
|
|
58
|
+
<g transform="translate(40, 230)">
|
|
59
|
+
<!-- Device 1 -->
|
|
60
|
+
<rect x="0" y="0" width="620" height="50" rx="4" fill="#f9f9f9" stroke="#e0e0e0" stroke-width="1"/>
|
|
61
|
+
<text x="15" y="22" font-family="system-ui" font-size="14" font-weight="500" fill="#1a1a1a">Kitchen Hub</text>
|
|
62
|
+
<text x="15" y="38" font-family="monospace" font-size="11" fill="#666">B0E9FEC3F112 | Hub 2</text>
|
|
63
|
+
|
|
64
|
+
<!-- Signal bars - 4 bars -->
|
|
65
|
+
<g transform="translate(500, 12)">
|
|
66
|
+
<rect x="0" y="12" width="6" height="3" rx="1" fill="#10b981"/>
|
|
67
|
+
<rect x="9" y="8" width="6" height="7" rx="1" fill="#10b981"/>
|
|
68
|
+
<rect x="18" y="4" width="6" height="11" rx="1" fill="#10b981"/>
|
|
69
|
+
<rect x="27" y="0" width="6" height="15" rx="1" fill="#10b981"/>
|
|
70
|
+
</g>
|
|
71
|
+
|
|
72
|
+
<!-- Connection badge -->
|
|
73
|
+
<rect x="550" y="13" width="50" height="18" rx="4" fill="#fef3c7"/>
|
|
74
|
+
<text x="575" y="26" font-family="system-ui" font-size="10" font-weight="500" fill="#d97706" text-anchor="middle">Both</text>
|
|
75
|
+
|
|
76
|
+
<!-- Device 2 -->
|
|
77
|
+
<rect x="0" y="60" width="620" height="50" rx="4" fill="#f9f9f9" stroke="#e0e0e0" stroke-width="1"/>
|
|
78
|
+
<text x="15" y="82" font-family="system-ui" font-size="14" font-weight="500" fill="#1a1a1a">Front Door Bot</text>
|
|
79
|
+
<text x="15" y="98" font-family="monospace" font-size="11" fill="#666">84F703B32E12 | Bot</text>
|
|
80
|
+
|
|
81
|
+
<!-- Signal bars - 3 bars -->
|
|
82
|
+
<g transform="translate(500, 72)">
|
|
83
|
+
<rect x="0" y="12" width="6" height="3" rx="1" fill="#eab308"/>
|
|
84
|
+
<rect x="9" y="8" width="6" height="7" rx="1" fill="#eab308"/>
|
|
85
|
+
<rect x="18" y="4" width="6" height="11" rx="1" fill="#eab308"/>
|
|
86
|
+
<rect x="27" y="0" width="6" height="15" rx="1" fill="#e5e7eb"/>
|
|
87
|
+
</g>
|
|
88
|
+
|
|
89
|
+
<!-- Connection badge -->
|
|
90
|
+
<rect x="550" y="73" width="50" height="18" rx="4" fill="#dbeafe"/>
|
|
91
|
+
<text x="575" y="86" font-family="system-ui" font-size="10" font-weight="500" fill="#3b82f6" text-anchor="middle">BLE</text>
|
|
92
|
+
|
|
93
|
+
<!-- Device 3 -->
|
|
94
|
+
<rect x="0" y="120" width="620" height="50" rx="4" fill="#f9f9f9" stroke="#e0e0e0" stroke-width="1"/>
|
|
95
|
+
<text x="15" y="142" font-family="system-ui" font-size="14" font-weight="500" fill="#1a1a1a">Living Room TV</text>
|
|
96
|
+
<text x="15" y="158" font-family="monospace" font-size="11" fill="#666">IR-A1B2C3D4 | TV (IR)</text>
|
|
97
|
+
|
|
98
|
+
<!-- No signal bars for IR -->
|
|
99
|
+
|
|
100
|
+
<!-- Connection badge -->
|
|
101
|
+
<rect x="550" y="133" width="50" height="18" rx="4" fill="#fce7f3"/>
|
|
102
|
+
<text x="575" y="146" font-family="system-ui" font-size="10" font-weight="500" fill="#ec4899" text-anchor="middle">IR</text>
|
|
103
|
+
</g>
|
|
104
|
+
|
|
105
|
+
<!-- Feature Labels -->
|
|
106
|
+
<g transform="translate(40, 450)">
|
|
107
|
+
<text x="0" y="0" font-family="system-ui" font-size="10" font-weight="600" fill="#9ca3af">Features:</text>
|
|
108
|
+
<text x="0" y="15" font-family="system-ui" font-size="9" fill="#9ca3af">✓ Real-time search with 300ms debounce</text>
|
|
109
|
+
<text x="200" y="15" font-family="system-ui" font-size="9" fill="#9ca3af">✓ Client-side filtering (instant)</text>
|
|
110
|
+
<text x="400" y="15" font-family="system-ui" font-size="9" fill="#9ca3af">✓ localStorage persistence</text>
|
|
111
|
+
</g>
|
|
112
|
+
</svg>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<svg width="600" height="500" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- Backdrop Overlay -->
|
|
3
|
+
<rect width="600" height="500" fill="rgba(0,0,0,0.7)"/>
|
|
4
|
+
|
|
5
|
+
<!-- Modal Container -->
|
|
6
|
+
<g transform="translate(60, 80)">
|
|
7
|
+
<!-- Modal Background with Red Top Border -->
|
|
8
|
+
<rect x="0" y="4" width="480" height="370" rx="12" fill="#fff"/>
|
|
9
|
+
<rect x="0" y="0" width="480" height="4" rx="2" fill="#ef4444"/>
|
|
10
|
+
|
|
11
|
+
<!-- Box Shadow Effect -->
|
|
12
|
+
<rect x="2" y="6" width="476" height="368" rx="12" fill="none" stroke="rgba(0,0,0,0.1)" stroke-width="2"/>
|
|
13
|
+
|
|
14
|
+
<!-- Modal Header -->
|
|
15
|
+
<text x="24" y="50" font-family="system-ui, -apple-system, Arial" font-size="20" font-weight="600" fill="#ef4444">
|
|
16
|
+
Edit Device
|
|
17
|
+
</text>
|
|
18
|
+
|
|
19
|
+
<!-- Content Area -->
|
|
20
|
+
<g transform="translate(24, 80)">
|
|
21
|
+
<!-- Device Name Field -->
|
|
22
|
+
<text x="0" y="0" font-family="system-ui" font-size="13" font-weight="500" fill="#374151">Device Name</text>
|
|
23
|
+
<rect x="0" y="8" width="432" height="40" rx="6" fill="#fff" stroke="#d1d5db" stroke-width="1"/>
|
|
24
|
+
<text x="10" y="33" font-family="system-ui" font-size="14" fill="#1a1a1a">Girl's Bedroom Hub</text>
|
|
25
|
+
|
|
26
|
+
<!-- API Device Type Field (Read-only) -->
|
|
27
|
+
<text x="0" y="70" font-family="system-ui" font-size="13" font-weight="500" fill="#374151">Device Type (API - Read Only)</text>
|
|
28
|
+
<rect x="0" y="78" width="432" height="40" rx="6" fill="#f9fafb" stroke="#d1d5db" stroke-width="1"/>
|
|
29
|
+
<text x="10" y="103" font-family="system-ui" font-size="14" fill="#6b7280">Hub 2</text>
|
|
30
|
+
|
|
31
|
+
<!-- Config Device Type Dropdown -->
|
|
32
|
+
<text x="0" y="140" font-family="system-ui" font-size="13" font-weight="500" fill="#374151">Config Device Type (Override)</text>
|
|
33
|
+
<rect x="0" y="148" width="432" height="40" rx="6" fill="#fff" stroke="#d1d5db" stroke-width="1"/>
|
|
34
|
+
<text x="10" y="173" font-family="system-ui" font-size="14" fill="#1a1a1a">Hub 2 ▼</text>
|
|
35
|
+
|
|
36
|
+
<!-- Divider Line -->
|
|
37
|
+
<line x1="0" y1="220" x2="432" y2="220" stroke="rgba(0,0,0,0.1)" stroke-width="1"/>
|
|
38
|
+
|
|
39
|
+
<!-- Button Group -->
|
|
40
|
+
<g transform="translate(0, 240)">
|
|
41
|
+
<!-- Cancel Button -->
|
|
42
|
+
<rect x="0" y="0" width="100" height="40" rx="6" fill="#6b7280"/>
|
|
43
|
+
<text x="50" y="25" font-family="system-ui" font-size="14" font-weight="500" fill="#fff" text-anchor="middle">Cancel</text>
|
|
44
|
+
|
|
45
|
+
<!-- Save Button with Hover Effect -->
|
|
46
|
+
<g transform="translate(332, 0)">
|
|
47
|
+
<!-- Button Shadow -->
|
|
48
|
+
<rect x="0" y="2" width="100" height="40" rx="6" fill="rgba(239,68,68,0.2)"/>
|
|
49
|
+
<!-- Button -->
|
|
50
|
+
<rect x="0" y="0" width="100" height="40" rx="6" fill="#ef4444"/>
|
|
51
|
+
<text x="50" y="25" font-family="system-ui" font-size="14" font-weight="500" fill="#fff" text-anchor="middle">Save</text>
|
|
52
|
+
</g>
|
|
53
|
+
</g>
|
|
54
|
+
</g>
|
|
55
|
+
</g>
|
|
56
|
+
|
|
57
|
+
<!-- Design Notes -->
|
|
58
|
+
<g transform="translate(20, 470)">
|
|
59
|
+
<text x="0" y="0" font-family="system-ui" font-size="10" font-weight="600" fill="#9ca3af">Design Elements:</text>
|
|
60
|
+
<text x="100" y="0" font-family="system-ui" font-size="9" fill="#9ca3af">● 4px SwitchBot Red top accent</text>
|
|
61
|
+
<text x="270" y="0" font-family="system-ui" font-size="9" fill="#9ca3af">● 12px border-radius</text>
|
|
62
|
+
<text x="380" y="0" font-family="system-ui" font-size="9" fill="#9ca3af">● Smooth shadows</text>
|
|
63
|
+
<text x="100" y="15" font-family="system-ui" font-size="9" fill="#9ca3af">● Red title and primary button</text>
|
|
64
|
+
<text x="270" y="15" font-family="system-ui" font-size="9" fill="#9ca3af">● Gray secondary button</text>
|
|
65
|
+
</g>
|
|
66
|
+
</svg>
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<svg width="600" height="400" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- Background -->
|
|
3
|
+
<rect width="600" height="400" fill="#f5f5f5"/>
|
|
4
|
+
|
|
5
|
+
<!-- Title -->
|
|
6
|
+
<text x="20" y="30" font-family="system-ui, -apple-system, Arial" font-size="18" font-weight="600" fill="#1a1a1a">
|
|
7
|
+
Discovery Results - Signal Strength Visualization
|
|
8
|
+
</text>
|
|
9
|
+
|
|
10
|
+
<!-- Device List Container -->
|
|
11
|
+
<rect x="20" y="50" width="560" height="330" rx="8" fill="#fff" stroke="#ddd" stroke-width="1"/>
|
|
12
|
+
|
|
13
|
+
<!-- Device 1: Excellent Signal -->
|
|
14
|
+
<g transform="translate(40, 80)">
|
|
15
|
+
<text font-family="system-ui" font-size="14" font-weight="500" fill="#1a1a1a">Living Room Bot</text>
|
|
16
|
+
<text y="20" font-family="monospace" font-size="12" fill="#666">C1A2B3C4D5E6</text>
|
|
17
|
+
|
|
18
|
+
<!-- RSSI Bars - 4 bars filled (Excellent) -->
|
|
19
|
+
<g transform="translate(0, 35)">
|
|
20
|
+
<rect x="0" y="12" width="8" height="4" rx="1" fill="#10b981"/>
|
|
21
|
+
<rect x="12" y="8" width="8" height="8" rx="1" fill="#10b981"/>
|
|
22
|
+
<rect x="24" y="4" width="8" height="12" rx="1" fill="#10b981"/>
|
|
23
|
+
<rect x="36" y="0" width="8" height="16" rx="1" fill="#10b981"/>
|
|
24
|
+
</g>
|
|
25
|
+
|
|
26
|
+
<!-- Quality Badge -->
|
|
27
|
+
<rect x="60" y="35" width="80" height="20" rx="4" fill="#d1fae5"/>
|
|
28
|
+
<text x="100" y="49" font-family="system-ui" font-size="11" font-weight="500" fill="#10b981" text-anchor="middle">Excellent</text>
|
|
29
|
+
|
|
30
|
+
<!-- RSSI Value -->
|
|
31
|
+
<text x="150" y="49" font-family="monospace" font-size="11" fill="#666">-55 dBm</text>
|
|
32
|
+
|
|
33
|
+
<!-- Connection Badge -->
|
|
34
|
+
<rect x="220" y="35" width="45" height="20" rx="4" fill="#dbeafe"/>
|
|
35
|
+
<text x="242.5" y="49" font-family="system-ui" font-size="11" font-weight="500" fill="#3b82f6" text-anchor="middle">BLE</text>
|
|
36
|
+
</g>
|
|
37
|
+
|
|
38
|
+
<!-- Device 2: Good Signal -->
|
|
39
|
+
<g transform="translate(40, 180)">
|
|
40
|
+
<text font-family="system-ui" font-size="14" font-weight="500" fill="#1a1a1a">Bedroom Curtain</text>
|
|
41
|
+
<text y="20" font-family="monospace" font-size="12" fill="#666">F7E8D9C0B1A2</text>
|
|
42
|
+
|
|
43
|
+
<!-- RSSI Bars - 3 bars filled (Good) -->
|
|
44
|
+
<g transform="translate(0, 35)">
|
|
45
|
+
<rect x="0" y="12" width="8" height="4" rx="1" fill="#eab308"/>
|
|
46
|
+
<rect x="12" y="8" width="8" height="8" rx="1" fill="#eab308"/>
|
|
47
|
+
<rect x="24" y="4" width="8" height="12" rx="1" fill="#eab308"/>
|
|
48
|
+
<rect x="36" y="0" width="8" height="16" rx="1" fill="#e5e7eb"/>
|
|
49
|
+
</g>
|
|
50
|
+
|
|
51
|
+
<!-- Quality Badge -->
|
|
52
|
+
<rect x="60" y="35" width="80" height="20" rx="4" fill="#fef9c3"/>
|
|
53
|
+
<text x="100" y="49" font-family="system-ui" font-size="11" font-weight="500" fill="#eab308" text-anchor="middle">Good</text>
|
|
54
|
+
|
|
55
|
+
<!-- RSSI Value -->
|
|
56
|
+
<text x="150" y="49" font-family="monospace" font-size="11" fill="#666">-68 dBm</text>
|
|
57
|
+
|
|
58
|
+
<!-- Connection Badge -->
|
|
59
|
+
<rect x="220" y="35" width="45" height="20" rx="4" fill="#dbeafe"/>
|
|
60
|
+
<text x="242.5" y="49" font-family="system-ui" font-size="11" font-weight="500" fill="#3b82f6" text-anchor="middle">BLE</text>
|
|
61
|
+
</g>
|
|
62
|
+
|
|
63
|
+
<!-- Device 3: Fair Signal -->
|
|
64
|
+
<g transform="translate(40, 280)">
|
|
65
|
+
<text font-family="system-ui" font-size="14" font-weight="500" fill="#1a1a1a">Garage Lock</text>
|
|
66
|
+
<text y="20" font-family="monospace" font-size="12" fill="#666">A1B2C3D4E5F6</text>
|
|
67
|
+
|
|
68
|
+
<!-- RSSI Bars - 2 bars filled (Fair) -->
|
|
69
|
+
<g transform="translate(0, 35)">
|
|
70
|
+
<rect x="0" y="12" width="8" height="4" rx="1" fill="#f97316"/>
|
|
71
|
+
<rect x="12" y="8" width="8" height="8" rx="1" fill="#f97316"/>
|
|
72
|
+
<rect x="24" y="4" width="8" height="12" rx="1" fill="#e5e7eb"/>
|
|
73
|
+
<rect x="36" y="0" width="8" height="16" rx="1" fill="#e5e7eb"/>
|
|
74
|
+
</g>
|
|
75
|
+
|
|
76
|
+
<!-- Quality Badge -->
|
|
77
|
+
<rect x="60" y="35" width="80" height="20" rx="4" fill="#ffedd5"/>
|
|
78
|
+
<text x="100" y="49" font-family="system-ui" font-size="11" font-weight="500" fill="#f97316" text-anchor="middle">Fair</text>
|
|
79
|
+
|
|
80
|
+
<!-- RSSI Value -->
|
|
81
|
+
<text x="150" y="49" font-family="monospace" font-size="11" fill="#666">-78 dBm</text>
|
|
82
|
+
|
|
83
|
+
<!-- Connection Badge -->
|
|
84
|
+
<rect x="220" y="35" width="45" height="20" rx="4" fill="#dbeafe"/>
|
|
85
|
+
<text x="242.5" y="49" font-family="system-ui" font-size="11" font-weight="500" fill="#3b82f6" text-anchor="middle">BLE</text>
|
|
86
|
+
</g>
|
|
87
|
+
|
|
88
|
+
<!-- Legend -->
|
|
89
|
+
<text x="400" y="100" font-family="system-ui" font-size="12" font-weight="600" fill="#666">Signal Quality:</text>
|
|
90
|
+
<text x="400" y="120" font-family="system-ui" font-size="11" fill="#10b981">● Excellent: > -60 dBm</text>
|
|
91
|
+
<text x="400" y="140" font-family="system-ui" font-size="11" fill="#eab308">● Good: -60 to -75 dBm</text>
|
|
92
|
+
<text x="400" y="160" font-family="system-ui" font-size="11" fill="#f97316">● Fair: -75 to -85 dBm</text>
|
|
93
|
+
<text x="400" y="180" font-family="system-ui" font-size="11" fill="#ef4444">● Poor: < -85 dBm</text>
|
|
94
|
+
</svg>
|