@switchbot/homebridge-switchbot 5.0.0-beta.70 → 5.0.0-beta.71
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/workflows/ci.yml +61 -0
- package/.github/workflows/manual-e2e.yml +103 -0
- package/CHANGELOG.md +20 -0
- package/E2E-VERIFICATION.md +121 -0
- package/MIGRATION.md +44 -0
- package/README.md +11 -0
- package/config.schema.json +99 -1940
- package/dist/deviceFactory.d.ts +13 -0
- package/dist/deviceFactory.d.ts.map +1 -0
- package/dist/deviceFactory.js +81 -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 +283 -0
- package/dist/devices/genericDevice.d.ts.map +1 -0
- package/dist/devices/genericDevice.js +1035 -0
- package/dist/devices/genericDevice.js.map +1 -0
- package/dist/homebridge-ui/public/index.html +72 -440
- package/dist/homebridge-ui/server.d.ts +3 -1
- package/dist/homebridge-ui/server.d.ts.map +1 -1
- package/dist/homebridge-ui/server.js +47 -10
- package/dist/homebridge-ui/server.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/platform.d.ts +27 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +404 -0
- package/dist/platform.js.map +1 -0
- package/dist/settings.d.ts +10 -317
- 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 +259 -0
- package/dist/switchbotClient.js.map +1 -0
- package/dist/utils.d.ts +36 -248
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +38 -1367
- package/dist/utils.js.map +1 -1
- package/docs/assets/icons.js +1 -1
- package/docs/assets/icons.svg +1 -1
- package/docs/assets/style.css +3 -3
- package/docs/index.html +50 -15
- package/docs/variables/default.html +1 -1
- package/package.json +19 -18
- 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/generate-matter-maps.js +60 -0
- package/scripts/run-e2e-local.sh +14 -0
- package/src/deviceFactory.ts +122 -0
- package/src/devices/deviceBase.ts +141 -0
- package/src/devices/genericDevice.ts +965 -0
- package/src/homebridge-ui/public/index.html +72 -440
- package/src/homebridge-ui/server.ts +52 -10
- package/src/index.ts +3 -5
- package/src/platform.ts +395 -0
- package/src/settings.ts +12 -352
- package/src/switchbotClient.ts +266 -0
- package/src/utils.ts +47 -1456
- 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 +50 -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 +55 -0
- package/test/matter-descriptors.spec.ts +97 -0
- package/test/matter-device-state.spec.ts +101 -0
- package/test/matter-integration.spec.ts +70 -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 +20 -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/devices-hap/airpurifier.d.ts +0 -54
- package/dist/devices-hap/airpurifier.d.ts.map +0 -1
- package/dist/devices-hap/airpurifier.js +0 -533
- 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 -822
- 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 -707
- 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 -921
- 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 -108
- package/dist/devices-hap/device.d.ts.map +0 -1
- package/dist/devices-hap/device.js +0 -821
- 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 -655
- 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 -393
- package/dist/devices-hap/hub.js.map +0 -1
- package/dist/devices-hap/humidifier.d.ts +0 -73
- package/dist/devices-hap/humidifier.d.ts.map +0 -1
- package/dist/devices-hap/humidifier.js +0 -716
- 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 -397
- 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 -827
- 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 -569
- 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 -380
- 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 -385
- 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 -469
- 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 -400
- 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 -530
- 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 -90
- package/dist/devices-matter/BaseMatterAccessory.d.ts.map +0 -1
- package/dist/devices-matter/BaseMatterAccessory.js +0 -264
- 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 -61
- package/dist/devices-matter/RoboticVacuumAccessory.d.ts.map +0 -1
- package/dist/devices-matter/RoboticVacuumAccessory.js +0 -544
- 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 -131
- 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/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 -69
- package/dist/irdevice/irdevice.d.ts.map +0 -1
- package/dist/irdevice/irdevice.js +0 -339
- 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 -160
- package/dist/platform-hap.d.ts.map +0 -1
- package/dist/platform-hap.js +0 -3041
- package/dist/platform-hap.js.map +0 -1
- package/dist/platform-matter.d.ts +0 -188
- package/dist/platform-matter.d.ts.map +0 -1
- package/dist/platform-matter.js +0 -2545
- package/dist/platform-matter.js.map +0 -1
- package/dist/test/apiRequestTracker.test.d.ts +0 -2
- package/dist/test/apiRequestTracker.test.d.ts.map +0 -1
- package/dist/test/apiRequestTracker.test.js +0 -392
- package/dist/test/apiRequestTracker.test.js.map +0 -1
- package/dist/test/hap/device-webhook-context.test.d.ts +0 -2
- package/dist/test/hap/device-webhook-context.test.d.ts.map +0 -1
- package/dist/test/hap/device-webhook-context.test.js +0 -128
- package/dist/test/hap/device-webhook-context.test.js.map +0 -1
- package/dist/test/hap/platform-hap.logging.test.d.ts +0 -2
- package/dist/test/hap/platform-hap.logging.test.d.ts.map +0 -1
- package/dist/test/hap/platform-hap.logging.test.js +0 -33
- package/dist/test/hap/platform-hap.logging.test.js.map +0 -1
- package/dist/test/hap/platform-hap.test.d.ts +0 -2
- package/dist/test/hap/platform-hap.test.d.ts.map +0 -1
- package/dist/test/hap/platform-hap.test.js +0 -62
- package/dist/test/hap/platform-hap.test.js.map +0 -1
- package/dist/test/helpers/platform-fixtures.d.ts +0 -9
- package/dist/test/helpers/platform-fixtures.d.ts.map +0 -1
- package/dist/test/helpers/platform-fixtures.js +0 -30
- package/dist/test/helpers/platform-fixtures.js.map +0 -1
- package/dist/test/homebridge-ui/server.test.d.ts +0 -2
- package/dist/test/homebridge-ui/server.test.d.ts.map +0 -1
- package/dist/test/homebridge-ui/server.test.js +0 -445
- package/dist/test/homebridge-ui/server.test.js.map +0 -1
- package/dist/test/index.test.d.ts +0 -2
- package/dist/test/index.test.d.ts.map +0 -1
- package/dist/test/index.test.js +0 -19
- package/dist/test/index.test.js.map +0 -1
- package/dist/test/matter/devices-matter/baseMatterAccessory.test.d.ts +0 -2
- package/dist/test/matter/devices-matter/baseMatterAccessory.test.d.ts.map +0 -1
- package/dist/test/matter/devices-matter/baseMatterAccessory.test.js +0 -71
- package/dist/test/matter/devices-matter/baseMatterAccessory.test.js.map +0 -1
- package/dist/test/matter/platform-matter.additional.test.d.ts +0 -2
- package/dist/test/matter/platform-matter.additional.test.d.ts.map +0 -1
- package/dist/test/matter/platform-matter.additional.test.js +0 -35
- package/dist/test/matter/platform-matter.additional.test.js.map +0 -1
- package/dist/test/matter/platform-matter.bleparse.test.d.ts +0 -2
- package/dist/test/matter/platform-matter.bleparse.test.d.ts.map +0 -1
- package/dist/test/matter/platform-matter.bleparse.test.js +0 -43
- package/dist/test/matter/platform-matter.bleparse.test.js.map +0 -1
- package/dist/test/matter/platform-matter.cleanup.test.d.ts +0 -2
- package/dist/test/matter/platform-matter.cleanup.test.d.ts.map +0 -1
- package/dist/test/matter/platform-matter.cleanup.test.js +0 -70
- package/dist/test/matter/platform-matter.cleanup.test.js.map +0 -1
- package/dist/test/matter/platform-matter.keepstale.test.d.ts +0 -2
- package/dist/test/matter/platform-matter.keepstale.test.d.ts.map +0 -1
- package/dist/test/matter/platform-matter.keepstale.test.js +0 -27
- package/dist/test/matter/platform-matter.keepstale.test.js.map +0 -1
- package/dist/test/matter/platform-matter.logging.test.d.ts +0 -2
- package/dist/test/matter/platform-matter.logging.test.d.ts.map +0 -1
- package/dist/test/matter/platform-matter.logging.test.js +0 -29
- package/dist/test/matter/platform-matter.logging.test.js.map +0 -1
- package/dist/test/matter/platform-matter.mapping.test.d.ts +0 -2
- package/dist/test/matter/platform-matter.mapping.test.d.ts.map +0 -1
- package/dist/test/matter/platform-matter.mapping.test.js +0 -43
- package/dist/test/matter/platform-matter.mapping.test.js.map +0 -1
- package/dist/test/matter/platform-matter.openapi-mapping.test.d.ts +0 -2
- package/dist/test/matter/platform-matter.openapi-mapping.test.d.ts.map +0 -1
- package/dist/test/matter/platform-matter.openapi-mapping.test.js +0 -84
- package/dist/test/matter/platform-matter.openapi-mapping.test.js.map +0 -1
- package/dist/test/matter/platform-matter.test.d.ts +0 -2
- package/dist/test/matter/platform-matter.test.d.ts.map +0 -1
- package/dist/test/matter/platform-matter.test.js +0 -117
- package/dist/test/matter/platform-matter.test.js.map +0 -1
- package/dist/test/matter/platform-matter.unregister.test.d.ts +0 -2
- package/dist/test/matter/platform-matter.unregister.test.d.ts.map +0 -1
- package/dist/test/matter/platform-matter.unregister.test.js +0 -30
- package/dist/test/matter/platform-matter.unregister.test.js.map +0 -1
- package/dist/test/matter/platform-matter.webhook.test.d.ts +0 -2
- package/dist/test/matter/platform-matter.webhook.test.d.ts.map +0 -1
- package/dist/test/matter/platform-matter.webhook.test.js +0 -46
- package/dist/test/matter/platform-matter.webhook.test.js.map +0 -1
- package/dist/test/utils.test.d.ts +0 -2
- package/dist/test/utils.test.d.ts.map +0 -1
- package/dist/test/utils.test.js +0 -95
- package/dist/test/utils.test.js.map +0 -1
- package/dist/test/verifyconfig.test.d.ts +0 -2
- package/dist/test/verifyconfig.test.d.ts.map +0 -1
- package/dist/test/verifyconfig.test.js +0 -167
- package/dist/test/verifyconfig.test.js.map +0 -1
- package/src/custom.d.ts +0 -7
- package/src/devices-hap/airpurifier.ts +0 -568
- package/src/devices-hap/blindtilt.ts +0 -1049
- package/src/devices-hap/bot.ts +0 -910
- package/src/devices-hap/ceilinglight.ts +0 -747
- package/src/devices-hap/colorbulb.ts +0 -940
- package/src/devices-hap/contact.ts +0 -457
- package/src/devices-hap/curtain.ts +0 -944
- package/src/devices-hap/device.ts +0 -890
- package/src/devices-hap/fan.ts +0 -716
- package/src/devices-hap/hub.ts +0 -440
- package/src/devices-hap/humidifier.ts +0 -762
- package/src/devices-hap/iosensor.ts +0 -442
- package/src/devices-hap/lightstrip.ts +0 -863
- package/src/devices-hap/lock.ts +0 -627
- package/src/devices-hap/meter.ts +0 -427
- package/src/devices-hap/meterplus.ts +0 -431
- package/src/devices-hap/meterpro.ts +0 -523
- package/src/devices-hap/motion.ts +0 -390
- package/src/devices-hap/plug.ts +0 -427
- package/src/devices-hap/relayswitch.ts +0 -727
- package/src/devices-hap/robotvacuumcleaner.ts +0 -574
- package/src/devices-hap/waterdetector.ts +0 -400
- package/src/devices-matter/BaseMatterAccessory.ts +0 -302
- 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 -621
- 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 -135
- 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/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 -383
- 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 -3193
- package/src/platform-matter.ts +0 -2703
- package/src/test/apiRequestTracker.test.ts +0 -417
- package/src/test/hap/device-webhook-context.test.ts +0 -136
- package/src/test/hap/platform-hap.logging.test.ts +0 -36
- package/src/test/hap/platform-hap.test.ts +0 -70
- package/src/test/helpers/platform-fixtures.ts +0 -33
- package/src/test/homebridge-ui/server.test.ts +0 -486
- package/src/test/index.test.ts +0 -24
- package/src/test/matter/devices-matter/baseMatterAccessory.test.ts +0 -88
- package/src/test/matter/platform-matter.additional.test.ts +0 -44
- package/src/test/matter/platform-matter.bleparse.test.ts +0 -47
- package/src/test/matter/platform-matter.cleanup.test.ts +0 -86
- package/src/test/matter/platform-matter.keepstale.test.ts +0 -37
- package/src/test/matter/platform-matter.logging.test.ts +0 -33
- package/src/test/matter/platform-matter.mapping.test.ts +0 -57
- package/src/test/matter/platform-matter.openapi-mapping.test.ts +0 -109
- package/src/test/matter/platform-matter.test.ts +0 -144
- package/src/test/matter/platform-matter.unregister.test.ts +0 -39
- package/src/test/matter/platform-matter.webhook.test.ts +0 -54
- package/src/test/utils.test.ts +0 -96
- package/src/test/verifyconfig.test.ts +0 -198
|
@@ -1,544 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
3
|
-
function detectModelFromContext(ctx) {
|
|
4
|
-
const t = ctx?.deviceType?.trim();
|
|
5
|
-
switch (t) {
|
|
6
|
-
case 'Robot Vacuum Cleaner S1':
|
|
7
|
-
return 'S1';
|
|
8
|
-
case 'Robot Vacuum Cleaner S1 Plus':
|
|
9
|
-
return 'S1 Plus';
|
|
10
|
-
case 'Robot Vacuum Cleaner S1 Pro':
|
|
11
|
-
return 'S1 Pro';
|
|
12
|
-
case 'Robot Vacuum Cleaner S1 Mini':
|
|
13
|
-
return 'S1 Mini';
|
|
14
|
-
case 'WoSweeper':
|
|
15
|
-
return 'WoSweeper';
|
|
16
|
-
case 'WoSweeperMini':
|
|
17
|
-
return 'WoSweeperMini';
|
|
18
|
-
case 'K10+':
|
|
19
|
-
return 'K10+';
|
|
20
|
-
case 'K10+ Pro':
|
|
21
|
-
return 'K10+ Pro';
|
|
22
|
-
case 'Robot Vacuum Cleaner K10+ Pro Combo':
|
|
23
|
-
case 'K10+ Pro Combo':
|
|
24
|
-
return 'K10+ Pro Combo';
|
|
25
|
-
case 'Robot Vacuum Cleaner S10':
|
|
26
|
-
return 'S10';
|
|
27
|
-
case 'Robot Vacuum Cleaner S20':
|
|
28
|
-
case 'S20':
|
|
29
|
-
return 'S20';
|
|
30
|
-
case 'Robot Vacuum Cleaner K11+':
|
|
31
|
-
case 'K11+':
|
|
32
|
-
return 'K11+';
|
|
33
|
-
case 'Robot Vacuum Cleaner K20 Plus Pro':
|
|
34
|
-
case 'K20+ Pro':
|
|
35
|
-
return 'K20+ Pro';
|
|
36
|
-
default:
|
|
37
|
-
return undefined;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
function capabilitiesFor(model) {
|
|
41
|
-
// Defaults: conservative basic vac
|
|
42
|
-
if (!model) {
|
|
43
|
-
return { pause: false, resume: false, cleanAction: 'vacuum-only', suctionKind: 'powLevel-0-3', waterLevel: false };
|
|
44
|
-
}
|
|
45
|
-
// Basic vacuum models (S1 family, WoSweeper family, K10 family without Combo)
|
|
46
|
-
if (model === 'S1' || model === 'S1 Plus' || model === 'S1 Pro' || model === 'S1 Mini'
|
|
47
|
-
|| model === 'WoSweeper' || model === 'WoSweeperMini'
|
|
48
|
-
|| model === 'K10+' || model === 'K10+ Pro') {
|
|
49
|
-
return { pause: false, resume: false, cleanAction: 'vacuum-only', suctionKind: 'powLevel-0-3', waterLevel: false };
|
|
50
|
-
}
|
|
51
|
-
// K10+ Pro Combo: vacuum or mop, fanLevel, no waterLevel
|
|
52
|
-
if (model === 'K10+ Pro Combo') {
|
|
53
|
-
return { pause: true, resume: false, cleanAction: 'vacuum-or-mop', suctionKind: 'fanLevel-1-4', waterLevel: false };
|
|
54
|
-
}
|
|
55
|
-
// S10/S20: vacuum or vacuum+mop combo, fanLevel, waterLevel, plus advanced commands
|
|
56
|
-
if (model === 'S10' || model === 'S20') {
|
|
57
|
-
return {
|
|
58
|
-
pause: true,
|
|
59
|
-
resume: false,
|
|
60
|
-
cleanAction: 'vacuum-or-vacmop',
|
|
61
|
-
suctionKind: 'fanLevel-1-4',
|
|
62
|
-
waterLevel: true,
|
|
63
|
-
advancedCommands: {
|
|
64
|
-
setVolume: true,
|
|
65
|
-
selfClean: true,
|
|
66
|
-
addWaterForHumi: true,
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
// K11+/K20+ Pro: vacuum or mop, fanLevel, waterLevel, volume control
|
|
71
|
-
return {
|
|
72
|
-
pause: true,
|
|
73
|
-
resume: false,
|
|
74
|
-
cleanAction: 'vacuum-or-mop',
|
|
75
|
-
suctionKind: 'fanLevel-1-4',
|
|
76
|
-
waterLevel: true,
|
|
77
|
-
advancedCommands: {
|
|
78
|
-
setVolume: true,
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
export class RoboticVacuumAccessory extends BaseMatterAccessory {
|
|
83
|
-
// Track current high-level preferences that affect OpenAPI payloads
|
|
84
|
-
currentCleanAction = 'vacuum';
|
|
85
|
-
currentFanLevel = 2;
|
|
86
|
-
capabilities;
|
|
87
|
-
constructor(api, log, opts) {
|
|
88
|
-
const serialNumber = opts?.serialNumber ?? 'VACUUM-001';
|
|
89
|
-
const model = detectModelFromContext(opts?.context);
|
|
90
|
-
const capabilities = capabilitiesFor(model);
|
|
91
|
-
super(api, log, {
|
|
92
|
-
uuid: opts?.uuid ?? api.matter.uuid.generate(serialNumber),
|
|
93
|
-
displayName: opts?.displayName ?? 'Robot Vacuum',
|
|
94
|
-
deviceType: api.matter.deviceTypes.RoboticVacuumCleaner,
|
|
95
|
-
serialNumber,
|
|
96
|
-
manufacturer: opts?.manufacturer ?? 'Homebridge Matter',
|
|
97
|
-
model: opts?.model ?? 'HB-MATTER-VACUUM-ROBOTIC',
|
|
98
|
-
firmwareRevision: opts?.firmwareRevision ?? '2.0.0',
|
|
99
|
-
hardwareRevision: opts?.hardwareRevision ?? '1.0.0',
|
|
100
|
-
clusters: {
|
|
101
|
-
rvcRunMode: {
|
|
102
|
-
supportedModes: [
|
|
103
|
-
{ label: 'Idle', mode: 0, modeTags: [{ value: 16384 }] },
|
|
104
|
-
{ label: 'Cleaning', mode: 1, modeTags: [{ value: 16385 }] },
|
|
105
|
-
],
|
|
106
|
-
currentMode: 0,
|
|
107
|
-
},
|
|
108
|
-
rvcCleanMode: (() => {
|
|
109
|
-
switch (model) {
|
|
110
|
-
case 'K10':
|
|
111
|
-
return {
|
|
112
|
-
supportedModes: [
|
|
113
|
-
{ label: 'Vacuum', mode: 0, modeTags: [{ value: 16385 }] },
|
|
114
|
-
],
|
|
115
|
-
currentMode: 0,
|
|
116
|
-
};
|
|
117
|
-
case 'Robot Vacuum Cleaner S1':
|
|
118
|
-
case 'Robot Vacuum Cleaner S1 Plus':
|
|
119
|
-
return {
|
|
120
|
-
supportedModes: [
|
|
121
|
-
{ label: 'Quiet', mode: 0, modeTags: [{ value: 2 }] },
|
|
122
|
-
{ label: 'Standard', mode: 1, modeTags: [{ value: 16384 }] },
|
|
123
|
-
{ label: 'Strong', mode: 2, modeTags: [{ value: 7 }] },
|
|
124
|
-
{ label: 'MAX', mode: 3, modeTags: [{ value: 8 }] },
|
|
125
|
-
],
|
|
126
|
-
currentMode: 1,
|
|
127
|
-
};
|
|
128
|
-
case 'Mini Robot Vacuum K10+':
|
|
129
|
-
case 'Mini Robot Vacuum K10+ Pro':
|
|
130
|
-
case 'K10+ Pro Combo':
|
|
131
|
-
return {
|
|
132
|
-
supportedModes: [
|
|
133
|
-
{ label: 'Vacuum', mode: 0, modeTags: [{ value: 16385 }] },
|
|
134
|
-
{ label: 'Mop', mode: 1, modeTags: [{ value: 16386 }] },
|
|
135
|
-
{ label: 'Sweep & Mop', mode: 2, modeTags: [{ value: 16385 }, { value: 16386 }] },
|
|
136
|
-
],
|
|
137
|
-
currentMode: 0,
|
|
138
|
-
};
|
|
139
|
-
case 'Multitasking Household Robot K20+ Pro':
|
|
140
|
-
return {
|
|
141
|
-
supportedModes: [
|
|
142
|
-
{ label: 'Vacuum', mode: 0, modeTags: [{ value: 16385 }] },
|
|
143
|
-
{ label: 'Vacuum & Mop', mode: 1, modeTags: [{ value: 16385 }, { value: 16386 }] },
|
|
144
|
-
{ label: 'Deep Clean', mode: 2, modeTags: [{ value: 16384 }] },
|
|
145
|
-
],
|
|
146
|
-
currentMode: 0,
|
|
147
|
-
};
|
|
148
|
-
case 'Floor Cleaning Robot S10':
|
|
149
|
-
case 'Floor Cleaning Robot S20':
|
|
150
|
-
return {
|
|
151
|
-
supportedModes: [
|
|
152
|
-
{ label: 'Vacuum', mode: 0, modeTags: [{ value: 16385 }] },
|
|
153
|
-
{ label: 'Mop', mode: 1, modeTags: [{ value: 16386 }] },
|
|
154
|
-
],
|
|
155
|
-
currentMode: 0,
|
|
156
|
-
};
|
|
157
|
-
case 'Robot Vacuum K11+':
|
|
158
|
-
return {
|
|
159
|
-
supportedModes: [
|
|
160
|
-
{ label: 'Quiet', mode: 0, modeTags: [{ value: 2 }] },
|
|
161
|
-
{ label: 'Standard', mode: 1, modeTags: [{ value: 16384 }] },
|
|
162
|
-
{ label: 'Strong', mode: 2, modeTags: [{ value: 7 }] },
|
|
163
|
-
{ label: 'MAX', mode: 3, modeTags: [{ value: 8 }] },
|
|
164
|
-
{ label: 'Deep Clean', mode: 4, modeTags: [{ value: 16384 }, { value: 16385 }] },
|
|
165
|
-
],
|
|
166
|
-
currentMode: 1,
|
|
167
|
-
};
|
|
168
|
-
default:
|
|
169
|
-
return {
|
|
170
|
-
supportedModes: [
|
|
171
|
-
{ label: 'Vacuum', mode: 0, modeTags: [{ value: 16385 }] },
|
|
172
|
-
{ label: 'Vacuum & Mop', mode: 1, modeTags: [{ value: 16385 }, { value: 16386 }] },
|
|
173
|
-
{ label: 'Deep Clean', mode: 2, modeTags: [{ value: 16384 }] },
|
|
174
|
-
],
|
|
175
|
-
currentMode: 0,
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
})(),
|
|
179
|
-
rvcOperationalState: {
|
|
180
|
-
operationalStateList: [
|
|
181
|
-
{ operationalStateId: 0 }, // Stopped
|
|
182
|
-
{ operationalStateId: 1 }, // Running
|
|
183
|
-
{ operationalStateId: 2 }, // Paused
|
|
184
|
-
{ operationalStateId: 3 }, // Error
|
|
185
|
-
{ operationalStateId: 64 }, // Seeking Charger
|
|
186
|
-
{ operationalStateId: 65 }, // Charging
|
|
187
|
-
{ operationalStateId: 66 }, // Docked
|
|
188
|
-
{ operationalStateId: 67 }, // In Remote Control
|
|
189
|
-
{ operationalStateId: 68 }, // In Dust Collecting
|
|
190
|
-
],
|
|
191
|
-
operationalState: 66,
|
|
192
|
-
},
|
|
193
|
-
},
|
|
194
|
-
handlers: (() => {
|
|
195
|
-
const opHandlers = {
|
|
196
|
-
stop: async () => this.handleStop(),
|
|
197
|
-
start: async () => this.handleStart(),
|
|
198
|
-
goHome: async () => this.handleGoHome(),
|
|
199
|
-
// Always register resume handler, log warning if not supported
|
|
200
|
-
resume: async () => {
|
|
201
|
-
if (capabilities.resume) {
|
|
202
|
-
await this.handleResume();
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
this.logWarn(`Resume operation is not supported for model: ${this.model}`);
|
|
206
|
-
}
|
|
207
|
-
},
|
|
208
|
-
};
|
|
209
|
-
if (capabilities.pause) {
|
|
210
|
-
opHandlers.pause = async () => this.handlePause();
|
|
211
|
-
}
|
|
212
|
-
return {
|
|
213
|
-
rvcRunMode: { changeToMode: async (request) => this.handleChangeRunMode(request) },
|
|
214
|
-
rvcCleanMode: { changeToMode: async (request) => this.handleChangeCleanMode(request) },
|
|
215
|
-
rvcOperationalState: opHandlers,
|
|
216
|
-
};
|
|
217
|
-
})(),
|
|
218
|
-
context: { deviceId: opts?.deviceId, ...(opts?.context ?? {}), deviceType: opts?.context?.deviceType },
|
|
219
|
-
});
|
|
220
|
-
this.capabilities = capabilities;
|
|
221
|
-
this.logInfo('initialized and ready.');
|
|
222
|
-
}
|
|
223
|
-
async handleChangeRunMode(request) {
|
|
224
|
-
this.logInfo(`ChangeToMode (run) request received: ${JSON.stringify(request)}`);
|
|
225
|
-
const { newMode } = request;
|
|
226
|
-
const modeStr = ['Idle', 'Cleaning', 'Returning to Dock'][newMode] || `Unknown (mode=${newMode})`;
|
|
227
|
-
this.logInfo(`Changing run mode to: ${modeStr}`);
|
|
228
|
-
switch (this.model) {
|
|
229
|
-
case 'Robot Vacuum Cleaner S1':
|
|
230
|
-
case 'Robot Vacuum Cleaner S1 Plus': {
|
|
231
|
-
if (newMode === 1) {
|
|
232
|
-
await this.handleStart();
|
|
233
|
-
}
|
|
234
|
-
else if (newMode === 0) {
|
|
235
|
-
await this.handleGoHome();
|
|
236
|
-
}
|
|
237
|
-
break;
|
|
238
|
-
}
|
|
239
|
-
case 'Mini Robot Vacuum K10+':
|
|
240
|
-
case 'Mini Robot Vacuum K10+ Pro':
|
|
241
|
-
case 'K10+ Pro Combo': {
|
|
242
|
-
if (newMode === 1) {
|
|
243
|
-
await this.handleStart();
|
|
244
|
-
}
|
|
245
|
-
else if (newMode === 2) {
|
|
246
|
-
await this.handleDock();
|
|
247
|
-
}
|
|
248
|
-
break;
|
|
249
|
-
}
|
|
250
|
-
case 'Multitasking Household Robot K20+ Pro': {
|
|
251
|
-
if (newMode === 1) {
|
|
252
|
-
await this.handleStart();
|
|
253
|
-
}
|
|
254
|
-
else if (newMode === 0) {
|
|
255
|
-
await this.handleGoHome();
|
|
256
|
-
}
|
|
257
|
-
else if (newMode === 2) {
|
|
258
|
-
await this.handlePause();
|
|
259
|
-
}
|
|
260
|
-
break;
|
|
261
|
-
}
|
|
262
|
-
case 'Floor Cleaning Robot S10':
|
|
263
|
-
case 'Floor Cleaning Robot S20': {
|
|
264
|
-
if (newMode === 1) {
|
|
265
|
-
await this.handleStart();
|
|
266
|
-
}
|
|
267
|
-
else if (newMode === 0) {
|
|
268
|
-
await this.handleGoHome();
|
|
269
|
-
}
|
|
270
|
-
break;
|
|
271
|
-
}
|
|
272
|
-
case 'Robot Vacuum K11+': {
|
|
273
|
-
if (newMode === 1) {
|
|
274
|
-
await this.handleStart();
|
|
275
|
-
}
|
|
276
|
-
else if (newMode === 0) {
|
|
277
|
-
await this.handleGoHome();
|
|
278
|
-
}
|
|
279
|
-
else if (newMode === 2) {
|
|
280
|
-
await this.handleDock();
|
|
281
|
-
}
|
|
282
|
-
break;
|
|
283
|
-
}
|
|
284
|
-
default:
|
|
285
|
-
this.logWarn(`Run mode change not supported for model: ${this.model}`);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
async handleChangeCleanMode(request) {
|
|
289
|
-
this.logInfo(`ChangeToMode (clean) request received: ${JSON.stringify(request)}`);
|
|
290
|
-
const { newMode } = request;
|
|
291
|
-
switch (this.model) {
|
|
292
|
-
case 'Robot Vacuum Cleaner S1':
|
|
293
|
-
case 'Robot Vacuum Cleaner S1 Plus': {
|
|
294
|
-
const mapPowS1 = ['Quiet', 'Standard', 'Strong', 'MAX'];
|
|
295
|
-
const labelS1 = mapPowS1[newMode] ?? `Unknown (${newMode})`;
|
|
296
|
-
this.logInfo(`Changing suction level to: ${labelS1}`);
|
|
297
|
-
await this.sendOpenAPICommand('PowLevel', String(newMode));
|
|
298
|
-
break;
|
|
299
|
-
}
|
|
300
|
-
case 'Mini Robot Vacuum K10+':
|
|
301
|
-
case 'Mini Robot Vacuum K10+ Pro':
|
|
302
|
-
case 'K10+ Pro Combo': {
|
|
303
|
-
const mapPowK10 = ['Vacuum', 'Mop', 'Sweep & Mop'];
|
|
304
|
-
const labelK10 = mapPowK10[newMode] ?? `Unknown (${newMode})`;
|
|
305
|
-
this.logInfo(`Changing cleaning mode to: ${labelK10}`);
|
|
306
|
-
await this.sendOpenAPICommand('CleanMode', String(newMode));
|
|
307
|
-
break;
|
|
308
|
-
}
|
|
309
|
-
case 'Multitasking Household Robot K20+ Pro': {
|
|
310
|
-
const mapPowK20 = ['Vacuum', 'Vacuum & Mop', 'Deep Clean'];
|
|
311
|
-
const labelK20 = mapPowK20[newMode] ?? `Unknown (${newMode})`;
|
|
312
|
-
this.logInfo(`Changing cleaning mode to: ${labelK20}`);
|
|
313
|
-
await this.sendOpenAPICommand('CleanMode', String(newMode));
|
|
314
|
-
break;
|
|
315
|
-
}
|
|
316
|
-
case 'Floor Cleaning Robot S10':
|
|
317
|
-
case 'Floor Cleaning Robot S20': {
|
|
318
|
-
const mapPowS10 = ['Vacuum', 'Mop'];
|
|
319
|
-
const labelS10 = mapPowS10[newMode] ?? `Unknown (${newMode})`;
|
|
320
|
-
this.logInfo(`Changing cleaning mode to: ${labelS10}`);
|
|
321
|
-
await this.sendOpenAPICommand('CleanMode', String(newMode));
|
|
322
|
-
break;
|
|
323
|
-
}
|
|
324
|
-
case 'Robot Vacuum K11+': {
|
|
325
|
-
const mapPowK11 = ['Quiet', 'Standard', 'Strong', 'MAX', 'Deep Clean'];
|
|
326
|
-
const labelK11 = mapPowK11[newMode] ?? `Unknown (${newMode})`;
|
|
327
|
-
this.logInfo(`Changing suction level to: ${labelK11}`);
|
|
328
|
-
await this.sendOpenAPICommand('PowLevel', String(newMode));
|
|
329
|
-
break;
|
|
330
|
-
}
|
|
331
|
-
default:
|
|
332
|
-
this.logWarn(`Clean mode change not supported for model: ${this.model}`);
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
async handlePause() {
|
|
336
|
-
this.logInfo('pausing.');
|
|
337
|
-
try {
|
|
338
|
-
this.logInfo(`[OpenAPI] Sending pause command`);
|
|
339
|
-
await this.sendOpenAPICommand('pause');
|
|
340
|
-
this.logInfo(`[OpenAPI] pause command sent`);
|
|
341
|
-
}
|
|
342
|
-
catch (e) {
|
|
343
|
-
this.logWarn(`OpenAPI pause failed: ${String(e?.message ?? e)}`);
|
|
344
|
-
}
|
|
345
|
-
this.updateOperationalState(2);
|
|
346
|
-
}
|
|
347
|
-
async handleStop() {
|
|
348
|
-
this.logInfo('stopping.');
|
|
349
|
-
try {
|
|
350
|
-
if (this.capabilities.cleanAction === 'vacuum-only' && this.capabilities.suctionKind === 'powLevel-0-3') {
|
|
351
|
-
this.logInfo(`[OpenAPI] Sending stop command`);
|
|
352
|
-
await this.sendOpenAPICommand('stop');
|
|
353
|
-
this.logInfo(`[OpenAPI] stop command sent`);
|
|
354
|
-
}
|
|
355
|
-
else {
|
|
356
|
-
this.logInfo(`[OpenAPI] Sending pause command (for stop)`);
|
|
357
|
-
await this.sendOpenAPICommand('pause');
|
|
358
|
-
this.logInfo(`[OpenAPI] pause command sent (for stop)`);
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
catch (e) {
|
|
362
|
-
this.logWarn(`OpenAPI stop/pause failed: ${String(e?.message ?? e)}`);
|
|
363
|
-
}
|
|
364
|
-
this.updateRunMode(0);
|
|
365
|
-
this.updateOperationalState(0);
|
|
366
|
-
}
|
|
367
|
-
async handleStart() {
|
|
368
|
-
this.logInfo('starting clean.');
|
|
369
|
-
try {
|
|
370
|
-
if (this.capabilities.cleanAction === 'vacuum-only' && this.capabilities.suctionKind === 'powLevel-0-3') {
|
|
371
|
-
this.logInfo(`[OpenAPI] Sending start command`);
|
|
372
|
-
await this.sendOpenAPICommand('start');
|
|
373
|
-
this.logInfo(`[OpenAPI] start command sent`);
|
|
374
|
-
}
|
|
375
|
-
else {
|
|
376
|
-
const action = this.currentCleanAction === 'vacuum_mop' ? 'sweep_mop' : this.currentCleanAction;
|
|
377
|
-
const param = { action, param: { fanLevel: this.currentFanLevel } };
|
|
378
|
-
if (this.capabilities.waterLevel) {
|
|
379
|
-
param.param.waterLevel = 1;
|
|
380
|
-
}
|
|
381
|
-
this.logInfo(`[OpenAPI] Sending startClean: ${JSON.stringify(param)}`);
|
|
382
|
-
await this.sendOpenAPICommand('startClean', JSON.stringify(param));
|
|
383
|
-
this.logInfo(`[OpenAPI] startClean command sent: ${JSON.stringify(param)}`);
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
catch (e) {
|
|
387
|
-
this.logWarn(`OpenAPI start/startClean failed: ${String(e?.message ?? e)}`);
|
|
388
|
-
}
|
|
389
|
-
this.updateRunMode(1);
|
|
390
|
-
this.updateOperationalState(1);
|
|
391
|
-
}
|
|
392
|
-
async handleResume() {
|
|
393
|
-
this.logInfo('resume requested.');
|
|
394
|
-
try {
|
|
395
|
-
this.logInfo(`[OpenAPI] Sending resume command`);
|
|
396
|
-
await this.sendOpenAPICommand('resume');
|
|
397
|
-
this.logInfo(`[OpenAPI] resume command sent`);
|
|
398
|
-
}
|
|
399
|
-
catch (e) {
|
|
400
|
-
this.logWarn(`OpenAPI resume failed: ${String(e?.message ?? e)}`);
|
|
401
|
-
}
|
|
402
|
-
this.updateRunMode(1);
|
|
403
|
-
this.updateOperationalState(1);
|
|
404
|
-
}
|
|
405
|
-
async handleGoHome() {
|
|
406
|
-
this.logInfo('returning to dock.');
|
|
407
|
-
try {
|
|
408
|
-
this.logInfo(`[OpenAPI] Sending dock command`);
|
|
409
|
-
await this.sendOpenAPICommand('dock');
|
|
410
|
-
this.logInfo(`[OpenAPI] dock command sent`);
|
|
411
|
-
}
|
|
412
|
-
catch (e) {
|
|
413
|
-
this.logWarn(`OpenAPI dock failed: ${String(e?.message ?? e)}`);
|
|
414
|
-
}
|
|
415
|
-
this.updateRunMode(0);
|
|
416
|
-
this.updateOperationalState(64);
|
|
417
|
-
}
|
|
418
|
-
updateOperationalState(state) {
|
|
419
|
-
this.updateState('rvcOperationalState', { operationalState: state });
|
|
420
|
-
const states = [
|
|
421
|
-
'Stopped',
|
|
422
|
-
'Running',
|
|
423
|
-
'Paused',
|
|
424
|
-
...Array.from({ length: 61 }).fill(null),
|
|
425
|
-
'Seeking Charger',
|
|
426
|
-
'Charging',
|
|
427
|
-
'Docked',
|
|
428
|
-
];
|
|
429
|
-
this.logInfo(`operational state updated to: ${states[state] || `Unknown (${state})`}`);
|
|
430
|
-
}
|
|
431
|
-
updateRunMode(mode) {
|
|
432
|
-
this.updateState('rvcRunMode', { currentMode: mode });
|
|
433
|
-
const modes = ['Idle', 'Cleaning'];
|
|
434
|
-
this.logInfo(`run mode updated to: ${modes[mode] || `Unknown (${mode})`}`);
|
|
435
|
-
}
|
|
436
|
-
updateCleanMode(mode) {
|
|
437
|
-
this.updateState('rvcCleanMode', { currentMode: mode });
|
|
438
|
-
const label = mode === 0 ? 'Vacuum' : mode === 1 ? 'Mop' : mode === 2 ? 'Vacuum & Mop' : 'Unknown';
|
|
439
|
-
this.logInfo(`clean mode updated to: ${label}`);
|
|
440
|
-
}
|
|
441
|
-
/**
|
|
442
|
-
* Update battery percentage (no PowerSource cluster for this device type)
|
|
443
|
-
*/
|
|
444
|
-
async updateBatteryPercentage(percentageOrBatPercentRemaining) {
|
|
445
|
-
const isBatPercent = Number(percentageOrBatPercentRemaining) > 100;
|
|
446
|
-
const percentage = isBatPercent
|
|
447
|
-
? Math.max(0, Math.min(100, Math.round(Number(percentageOrBatPercentRemaining) / 2)))
|
|
448
|
-
: Math.max(0, Math.min(100, Math.round(Number(percentageOrBatPercentRemaining))));
|
|
449
|
-
let chargeLevel = 0; // Ok
|
|
450
|
-
if (percentage < 20) {
|
|
451
|
-
chargeLevel = 2; // Critical
|
|
452
|
-
}
|
|
453
|
-
else if (percentage < 40) {
|
|
454
|
-
chargeLevel = 1; // Warning
|
|
455
|
-
}
|
|
456
|
-
this.logInfo(`battery status: ${percentage}% (${chargeLevel === 0 ? 'Ok' : chargeLevel === 1 ? 'Warning' : 'Critical'})`);
|
|
457
|
-
if (this.context) {
|
|
458
|
-
this.context.batteryPercentage = percentage;
|
|
459
|
-
this.context.batteryChargeLevel = chargeLevel;
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
async handleDock() {
|
|
463
|
-
this.logInfo('Docking the vacuum.');
|
|
464
|
-
try {
|
|
465
|
-
this.logInfo('[OpenAPI] Sending dock command');
|
|
466
|
-
await this.sendOpenAPICommand('dock');
|
|
467
|
-
this.logInfo('[OpenAPI] Dock command sent successfully');
|
|
468
|
-
this.updateRunMode(0); // Set to Idle after docking
|
|
469
|
-
this.updateOperationalState(64); // Seeking Charger state
|
|
470
|
-
}
|
|
471
|
-
catch (error) {
|
|
472
|
-
this.logWarn(`Docking failed: ${String(error?.message ?? error)}`);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
async handleServiceArea() {
|
|
476
|
-
this.logWarn(`Service area functionality is not supported for model: ${this.model}`);
|
|
477
|
-
// Placeholder for potential future support.
|
|
478
|
-
}
|
|
479
|
-
async simulateCleaningSequence() {
|
|
480
|
-
this.logInfo('Starting cleaning sequence simulation.');
|
|
481
|
-
this.updateOperationalState(1); // Set to Running
|
|
482
|
-
setTimeout(async () => {
|
|
483
|
-
this.logInfo('Cleaning sequence timer expired. Requesting device status update.');
|
|
484
|
-
try {
|
|
485
|
-
const status = await this.requestDeviceStatus();
|
|
486
|
-
if (status && status.operationalState) {
|
|
487
|
-
this.logInfo(`Device status found: ${status.operationalState}`);
|
|
488
|
-
this.updateOperationalState(status.operationalState);
|
|
489
|
-
}
|
|
490
|
-
else {
|
|
491
|
-
this.logWarn('Device status not found. Setting operational state to Stopped.');
|
|
492
|
-
this.updateOperationalState(0); // Default to Stopped
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
catch (error) {
|
|
496
|
-
this.logWarn(`Failed to fetch device status: ${String(error?.message ?? error)}`);
|
|
497
|
-
this.updateOperationalState(0); // Default to Stopped
|
|
498
|
-
}
|
|
499
|
-
}, 5000); // Simulate a 5-second cleaning sequence
|
|
500
|
-
}
|
|
501
|
-
async simulateDockingSequence() {
|
|
502
|
-
this.logInfo('Starting docking sequence simulation.');
|
|
503
|
-
this.updateOperationalState(64); // Set to Seeking Charger
|
|
504
|
-
setTimeout(async () => {
|
|
505
|
-
this.logInfo('Docking sequence timer expired. Requesting device status update.');
|
|
506
|
-
try {
|
|
507
|
-
const status = await this.requestDeviceStatus();
|
|
508
|
-
if (status && status.operationalState) {
|
|
509
|
-
this.logInfo(`Device status found: ${status.operationalState}`);
|
|
510
|
-
this.updateOperationalState(status.operationalState);
|
|
511
|
-
}
|
|
512
|
-
else {
|
|
513
|
-
this.logWarn('Device status not found. Setting operational state to Docked.');
|
|
514
|
-
this.updateOperationalState(66); // Default to Docked
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
catch (error) {
|
|
518
|
-
this.logWarn(`Failed to fetch device status: ${String(error?.message ?? error)}`);
|
|
519
|
-
this.updateOperationalState(66); // Default to Docked
|
|
520
|
-
}
|
|
521
|
-
}, 5000); // Simulate a 5-second docking sequence
|
|
522
|
-
}
|
|
523
|
-
async requestDeviceStatus() {
|
|
524
|
-
this.logInfo('Requesting device status from OpenAPI.');
|
|
525
|
-
try {
|
|
526
|
-
const response = await this.sendOpenAPICommand('getDeviceStatus');
|
|
527
|
-
this.logInfo(`Device status response: ${JSON.stringify(response)}`);
|
|
528
|
-
return response;
|
|
529
|
-
}
|
|
530
|
-
catch (error) {
|
|
531
|
-
this.logWarn(`Failed to request device status: ${String(error?.message ?? error)}`);
|
|
532
|
-
return null;
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
async startCleaningSimulation() {
|
|
536
|
-
this.logInfo('Initiating cleaning simulation.');
|
|
537
|
-
await this.simulateCleaningSequence();
|
|
538
|
-
}
|
|
539
|
-
async startDockingSimulation() {
|
|
540
|
-
this.logInfo('Initiating docking simulation.');
|
|
541
|
-
await this.simulateDockingSequence();
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
//# sourceMappingURL=RoboticVacuumAccessory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RoboticVacuumAccessory.js","sourceRoot":"","sources":["../../src/devices-matter/RoboticVacuumAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Smoke/CO Alarm Accessory Class
|
|
3
|
-
*/
|
|
4
|
-
import type { API, Logger } from 'homebridge';
|
|
5
|
-
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
6
|
-
export declare class SmokeCOAlarmAccessory extends BaseMatterAccessory {
|
|
7
|
-
constructor(api: API, log: Logger);
|
|
8
|
-
updateSmokeState(state: 0 | 1 | 2): void;
|
|
9
|
-
updateCOState(state: 0 | 1 | 2): void;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=SmokeCOAlarmAccessory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SmokeCOAlarmAccessory.d.ts","sourceRoot":"","sources":["../../src/devices-matter/SmokeCOAlarmAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,qBAAsB,SAAQ,mBAAmB;gBAChD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM;IAsC1B,gBAAgB,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI;IAMxC,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI;CAK7C"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Smoke/CO Alarm Accessory Class
|
|
3
|
-
*/
|
|
4
|
-
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
5
|
-
export class SmokeCOAlarmAccessory extends BaseMatterAccessory {
|
|
6
|
-
constructor(api, log) {
|
|
7
|
-
const serialNumber = 'SENSOR-006';
|
|
8
|
-
const SmokeCoAlarmServer = api.matter.deviceTypes.SmokeSensor.requirements.SmokeCoAlarmServer;
|
|
9
|
-
const SmokeSensorWithBoth = api.matter.deviceTypes.SmokeSensor.with(SmokeCoAlarmServer.with('SmokeAlarm', 'CoAlarm'));
|
|
10
|
-
super(api, log, {
|
|
11
|
-
uuid: api.matter.uuid.generate(serialNumber),
|
|
12
|
-
displayName: 'Smoke Sensor',
|
|
13
|
-
deviceType: SmokeSensorWithBoth,
|
|
14
|
-
serialNumber,
|
|
15
|
-
manufacturer: 'Homebridge Matter',
|
|
16
|
-
model: 'HB-MATTER-SENSOR-SMOKE-CO',
|
|
17
|
-
firmwareRevision: '2.0.0',
|
|
18
|
-
hardwareRevision: '1.0.0',
|
|
19
|
-
clusters: {
|
|
20
|
-
smokeCoAlarm: {
|
|
21
|
-
smokeState: 0, // 0 = normal, 1 = warning, 2 = critical
|
|
22
|
-
coState: 0,
|
|
23
|
-
batteryAlert: 0,
|
|
24
|
-
deviceMuted: 0,
|
|
25
|
-
testInProgress: false,
|
|
26
|
-
hardwareFaultAlert: false,
|
|
27
|
-
endOfServiceAlert: 0,
|
|
28
|
-
interconnectSmokeAlarm: 0,
|
|
29
|
-
interconnectCoAlarm: 0,
|
|
30
|
-
contaminationState: 0,
|
|
31
|
-
smokeSensitivityLevel: 1,
|
|
32
|
-
expressedState: 0,
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
});
|
|
36
|
-
this.logInfo('initialized.');
|
|
37
|
-
}
|
|
38
|
-
updateSmokeState(state) {
|
|
39
|
-
this.updateState('smokeCoAlarm', { smokeState: state });
|
|
40
|
-
const stateStr = ['Normal', 'Warning', 'Critical'][state];
|
|
41
|
-
this.logInfo(`smoke state: ${stateStr}.`);
|
|
42
|
-
}
|
|
43
|
-
updateCOState(state) {
|
|
44
|
-
this.updateState('smokeCoAlarm', { coState: state });
|
|
45
|
-
const stateStr = ['Normal', 'Warning', 'Critical'][state];
|
|
46
|
-
this.logInfo(`co state: ${stateStr}.`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=SmokeCOAlarmAccessory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SmokeCOAlarmAccessory.js","sourceRoot":"","sources":["../../src/devices-matter/SmokeCOAlarmAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,qBAAsB,SAAQ,mBAAmB;IAC5D,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,YAAY,CAAA;QACjC,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAA;QAC7F,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CACjE,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CACjD,CAAA;QAED,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,WAAW,EAAE,cAAc;YAC3B,UAAU,EAAE,mBAAmB;YAC/B,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,2BAA2B;YAClC,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,YAAY,EAAE;oBACZ,UAAU,EAAE,CAAC,EAAE,wCAAwC;oBACvD,OAAO,EAAE,CAAC;oBACV,YAAY,EAAE,CAAC;oBACf,WAAW,EAAE,CAAC;oBACd,cAAc,EAAE,KAAK;oBACrB,kBAAkB,EAAE,KAAK;oBACzB,iBAAiB,EAAE,CAAC;oBACpB,sBAAsB,EAAE,CAAC;oBACzB,mBAAmB,EAAE,CAAC;oBACtB,kBAAkB,EAAE,CAAC;oBACrB,qBAAqB,EAAE,CAAC;oBACxB,cAAc,EAAE,CAAC;iBAClB;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEM,gBAAgB,CAAC,KAAgB;QACtC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;QACvD,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAA;QACzD,IAAI,CAAC,OAAO,CAAC,gBAAgB,QAAQ,GAAG,CAAC,CAAA;IAC3C,CAAC;IAEM,aAAa,CAAC,KAAgB;QACnC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QACpD,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAA;QACzD,IAAI,CAAC,OAAO,CAAC,aAAa,QAAQ,GAAG,CAAC,CAAA;IACxC,CAAC;CACF"}
|