@switchbot/homebridge-switchbot 5.0.0-beta.70 → 5.0.0-beta.72
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 +1 -3
- 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 +1 -3
- 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,264 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base Matter Accessory Class
|
|
3
|
-
*
|
|
4
|
-
* This base class implements the MatterAccessory interface and provides
|
|
5
|
-
* common functionality that all Matter devices can use.
|
|
6
|
-
*
|
|
7
|
-
* Individual device types should extend this class and call super() with
|
|
8
|
-
* the required configuration.
|
|
9
|
-
*/
|
|
10
|
-
import { deviceLoggingEnabled, deviceLoggingIsDebug, logDeviceStatusCode, rgb2hs } from '../utils.js';
|
|
11
|
-
/**
|
|
12
|
-
* Base class for all Matter accessories
|
|
13
|
-
* Implements the MatterAccessory interface and provides common methods
|
|
14
|
-
*/
|
|
15
|
-
export class BaseMatterAccessory {
|
|
16
|
-
// Required MatterAccessory properties
|
|
17
|
-
uuid;
|
|
18
|
-
displayName;
|
|
19
|
-
deviceType;
|
|
20
|
-
serialNumber;
|
|
21
|
-
manufacturer;
|
|
22
|
-
model;
|
|
23
|
-
firmwareRevision;
|
|
24
|
-
hardwareRevision;
|
|
25
|
-
context;
|
|
26
|
-
clusters;
|
|
27
|
-
handlers;
|
|
28
|
-
parts;
|
|
29
|
-
// Protected properties available to child classes
|
|
30
|
-
api;
|
|
31
|
-
log;
|
|
32
|
-
constructor(api, log, config) {
|
|
33
|
-
this.api = api;
|
|
34
|
-
this.log = log;
|
|
35
|
-
// Set all required properties
|
|
36
|
-
this.uuid = config.uuid;
|
|
37
|
-
this.displayName = config.displayName;
|
|
38
|
-
this.deviceType = config.deviceType;
|
|
39
|
-
this.serialNumber = config.serialNumber;
|
|
40
|
-
this.manufacturer = config.manufacturer;
|
|
41
|
-
this.model = config.model;
|
|
42
|
-
this.firmwareRevision = config.firmwareRevision;
|
|
43
|
-
this.hardwareRevision = config.hardwareRevision;
|
|
44
|
-
this.clusters = config.clusters;
|
|
45
|
-
this.handlers = config.handlers;
|
|
46
|
-
this.parts = config.parts;
|
|
47
|
-
// Set context with all metadata
|
|
48
|
-
this.context = {
|
|
49
|
-
serialNumber: this.serialNumber,
|
|
50
|
-
manufacturer: this.manufacturer,
|
|
51
|
-
model: this.model,
|
|
52
|
-
firmwareRevision: this.firmwareRevision,
|
|
53
|
-
hardwareRevision: this.hardwareRevision,
|
|
54
|
-
...config.context,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Update the accessory state
|
|
59
|
-
* Helper method to update cluster attributes
|
|
60
|
-
*/
|
|
61
|
-
async updateState(cluster, attributes) {
|
|
62
|
-
await this.api.matter.updateAccessoryState(this.uuid, cluster, attributes);
|
|
63
|
-
this.logDebug(`Updated ${cluster} state:`, attributes);
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Log helper methods
|
|
67
|
-
*/
|
|
68
|
-
// Generic logging delegation: prefer platform-provided log helpers in
|
|
69
|
-
// `this.context` (infoLog/debugLog/warnLog/errorLog) and fall back to the
|
|
70
|
-
// local `this.log` methods when not available.
|
|
71
|
-
logWith(level, message, ...args) {
|
|
72
|
-
const ctx = this.context;
|
|
73
|
-
const map = {
|
|
74
|
-
info: 'infoLog',
|
|
75
|
-
error: 'errorLog',
|
|
76
|
-
debug: 'debugLog',
|
|
77
|
-
warn: 'warnLog',
|
|
78
|
-
};
|
|
79
|
-
const fn = ctx?.[map[level]];
|
|
80
|
-
if (typeof fn === 'function') {
|
|
81
|
-
fn(`[${this.displayName}] ${message}`, ...args);
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
const local = this.log[level];
|
|
85
|
-
if (typeof local === 'function') {
|
|
86
|
-
local.call(this.log, `[${this.displayName}] ${message}`, ...args);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
logInfo(message, ...args) {
|
|
90
|
-
this.logWith('info', message, ...args);
|
|
91
|
-
}
|
|
92
|
-
logError(message, ...args) {
|
|
93
|
-
this.logWith('error', message, ...args);
|
|
94
|
-
}
|
|
95
|
-
logDebug(message, ...args) {
|
|
96
|
-
this.logWith('debug', message, ...args);
|
|
97
|
-
}
|
|
98
|
-
logWarn(message, ...args) {
|
|
99
|
-
this.logWith('warn', message, ...args);
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Logging helpers parity: allow Matter accessories to ask whether device-level
|
|
103
|
-
* logging is enabled or in debug mode. These mirror the helpers used by the
|
|
104
|
-
* HAP/IR device bases so behavior is consistent across platforms.
|
|
105
|
-
*/
|
|
106
|
-
async loggingIsDebug() {
|
|
107
|
-
const ctx = this.context;
|
|
108
|
-
return deviceLoggingIsDebug(ctx?.deviceLogging);
|
|
109
|
-
}
|
|
110
|
-
async enablingDeviceLogging() {
|
|
111
|
-
const ctx = this.context;
|
|
112
|
-
return deviceLoggingEnabled(ctx?.deviceLogging, ctx?.platformLogging);
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Status code logging using shared helper
|
|
116
|
-
*/
|
|
117
|
-
async statusCode(statusCode, deviceId, hubDeviceId) {
|
|
118
|
-
await logDeviceStatusCode(statusCode, {
|
|
119
|
-
debugLog: this.logDebug.bind(this),
|
|
120
|
-
errorLog: this.logError.bind(this),
|
|
121
|
-
infoLog: this.logInfo.bind(this),
|
|
122
|
-
}, deviceId ?? this.context?.deviceId, hubDeviceId ?? this.context?.hubDeviceId);
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Convenience helpers that delegate OpenAPI/BLE commands to platform-provided
|
|
126
|
-
* functions that are injected into the accessory `context` by
|
|
127
|
-
* `platform-matter` when the accessory is created from a discovered device.
|
|
128
|
-
*
|
|
129
|
-
* These methods are intentionally thin wrappers — the platform controls
|
|
130
|
-
* retries, discovery and client lifecycle via the helper functions.
|
|
131
|
-
*/
|
|
132
|
-
async sendOpenAPICommand(command, parameter = 'default') {
|
|
133
|
-
const ctx = this.context;
|
|
134
|
-
const fn = ctx?.sendOpenAPI;
|
|
135
|
-
if (typeof fn === 'function') {
|
|
136
|
-
return fn(command, parameter);
|
|
137
|
-
}
|
|
138
|
-
throw new Error('OpenAPI helper not available');
|
|
139
|
-
}
|
|
140
|
-
async sendBLECommand(methodName, ...args) {
|
|
141
|
-
const ctx = this.context;
|
|
142
|
-
const fn = ctx?.sendBLE;
|
|
143
|
-
if (typeof fn === 'function') {
|
|
144
|
-
return fn(methodName, ...args);
|
|
145
|
-
}
|
|
146
|
-
throw new Error('BLE helper not available');
|
|
147
|
-
}
|
|
148
|
-
async sendOnCommand(deviceId) {
|
|
149
|
-
const ctx = this.context;
|
|
150
|
-
const id = deviceId ?? ctx?.deviceId;
|
|
151
|
-
try {
|
|
152
|
-
if (ctx?.connectionType === 'BLE') {
|
|
153
|
-
await this.sendBLECommand('turnOn');
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
await this.sendOpenAPICommand('turnOn');
|
|
157
|
-
}
|
|
158
|
-
// update our matter state
|
|
159
|
-
await this.updateState(this.api.matter.clusterNames.OnOff, { onOff: true });
|
|
160
|
-
this.logInfo(`sendOnCommand successful for ${id}`);
|
|
161
|
-
}
|
|
162
|
-
catch (e) {
|
|
163
|
-
this.logError(`sendOnCommand failed for ${id}: ${String(e?.message ?? e)}`);
|
|
164
|
-
throw e;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
async sendOffCommand(deviceId) {
|
|
168
|
-
const ctx = this.context;
|
|
169
|
-
const id = deviceId ?? ctx?.deviceId;
|
|
170
|
-
try {
|
|
171
|
-
if (ctx?.connectionType === 'BLE') {
|
|
172
|
-
await this.sendBLECommand('turnOff');
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
await this.sendOpenAPICommand('turnOff');
|
|
176
|
-
}
|
|
177
|
-
await this.updateState(this.api.matter.clusterNames.OnOff, { onOff: false });
|
|
178
|
-
this.logInfo(`sendOffCommand successful for ${id}`);
|
|
179
|
-
}
|
|
180
|
-
catch (e) {
|
|
181
|
-
this.logError(`sendOffCommand failed for ${id}: ${String(e?.message ?? e)}`);
|
|
182
|
-
throw e;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
async sendSetBrightness(percent, deviceId) {
|
|
186
|
-
const ctx = this.context;
|
|
187
|
-
const id = deviceId ?? ctx?.deviceId;
|
|
188
|
-
try {
|
|
189
|
-
if (ctx?.connectionType === 'BLE') {
|
|
190
|
-
await this.sendBLECommand('setBrightness', percent);
|
|
191
|
-
}
|
|
192
|
-
else {
|
|
193
|
-
await this.sendOpenAPICommand('setBrightness', String(percent));
|
|
194
|
-
}
|
|
195
|
-
const level = Math.round((percent / 100) * 254);
|
|
196
|
-
await this.updateState(this.api.matter.clusterNames.LevelControl, { currentLevel: level });
|
|
197
|
-
this.logInfo(`sendSetBrightness successful for ${id}: ${percent}%`);
|
|
198
|
-
}
|
|
199
|
-
catch (e) {
|
|
200
|
-
this.logError(`sendSetBrightness failed for ${id}: ${String(e?.message ?? e)}`);
|
|
201
|
-
throw e;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
async sendSetColor(r, g, b, deviceId) {
|
|
205
|
-
const ctx = this.context;
|
|
206
|
-
const id = deviceId ?? ctx?.deviceId;
|
|
207
|
-
try {
|
|
208
|
-
if (ctx?.connectionType === 'BLE') {
|
|
209
|
-
await this.sendBLECommand('setRGB', r, g, b);
|
|
210
|
-
}
|
|
211
|
-
else {
|
|
212
|
-
await this.sendOpenAPICommand('setColor', `${r}:${g}:${b}`);
|
|
213
|
-
}
|
|
214
|
-
// Convert to hue/sat for matter state update
|
|
215
|
-
const [h, s] = rgb2hs(r, g, b);
|
|
216
|
-
await this.updateState(this.api.matter.clusterNames.ColorControl, { currentHue: Math.round((h / 360) * 254), currentSaturation: Math.round((s / 100) * 254) });
|
|
217
|
-
this.logInfo(`sendSetColor successful for ${id}: ${r},${g},${b}`);
|
|
218
|
-
}
|
|
219
|
-
catch (e) {
|
|
220
|
-
this.logError(`sendSetColor failed for ${id}: ${String(e?.message ?? e)}`);
|
|
221
|
-
throw e;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
async sendSetColorTemperature(kelvin, deviceId) {
|
|
225
|
-
const ctx = this.context;
|
|
226
|
-
const id = deviceId ?? ctx?.deviceId;
|
|
227
|
-
try {
|
|
228
|
-
if (ctx?.connectionType === 'BLE') {
|
|
229
|
-
await this.sendBLECommand('setColorTemperature', kelvin);
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
await this.sendOpenAPICommand('setColorTemperature', `${kelvin}`);
|
|
233
|
-
}
|
|
234
|
-
const mireds = Math.round(1000000 / kelvin);
|
|
235
|
-
await this.updateState(this.api.matter.clusterNames.ColorControl, { colorTemperatureMireds: mireds });
|
|
236
|
-
this.logInfo(`sendSetColorTemperature successful for ${id}: ${kelvin}K`);
|
|
237
|
-
}
|
|
238
|
-
catch (e) {
|
|
239
|
-
this.logError(`sendSetColorTemperature failed for ${id}: ${String(e?.message ?? e)}`);
|
|
240
|
-
throw e;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Convert this class instance to a plain MatterAccessory object
|
|
245
|
-
* This is what gets registered with Homebridge
|
|
246
|
-
*/
|
|
247
|
-
toAccessory() {
|
|
248
|
-
return {
|
|
249
|
-
uuid: this.uuid,
|
|
250
|
-
displayName: this.displayName,
|
|
251
|
-
deviceType: this.deviceType,
|
|
252
|
-
serialNumber: this.serialNumber,
|
|
253
|
-
manufacturer: this.manufacturer,
|
|
254
|
-
model: this.model,
|
|
255
|
-
firmwareRevision: this.firmwareRevision,
|
|
256
|
-
hardwareRevision: this.hardwareRevision,
|
|
257
|
-
context: this.context,
|
|
258
|
-
clusters: this.clusters,
|
|
259
|
-
handlers: this.handlers,
|
|
260
|
-
parts: this.parts,
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
//# sourceMappingURL=BaseMatterAccessory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseMatterAccessory.js","sourceRoot":"","sources":["../../src/devices-matter/BaseMatterAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Color Light Accessory Class (HS only)
|
|
3
|
-
* Hue and Saturation color control
|
|
4
|
-
*/
|
|
5
|
-
import type { API, Logger } from 'homebridge';
|
|
6
|
-
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
7
|
-
export declare class ColorLightAccessory extends BaseMatterAccessory {
|
|
8
|
-
constructor(api: API, log: Logger, opts?: Partial<import('./BaseMatterAccessory').BaseMatterAccessoryConfig & {
|
|
9
|
-
deviceId?: string;
|
|
10
|
-
}>);
|
|
11
|
-
private handleOn;
|
|
12
|
-
private handleOff;
|
|
13
|
-
private handleSetLevel;
|
|
14
|
-
private handleSetColor;
|
|
15
|
-
private handleSetHueSaturation;
|
|
16
|
-
updateOnOffState(isOn: boolean): void;
|
|
17
|
-
updateBrightness(percent: number): void;
|
|
18
|
-
updateHueSaturation(hue: number, saturation: number): void;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=ColorLightAccessory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColorLightAccessory.d.ts","sourceRoot":"","sources":["../../src/devices-matter/ColorLightAccessory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAkB,MAAM,YAAY,CAAA;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,mBAAoB,SAAQ,mBAAmB;gBAC9C,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,uBAAuB,EAAE,yBAAyB,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;YA8CtH,QAAQ;YAKR,SAAS;YAKT,cAAc;YAOd,cAAc;YASd,sBAAsB;IAS7B,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIrC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKvC,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAQlE"}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Color Light Accessory Class (HS only)
|
|
3
|
-
* Hue and Saturation color control
|
|
4
|
-
*/
|
|
5
|
-
import { hs2rgb } from '../utils.js';
|
|
6
|
-
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
7
|
-
export class ColorLightAccessory extends BaseMatterAccessory {
|
|
8
|
-
constructor(api, log, opts) {
|
|
9
|
-
const serialNumber = opts?.serialNumber ?? 'LIGHT-004';
|
|
10
|
-
const displayName = opts?.displayName ?? 'Colour Light (HS)';
|
|
11
|
-
const manufacturer = opts?.manufacturer ?? 'Homebridge Matter';
|
|
12
|
-
const model = opts?.model ?? 'HB-MATTER-LIGHT-COLOUR-HS';
|
|
13
|
-
const firmwareRevision = opts?.firmwareRevision ?? '2.0.0';
|
|
14
|
-
const hardwareRevision = opts?.hardwareRevision ?? '1.0.0';
|
|
15
|
-
const clusters = opts?.clusters ?? {
|
|
16
|
-
onOff: { onOff: false },
|
|
17
|
-
levelControl: { currentLevel: 127, minLevel: 1, maxLevel: 254 },
|
|
18
|
-
colorControl: {
|
|
19
|
-
colorMode: api.matter.types.ColorControl.ColorMode.CurrentHueAndCurrentSaturation,
|
|
20
|
-
currentHue: 0,
|
|
21
|
-
currentSaturation: 254,
|
|
22
|
-
currentX: 41942,
|
|
23
|
-
currentY: 21626,
|
|
24
|
-
},
|
|
25
|
-
};
|
|
26
|
-
const handlers = opts?.handlers ?? {
|
|
27
|
-
onOff: { on: async () => this.handleOn(), off: async () => this.handleOff() },
|
|
28
|
-
levelControl: { moveToLevelWithOnOff: async (request) => this.handleSetLevel(request) },
|
|
29
|
-
colorControl: {
|
|
30
|
-
moveToColorLogic: async (request) => this.handleSetColor(request),
|
|
31
|
-
moveToHueAndSaturationLogic: async (request) => this.handleSetHueSaturation(request),
|
|
32
|
-
},
|
|
33
|
-
};
|
|
34
|
-
super(api, log, {
|
|
35
|
-
uuid: opts?.uuid ?? api.matter.uuid.generate(serialNumber),
|
|
36
|
-
displayName,
|
|
37
|
-
deviceType: api.matter.deviceTypes.ExtendedColorLight,
|
|
38
|
-
serialNumber,
|
|
39
|
-
manufacturer,
|
|
40
|
-
model,
|
|
41
|
-
firmwareRevision,
|
|
42
|
-
hardwareRevision,
|
|
43
|
-
clusters,
|
|
44
|
-
handlers,
|
|
45
|
-
context: { deviceId: opts?.deviceId, ...(opts?.context ?? {}) },
|
|
46
|
-
});
|
|
47
|
-
this.logInfo('initialized.');
|
|
48
|
-
}
|
|
49
|
-
async handleOn() {
|
|
50
|
-
this.logInfo('turning on.');
|
|
51
|
-
await this.sendOnCommand();
|
|
52
|
-
}
|
|
53
|
-
async handleOff() {
|
|
54
|
-
this.logInfo('turning off.');
|
|
55
|
-
await this.sendOffCommand();
|
|
56
|
-
}
|
|
57
|
-
async handleSetLevel(request) {
|
|
58
|
-
this.logInfo(`MoveToLevel request: ${JSON.stringify(request)}`);
|
|
59
|
-
const { level } = request;
|
|
60
|
-
const brightnessPercent = Math.round((level / 254) * 100);
|
|
61
|
-
await this.sendSetBrightness(brightnessPercent);
|
|
62
|
-
}
|
|
63
|
-
async handleSetColor(request) {
|
|
64
|
-
this.logInfo(`MoveToColor request: ${JSON.stringify(request)}`);
|
|
65
|
-
const { colorX, colorY } = request;
|
|
66
|
-
const hueApprox = Math.round((colorX / 65535) * 360);
|
|
67
|
-
const satApprox = Math.round((colorY / 65535) * 100);
|
|
68
|
-
const [r, g, b] = hs2rgb(hueApprox, satApprox);
|
|
69
|
-
await this.sendSetColor(r, g, b);
|
|
70
|
-
}
|
|
71
|
-
async handleSetHueSaturation(request) {
|
|
72
|
-
this.logInfo(`MoveToHueAndSaturation request: ${JSON.stringify(request)}`);
|
|
73
|
-
const { hue, saturation } = request;
|
|
74
|
-
const hueDegrees = Math.round((hue / 254) * 360);
|
|
75
|
-
const saturationPercent = Math.round((saturation / 254) * 100);
|
|
76
|
-
const [r, g, b] = hs2rgb(hueDegrees, saturationPercent);
|
|
77
|
-
await this.sendSetColor(r, g, b);
|
|
78
|
-
}
|
|
79
|
-
updateOnOffState(isOn) {
|
|
80
|
-
this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
|
|
81
|
-
}
|
|
82
|
-
updateBrightness(percent) {
|
|
83
|
-
const matterLevel = Math.max(1, Math.round((percent / 100) * 254));
|
|
84
|
-
this.updateState(this.api.matter.clusterNames.LevelControl, { currentLevel: matterLevel });
|
|
85
|
-
}
|
|
86
|
-
updateHueSaturation(hue, saturation) {
|
|
87
|
-
const matterHue = Math.round((hue / 360) * 254);
|
|
88
|
-
const matterSat = Math.round((saturation / 100) * 254);
|
|
89
|
-
this.updateState(this.api.matter.clusterNames.ColorControl, {
|
|
90
|
-
currentHue: matterHue,
|
|
91
|
-
currentSaturation: matterSat,
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=ColorLightAccessory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColorLightAccessory.js","sourceRoot":"","sources":["../../src/devices-matter/ColorLightAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Color Temperature Light Accessory Class
|
|
3
|
-
*/
|
|
4
|
-
import type { API, Logger } from 'homebridge';
|
|
5
|
-
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
6
|
-
export declare class ColorTemperatureLightAccessory extends BaseMatterAccessory {
|
|
7
|
-
constructor(api: API, log: Logger, opts?: Partial<import('./BaseMatterAccessory').BaseMatterAccessoryConfig & {
|
|
8
|
-
deviceId?: string;
|
|
9
|
-
}>);
|
|
10
|
-
private handleOn;
|
|
11
|
-
private handleOff;
|
|
12
|
-
private handleSetLevel;
|
|
13
|
-
private handleSetColorTemperature;
|
|
14
|
-
updateOnOffState(isOn: boolean): void;
|
|
15
|
-
updateBrightness(percent: number): void;
|
|
16
|
-
updateColorTemperature(kelvin: number): void;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=ColorTemperatureLightAccessory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColorTemperatureLightAccessory.d.ts","sourceRoot":"","sources":["../../src/devices-matter/ColorTemperatureLightAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAkB,MAAM,YAAY,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,8BAA+B,SAAQ,mBAAmB;gBACzD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,uBAAuB,EAAE,yBAAyB,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;YA2CtH,QAAQ;YAKR,SAAS;YAKT,cAAc;YAOd,yBAAyB;IAOhC,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIrC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKvC,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAIpD"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Color Temperature Light Accessory Class
|
|
3
|
-
*/
|
|
4
|
-
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
5
|
-
export class ColorTemperatureLightAccessory extends BaseMatterAccessory {
|
|
6
|
-
constructor(api, log, opts) {
|
|
7
|
-
const serialNumber = opts?.serialNumber ?? 'LIGHT-003';
|
|
8
|
-
const displayName = opts?.displayName ?? 'Colour Temperature Light';
|
|
9
|
-
const manufacturer = opts?.manufacturer ?? 'Homebridge Matter';
|
|
10
|
-
const model = opts?.model ?? 'HB-MATTER-LIGHT-COLOUR-TEMP';
|
|
11
|
-
const firmwareRevision = opts?.firmwareRevision ?? '2.0.0';
|
|
12
|
-
const hardwareRevision = opts?.hardwareRevision ?? '1.0.0';
|
|
13
|
-
const clusters = opts?.clusters ?? {
|
|
14
|
-
onOff: { onOff: false },
|
|
15
|
-
levelControl: { currentLevel: 127, minLevel: 1, maxLevel: 254 },
|
|
16
|
-
colorControl: {
|
|
17
|
-
colorMode: api.matter.types.ColorControl.ColorMode.ColorTemperatureMireds,
|
|
18
|
-
colorTemperatureMireds: 250,
|
|
19
|
-
colorTempPhysicalMinMireds: 147,
|
|
20
|
-
colorTempPhysicalMaxMireds: 454,
|
|
21
|
-
coupleColorTempToLevelMinMireds: 147,
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
const handlers = opts?.handlers ?? {
|
|
25
|
-
onOff: { on: async () => this.handleOn(), off: async () => this.handleOff() },
|
|
26
|
-
levelControl: { moveToLevelWithOnOff: async (request) => this.handleSetLevel(request) },
|
|
27
|
-
colorControl: { moveToColorTemperatureLogic: async (request) => this.handleSetColorTemperature(request) },
|
|
28
|
-
};
|
|
29
|
-
super(api, log, {
|
|
30
|
-
uuid: opts?.uuid ?? api.matter.uuid.generate(serialNumber),
|
|
31
|
-
displayName,
|
|
32
|
-
deviceType: api.matter.deviceTypes.ColorTemperatureLight,
|
|
33
|
-
serialNumber,
|
|
34
|
-
manufacturer,
|
|
35
|
-
model,
|
|
36
|
-
firmwareRevision,
|
|
37
|
-
hardwareRevision,
|
|
38
|
-
clusters,
|
|
39
|
-
handlers,
|
|
40
|
-
context: { deviceId: opts?.deviceId, ...(opts?.context ?? {}) },
|
|
41
|
-
});
|
|
42
|
-
this.logInfo('initialized.');
|
|
43
|
-
}
|
|
44
|
-
async handleOn() {
|
|
45
|
-
this.logInfo('turning on.');
|
|
46
|
-
await this.sendOnCommand();
|
|
47
|
-
}
|
|
48
|
-
async handleOff() {
|
|
49
|
-
this.logInfo('turning off.');
|
|
50
|
-
await this.sendOffCommand();
|
|
51
|
-
}
|
|
52
|
-
async handleSetLevel(request) {
|
|
53
|
-
this.logInfo(`MoveToLevel request: ${JSON.stringify(request)}`);
|
|
54
|
-
const { level } = request;
|
|
55
|
-
const brightnessPercent = Math.round((level / 254) * 100);
|
|
56
|
-
await this.sendSetBrightness(brightnessPercent);
|
|
57
|
-
}
|
|
58
|
-
async handleSetColorTemperature(request) {
|
|
59
|
-
this.logInfo(`MoveToColorTemperature request: ${JSON.stringify(request)}`);
|
|
60
|
-
const { colorTemperatureMireds } = request;
|
|
61
|
-
const kelvin = Math.round(1000000 / colorTemperatureMireds);
|
|
62
|
-
await this.sendSetColorTemperature(kelvin);
|
|
63
|
-
}
|
|
64
|
-
updateOnOffState(isOn) {
|
|
65
|
-
this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
|
|
66
|
-
}
|
|
67
|
-
updateBrightness(percent) {
|
|
68
|
-
const matterLevel = Math.max(1, Math.round((percent / 100) * 254));
|
|
69
|
-
this.updateState(this.api.matter.clusterNames.LevelControl, { currentLevel: matterLevel });
|
|
70
|
-
}
|
|
71
|
-
updateColorTemperature(kelvin) {
|
|
72
|
-
const mireds = Math.round(1000000 / kelvin);
|
|
73
|
-
this.updateState(this.api.matter.clusterNames.ColorControl, { colorTemperatureMireds: mireds });
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=ColorTemperatureLightAccessory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColorTemperatureLightAccessory.js","sourceRoot":"","sources":["../../src/devices-matter/ColorTemperatureLightAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Contact Sensor Accessory Class
|
|
3
|
-
*/
|
|
4
|
-
import type { API, Logger } from 'homebridge';
|
|
5
|
-
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
6
|
-
export declare class ContactSensorAccessory extends BaseMatterAccessory {
|
|
7
|
-
constructor(api: API, log: Logger, opts?: Partial<import('./BaseMatterAccessory').BaseMatterAccessoryConfig & {
|
|
8
|
-
deviceId?: string;
|
|
9
|
-
}>);
|
|
10
|
-
updateContactState(isOpen: boolean): void;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=ContactSensorAccessory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContactSensorAccessory.d.ts","sourceRoot":"","sources":["../../src/devices-matter/ContactSensorAccessory.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,sBAAuB,SAAQ,mBAAmB;gBACjD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,uBAAuB,EAAE,yBAAyB,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA0B7H,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;CAKjD"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Contact Sensor Accessory Class
|
|
3
|
-
*/
|
|
4
|
-
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
5
|
-
export class ContactSensorAccessory extends BaseMatterAccessory {
|
|
6
|
-
constructor(api, log, opts) {
|
|
7
|
-
const serialNumber = opts?.serialNumber ?? 'SENSOR-001';
|
|
8
|
-
const displayName = opts?.displayName ?? 'Contact Sensor';
|
|
9
|
-
const manufacturer = opts?.manufacturer ?? 'Homebridge Matter';
|
|
10
|
-
const model = opts?.model ?? 'HB-MATTER-SENSOR-CONTACT';
|
|
11
|
-
const firmwareRevision = opts?.firmwareRevision ?? '2.0.0';
|
|
12
|
-
const hardwareRevision = opts?.hardwareRevision ?? '1.0.0';
|
|
13
|
-
const clusters = opts?.clusters ?? { booleanState: { stateValue: true } };
|
|
14
|
-
super(api, log, {
|
|
15
|
-
uuid: opts?.uuid ?? api.matter.uuid.generate(serialNumber),
|
|
16
|
-
displayName,
|
|
17
|
-
deviceType: api.matter.deviceTypes.ContactSensor,
|
|
18
|
-
serialNumber,
|
|
19
|
-
manufacturer,
|
|
20
|
-
model,
|
|
21
|
-
firmwareRevision,
|
|
22
|
-
hardwareRevision,
|
|
23
|
-
clusters,
|
|
24
|
-
context: { deviceId: opts?.deviceId, ...(opts?.context ?? {}) },
|
|
25
|
-
});
|
|
26
|
-
this.logInfo('initialized.');
|
|
27
|
-
}
|
|
28
|
-
updateContactState(isOpen) {
|
|
29
|
-
// Matter BooleanState: false = open/triggered, true = closed/normal (inverted!)
|
|
30
|
-
this.updateState(this.api.matter.clusterNames.BooleanState, { stateValue: !isOpen });
|
|
31
|
-
this.logInfo(`contact state: ${isOpen ? 'OPEN' : 'CLOSED'}.`);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=ContactSensorAccessory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContactSensorAccessory.js","sourceRoot":"","sources":["../../src/devices-matter/ContactSensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAC7D,YAAY,GAAQ,EAAE,GAAW,EAAE,IAAiG;QAClI,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,YAAY,CAAA;QACvD,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,gBAAgB,CAAA;QACzD,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,mBAAmB,CAAA;QAC9D,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,0BAA0B,CAAA;QACvD,MAAM,gBAAgB,GAAG,IAAI,EAAE,gBAAgB,IAAI,OAAO,CAAA;QAC1D,MAAM,gBAAgB,GAAG,IAAI,EAAE,gBAAgB,IAAI,OAAO,CAAA;QAE1D,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAA;QAEzE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC1D,WAAW;YACX,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;YAChD,YAAY;YACZ,YAAY;YACZ,KAAK;YACL,gBAAgB;YAChB,gBAAgB;YAChB,QAAQ;YACR,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE;SAChE,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEM,kBAAkB,CAAC,MAAe;QACvC,gFAAgF;QAChF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;QACpF,IAAI,CAAC,OAAO,CAAC,kBAAkB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAA;IAC/D,CAAC;CACF"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dimmable Light Accessory Class
|
|
3
|
-
*
|
|
4
|
-
* Example of a more complex device with multiple clusters.
|
|
5
|
-
* Shows how to handle devices with on/off + level control.
|
|
6
|
-
*/
|
|
7
|
-
import type { API, Logger } from 'homebridge';
|
|
8
|
-
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
9
|
-
/**
|
|
10
|
-
* Dimmable Light Device Class
|
|
11
|
-
*
|
|
12
|
-
* Demonstrates:
|
|
13
|
-
* - Multiple clusters (OnOff + LevelControl)
|
|
14
|
-
* - Type-safe request handlers
|
|
15
|
-
* - Value conversion (Matter level ↔ percentage)
|
|
16
|
-
* - Custom public methods for external control
|
|
17
|
-
*/
|
|
18
|
-
export declare class DimmableLightAccessory extends BaseMatterAccessory {
|
|
19
|
-
private currentLevel;
|
|
20
|
-
constructor(api: API, log: Logger, opts?: Partial<import('./BaseMatterAccessory').BaseMatterAccessoryConfig & {
|
|
21
|
-
deviceId?: string;
|
|
22
|
-
}>);
|
|
23
|
-
/**
|
|
24
|
-
* Handle the "on" command
|
|
25
|
-
*/
|
|
26
|
-
private handleOn;
|
|
27
|
-
/**
|
|
28
|
-
* Handle the "off" command
|
|
29
|
-
*/
|
|
30
|
-
private handleOff;
|
|
31
|
-
/**
|
|
32
|
-
* Handle brightness level changes
|
|
33
|
-
*/
|
|
34
|
-
private handleSetLevel;
|
|
35
|
-
/**
|
|
36
|
-
* Update on/off state from external source
|
|
37
|
-
*/
|
|
38
|
-
updateOnOffState(isOn: boolean): void;
|
|
39
|
-
/**
|
|
40
|
-
* Update brightness level from external source
|
|
41
|
-
* @param percent - Brightness percentage (0-100)
|
|
42
|
-
*/
|
|
43
|
-
updateBrightness(percent: number): void;
|
|
44
|
-
/**
|
|
45
|
-
* Get current brightness as percentage
|
|
46
|
-
*/
|
|
47
|
-
getBrightness(): number;
|
|
48
|
-
/**
|
|
49
|
-
* Set brightness and power state together
|
|
50
|
-
* Useful for syncing complete state from external source
|
|
51
|
-
*/
|
|
52
|
-
updateFullState(isOn: boolean, percent: number): void;
|
|
53
|
-
/**
|
|
54
|
-
* Example monitoring setup
|
|
55
|
-
*/
|
|
56
|
-
startMonitoring(): void;
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=DimmableLightAccessory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DimmableLightAccessory.d.ts","sourceRoot":"","sources":["../../src/devices-matter/DimmableLightAccessory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAkB,MAAM,YAAY,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,SAAQ,mBAAmB;IAE7D,OAAO,CAAC,YAAY,CAAc;gBAEtB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,uBAAuB,EAAE,yBAAyB,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAwCpI;;OAEG;YACW,QAAQ;IActB;;OAEG;YACW,SAAS;IAcvB;;OAEG;YACW,cAAc;IAqB5B;;OAEG;IACI,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAK5C;;;OAGG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAkB9C;;OAEG;IACI,aAAa,IAAI,MAAM;IAI9B;;;OAGG;IACI,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAO5D;;OAEG;IACI,eAAe,IAAI,IAAI;CAkB/B"}
|