@switchbot/homebridge-switchbot 4.3.2-beta.8 → 5.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/copilot-instructions.md +328 -0
- package/.github/workflows/beta-release.yml +8 -12
- package/.github/workflows/release.yml +57 -21
- package/README.md +13 -10
- package/config.schema.json +1 -12
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +15847 -0
- package/coverage/coverage-final.json +42 -0
- package/coverage/docs/assets/dmt/dmt-component-data.js.html +85 -0
- package/coverage/docs/assets/dmt/dmt-components.js.html +286 -0
- package/coverage/docs/assets/dmt/index.html +131 -0
- package/coverage/docs/assets/hierarchy.js.html +85 -0
- package/coverage/docs/assets/icons.js.html +136 -0
- package/coverage/docs/assets/index.html +146 -0
- package/coverage/docs/assets/main.js.html +265 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +191 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/coverage/src/device/blindtilt.ts.html +3238 -0
- package/coverage/src/device/bot.ts.html +2803 -0
- package/coverage/src/device/ceilinglight.ts.html +2338 -0
- package/coverage/src/device/colorbulb.ts.html +2824 -0
- package/coverage/src/device/contact.ts.html +1465 -0
- package/coverage/src/device/curtain.ts.html +2869 -0
- package/coverage/src/device/device.ts.html +2500 -0
- package/coverage/src/device/fan.ts.html +2242 -0
- package/coverage/src/device/hub.ts.html +1408 -0
- package/coverage/src/device/humidifier.ts.html +2116 -0
- package/coverage/src/device/index.html +416 -0
- package/coverage/src/device/iosensor.ts.html +1375 -0
- package/coverage/src/device/lightstrip.ts.html +2617 -0
- package/coverage/src/device/lock.ts.html +1963 -0
- package/coverage/src/device/meter.ts.html +1372 -0
- package/coverage/src/device/meterplus.ts.html +1384 -0
- package/coverage/src/device/meterpro.ts.html +1618 -0
- package/coverage/src/device/motion.ts.html +1264 -0
- package/coverage/src/device/plug.ts.html +1372 -0
- package/coverage/src/device/relayswitch.ts.html +2284 -0
- package/coverage/src/device/robotvacuumcleaner.ts.html +1810 -0
- package/coverage/src/device/waterdetector.ts.html +1294 -0
- package/coverage/src/homebridge-ui/index.html +116 -0
- package/coverage/src/homebridge-ui/server.ts.html +229 -0
- package/coverage/src/index.html +161 -0
- package/coverage/src/index.ts.html +124 -0
- package/coverage/src/irdevice/airconditioner.ts.html +1687 -0
- package/coverage/src/irdevice/airpurifier.ts.html +844 -0
- package/coverage/src/irdevice/camera.ts.html +475 -0
- package/coverage/src/irdevice/fan.ts.html +766 -0
- package/coverage/src/irdevice/index.html +251 -0
- package/coverage/src/irdevice/irdevice.ts.html +1117 -0
- package/coverage/src/irdevice/light.ts.html +826 -0
- package/coverage/src/irdevice/other.ts.html +2458 -0
- package/coverage/src/irdevice/tv.ts.html +1222 -0
- package/coverage/src/irdevice/vacuumcleaner.ts.html +466 -0
- package/coverage/src/irdevice/waterheater.ts.html +469 -0
- package/coverage/src/platform.ts.html +8776 -0
- package/coverage/src/settings.ts.html +934 -0
- package/coverage/src/utils.ts.html +2092 -0
- package/dist/{device → devices-hap}/airpurifier.d.ts +3 -3
- package/dist/devices-hap/airpurifier.d.ts.map +1 -0
- package/dist/devices-hap/airpurifier.js.map +1 -0
- package/dist/{device → devices-hap}/blindtilt.d.ts +3 -3
- package/dist/devices-hap/blindtilt.d.ts.map +1 -0
- package/dist/{device → devices-hap}/blindtilt.js +6 -1
- package/dist/devices-hap/blindtilt.js.map +1 -0
- package/dist/{device → devices-hap}/bot.d.ts +3 -3
- package/dist/devices-hap/bot.d.ts.map +1 -0
- package/dist/devices-hap/bot.js.map +1 -0
- package/dist/{device → devices-hap}/ceilinglight.d.ts +3 -3
- package/dist/devices-hap/ceilinglight.d.ts.map +1 -0
- package/dist/devices-hap/ceilinglight.js.map +1 -0
- package/dist/{device → devices-hap}/colorbulb.d.ts +3 -3
- package/dist/devices-hap/colorbulb.d.ts.map +1 -0
- package/dist/devices-hap/colorbulb.js.map +1 -0
- package/dist/{device → devices-hap}/contact.d.ts +3 -3
- package/dist/devices-hap/contact.d.ts.map +1 -0
- package/dist/devices-hap/contact.js.map +1 -0
- package/dist/{device → devices-hap}/curtain.d.ts +3 -3
- package/dist/devices-hap/curtain.d.ts.map +1 -0
- package/dist/{device → devices-hap}/curtain.js +32 -8
- package/dist/devices-hap/curtain.js.map +1 -0
- package/dist/{device → devices-hap}/device.d.ts +3 -3
- package/dist/devices-hap/device.d.ts.map +1 -0
- package/dist/{device → devices-hap}/device.js +10 -4
- package/dist/devices-hap/device.js.map +1 -0
- package/dist/{device → devices-hap}/fan.d.ts +3 -3
- package/dist/devices-hap/fan.d.ts.map +1 -0
- package/dist/devices-hap/fan.js.map +1 -0
- package/dist/{device → devices-hap}/hub.d.ts +5 -5
- package/dist/devices-hap/hub.d.ts.map +1 -0
- package/dist/{device → devices-hap}/hub.js +2 -1
- package/dist/devices-hap/hub.js.map +1 -0
- package/dist/{device → devices-hap}/humidifier.d.ts +3 -3
- package/dist/devices-hap/humidifier.d.ts.map +1 -0
- package/dist/devices-hap/humidifier.js.map +1 -0
- package/dist/{device → devices-hap}/iosensor.d.ts +3 -3
- package/dist/devices-hap/iosensor.d.ts.map +1 -0
- package/dist/devices-hap/iosensor.js.map +1 -0
- package/dist/{device → devices-hap}/lightstrip.d.ts +3 -3
- package/dist/devices-hap/lightstrip.d.ts.map +1 -0
- package/dist/devices-hap/lightstrip.js.map +1 -0
- package/dist/{device → devices-hap}/lock.d.ts +3 -3
- package/dist/devices-hap/lock.d.ts.map +1 -0
- package/dist/devices-hap/lock.js.map +1 -0
- package/dist/{device → devices-hap}/meter.d.ts +3 -3
- package/dist/devices-hap/meter.d.ts.map +1 -0
- package/dist/devices-hap/meter.js.map +1 -0
- package/dist/{device → devices-hap}/meterplus.d.ts +3 -3
- package/dist/devices-hap/meterplus.d.ts.map +1 -0
- package/dist/devices-hap/meterplus.js.map +1 -0
- package/dist/{device → devices-hap}/meterpro.d.ts +3 -3
- package/dist/devices-hap/meterpro.d.ts.map +1 -0
- package/dist/{device → devices-hap}/meterpro.js +16 -3
- package/dist/devices-hap/meterpro.js.map +1 -0
- package/dist/{device → devices-hap}/motion.d.ts +3 -3
- package/dist/devices-hap/motion.d.ts.map +1 -0
- package/dist/devices-hap/motion.js.map +1 -0
- package/dist/{device → devices-hap}/plug.d.ts +3 -3
- package/dist/devices-hap/plug.d.ts.map +1 -0
- package/dist/devices-hap/plug.js.map +1 -0
- package/dist/{device → devices-hap}/relayswitch.d.ts +3 -3
- package/dist/devices-hap/relayswitch.d.ts.map +1 -0
- package/dist/devices-hap/relayswitch.js.map +1 -0
- package/dist/{device → devices-hap}/robotvacuumcleaner.d.ts +3 -3
- package/dist/devices-hap/robotvacuumcleaner.d.ts.map +1 -0
- package/dist/devices-hap/robotvacuumcleaner.js.map +1 -0
- package/dist/{device → devices-hap}/waterdetector.d.ts +3 -3
- package/dist/devices-hap/waterdetector.d.ts.map +1 -0
- package/dist/devices-hap/waterdetector.js.map +1 -0
- package/dist/devices-matter/BaseMatterAccessory.d.ts +63 -0
- package/dist/devices-matter/BaseMatterAccessory.d.ts.map +1 -0
- package/dist/devices-matter/BaseMatterAccessory.js +100 -0
- package/dist/devices-matter/BaseMatterAccessory.js.map +1 -0
- package/dist/devices-matter/ColorLightAccessory.d.ts +18 -0
- package/dist/devices-matter/ColorLightAccessory.d.ts.map +1 -0
- package/dist/devices-matter/ColorLightAccessory.js +96 -0
- package/dist/devices-matter/ColorLightAccessory.js.map +1 -0
- package/dist/devices-matter/ColorTemperatureLightAccessory.d.ts +16 -0
- package/dist/devices-matter/ColorTemperatureLightAccessory.d.ts.map +1 -0
- package/dist/devices-matter/ColorTemperatureLightAccessory.js +83 -0
- package/dist/devices-matter/ColorTemperatureLightAccessory.js.map +1 -0
- package/dist/devices-matter/ContactSensorAccessory.d.ts +10 -0
- package/dist/devices-matter/ContactSensorAccessory.d.ts.map +1 -0
- package/dist/devices-matter/ContactSensorAccessory.js +31 -0
- package/dist/devices-matter/ContactSensorAccessory.js.map +1 -0
- package/dist/devices-matter/DimmableLightAccessory.d.ts +56 -0
- package/dist/devices-matter/DimmableLightAccessory.d.ts.map +1 -0
- package/dist/devices-matter/DimmableLightAccessory.js +170 -0
- package/dist/devices-matter/DimmableLightAccessory.js.map +1 -0
- package/dist/devices-matter/DoorLockAccessory.d.ts +12 -0
- package/dist/devices-matter/DoorLockAccessory.d.ts.map +1 -0
- package/dist/devices-matter/DoorLockAccessory.js +47 -0
- package/dist/devices-matter/DoorLockAccessory.js.map +1 -0
- package/dist/devices-matter/ExtendedColorLightAccessory.d.ts +19 -0
- package/dist/devices-matter/ExtendedColorLightAccessory.d.ts.map +1 -0
- package/dist/devices-matter/ExtendedColorLightAccessory.js +108 -0
- package/dist/devices-matter/ExtendedColorLightAccessory.js.map +1 -0
- package/dist/devices-matter/FanAccessory.d.ts +14 -0
- package/dist/devices-matter/FanAccessory.d.ts.map +1 -0
- package/dist/devices-matter/FanAccessory.js +73 -0
- package/dist/devices-matter/FanAccessory.js.map +1 -0
- package/dist/devices-matter/HumiditySensorAccessory.d.ts +10 -0
- package/dist/devices-matter/HumiditySensorAccessory.d.ts.map +1 -0
- package/dist/devices-matter/HumiditySensorAccessory.js +33 -0
- package/dist/devices-matter/HumiditySensorAccessory.js.map +1 -0
- package/dist/devices-matter/LeakSensorAccessory.d.ts +10 -0
- package/dist/devices-matter/LeakSensorAccessory.d.ts.map +1 -0
- package/dist/devices-matter/LeakSensorAccessory.js +30 -0
- package/dist/devices-matter/LeakSensorAccessory.js.map +1 -0
- package/dist/devices-matter/LightSensorAccessory.d.ts +10 -0
- package/dist/devices-matter/LightSensorAccessory.d.ts.map +1 -0
- package/dist/devices-matter/LightSensorAccessory.js +33 -0
- package/dist/devices-matter/LightSensorAccessory.js.map +1 -0
- package/dist/devices-matter/OccupancySensorAccessory.d.ts +10 -0
- package/dist/devices-matter/OccupancySensorAccessory.d.ts.map +1 -0
- package/dist/devices-matter/OccupancySensorAccessory.js +43 -0
- package/dist/devices-matter/OccupancySensorAccessory.js.map +1 -0
- package/dist/devices-matter/OnOffLightAccessory.d.ts +36 -0
- package/dist/devices-matter/OnOffLightAccessory.d.ts.map +1 -0
- package/dist/devices-matter/OnOffLightAccessory.js +117 -0
- package/dist/devices-matter/OnOffLightAccessory.js.map +1 -0
- package/dist/devices-matter/OnOffOutletAccessory.d.ts +12 -0
- package/dist/devices-matter/OnOffOutletAccessory.d.ts.map +1 -0
- package/dist/devices-matter/OnOffOutletAccessory.js +43 -0
- package/dist/devices-matter/OnOffOutletAccessory.js.map +1 -0
- package/dist/devices-matter/OnOffSwitchAccessory.d.ts +12 -0
- package/dist/devices-matter/OnOffSwitchAccessory.d.ts.map +1 -0
- package/dist/devices-matter/OnOffSwitchAccessory.js +43 -0
- package/dist/devices-matter/OnOffSwitchAccessory.js.map +1 -0
- package/dist/devices-matter/RoboticVacuumAccessory.d.ts +66 -0
- package/dist/devices-matter/RoboticVacuumAccessory.d.ts.map +1 -0
- package/dist/devices-matter/RoboticVacuumAccessory.js +402 -0
- package/dist/devices-matter/RoboticVacuumAccessory.js.map +1 -0
- package/dist/devices-matter/SmokeCOAlarmAccessory.d.ts +11 -0
- package/dist/devices-matter/SmokeCOAlarmAccessory.d.ts.map +1 -0
- package/dist/devices-matter/SmokeCOAlarmAccessory.js +49 -0
- package/dist/devices-matter/SmokeCOAlarmAccessory.js.map +1 -0
- package/dist/devices-matter/TemperatureSensorAccessory.d.ts +10 -0
- package/dist/devices-matter/TemperatureSensorAccessory.d.ts.map +1 -0
- package/dist/devices-matter/TemperatureSensorAccessory.js +33 -0
- package/dist/devices-matter/TemperatureSensorAccessory.js.map +1 -0
- package/dist/devices-matter/ThermostatAccessory.d.ts +17 -0
- package/dist/devices-matter/ThermostatAccessory.d.ts.map +1 -0
- package/dist/devices-matter/ThermostatAccessory.js +87 -0
- package/dist/devices-matter/ThermostatAccessory.js.map +1 -0
- package/dist/devices-matter/VenetianBlindAccessory.d.ts +17 -0
- package/dist/devices-matter/VenetianBlindAccessory.d.ts.map +1 -0
- package/dist/devices-matter/VenetianBlindAccessory.js +100 -0
- package/dist/devices-matter/VenetianBlindAccessory.js.map +1 -0
- package/dist/devices-matter/WindowBlindAccessory.d.ts +15 -0
- package/dist/devices-matter/WindowBlindAccessory.d.ts.map +1 -0
- package/dist/devices-matter/WindowBlindAccessory.js +81 -0
- package/dist/devices-matter/WindowBlindAccessory.js.map +1 -0
- package/dist/devices-matter/custom/PowerStripAccessory.d.ts +97 -0
- package/dist/devices-matter/custom/PowerStripAccessory.d.ts.map +1 -0
- package/dist/devices-matter/custom/PowerStripAccessory.js +265 -0
- package/dist/devices-matter/custom/PowerStripAccessory.js.map +1 -0
- package/dist/devices-matter/custom/index.d.ts +8 -0
- package/dist/devices-matter/custom/index.d.ts.map +1 -0
- package/dist/devices-matter/custom/index.js +8 -0
- package/dist/devices-matter/custom/index.js.map +1 -0
- package/dist/devices-matter/index.d.ts +29 -0
- package/dist/devices-matter/index.d.ts.map +1 -0
- package/dist/devices-matter/index.js +28 -0
- package/dist/devices-matter/index.js.map +1 -0
- package/dist/homebridge-ui/public/index.html +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +2 -2
- package/dist/index.test.js.map +1 -1
- package/dist/irdevice/airconditioner.d.ts +3 -3
- package/dist/irdevice/airconditioner.d.ts.map +1 -1
- package/dist/irdevice/airconditioner.js.map +1 -1
- package/dist/irdevice/airpurifier.d.ts +3 -3
- package/dist/irdevice/airpurifier.d.ts.map +1 -1
- package/dist/irdevice/airpurifier.js.map +1 -1
- package/dist/irdevice/camera.d.ts +3 -3
- package/dist/irdevice/camera.d.ts.map +1 -1
- package/dist/irdevice/camera.js.map +1 -1
- package/dist/irdevice/fan.d.ts +3 -3
- package/dist/irdevice/fan.d.ts.map +1 -1
- package/dist/irdevice/fan.js.map +1 -1
- package/dist/irdevice/irdevice.d.ts +3 -3
- package/dist/irdevice/irdevice.d.ts.map +1 -1
- package/dist/irdevice/irdevice.js.map +1 -1
- package/dist/irdevice/light.d.ts +3 -3
- package/dist/irdevice/light.d.ts.map +1 -1
- package/dist/irdevice/light.js.map +1 -1
- package/dist/irdevice/other.d.ts +3 -3
- package/dist/irdevice/other.d.ts.map +1 -1
- package/dist/irdevice/other.js.map +1 -1
- package/dist/irdevice/tv.d.ts +3 -3
- package/dist/irdevice/tv.d.ts.map +1 -1
- package/dist/irdevice/tv.js.map +1 -1
- package/dist/irdevice/vacuumcleaner.d.ts +3 -3
- package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
- package/dist/irdevice/vacuumcleaner.js.map +1 -1
- package/dist/irdevice/waterheater.d.ts +3 -3
- package/dist/irdevice/waterheater.d.ts.map +1 -1
- package/dist/irdevice/waterheater.js.map +1 -1
- package/dist/{platform.d.ts → platform-hap.d.ts} +2 -2
- package/dist/platform-hap.d.ts.map +1 -0
- package/dist/{platform.js → platform-hap.js} +32 -31
- package/dist/{platform.js.map → platform-hap.js.map} +1 -1
- package/dist/platform-matter.d.ts +75 -0
- package/dist/platform-matter.d.ts.map +1 -0
- package/dist/platform-matter.js +362 -0
- package/dist/platform-matter.js.map +1 -0
- package/dist/verifyconfig.test.d.ts +2 -0
- package/dist/verifyconfig.test.d.ts.map +1 -0
- package/dist/verifyconfig.test.js +167 -0
- package/dist/verifyconfig.test.js.map +1 -0
- package/docs/index.html +20 -11
- package/docs/variables/default.html +1 -1
- package/package.json +10 -10
- package/src/{device → devices-hap}/airpurifier.ts +2 -2
- package/src/{device → devices-hap}/blindtilt.ts +7 -3
- package/src/{device → devices-hap}/bot.ts +2 -2
- package/src/{device → devices-hap}/ceilinglight.ts +2 -2
- package/src/{device → devices-hap}/colorbulb.ts +2 -2
- package/src/{device → devices-hap}/contact.ts +2 -2
- package/src/{device → devices-hap}/curtain.ts +32 -10
- package/src/{device → devices-hap}/device.ts +12 -6
- package/src/{device → devices-hap}/fan.ts +2 -2
- package/src/{device → devices-hap}/hub.ts +7 -6
- package/src/{device → devices-hap}/humidifier.ts +2 -2
- package/src/{device → devices-hap}/iosensor.ts +2 -2
- package/src/{device → devices-hap}/lightstrip.ts +2 -2
- package/src/{device → devices-hap}/lock.ts +2 -2
- package/src/{device → devices-hap}/meter.ts +2 -2
- package/src/{device → devices-hap}/meterplus.ts +2 -2
- package/src/{device → devices-hap}/meterpro.ts +18 -5
- package/src/{device → devices-hap}/motion.ts +2 -2
- package/src/{device → devices-hap}/plug.ts +2 -2
- package/src/{device → devices-hap}/relayswitch.ts +2 -2
- package/src/{device → devices-hap}/robotvacuumcleaner.ts +2 -2
- package/src/{device → devices-hap}/waterdetector.ts +2 -2
- package/src/devices-matter/BaseMatterAccessory.ts +131 -0
- package/src/devices-matter/ColorLightAccessory.ts +113 -0
- package/src/devices-matter/ColorTemperatureLightAccessory.ts +98 -0
- package/src/devices-matter/ContactSensorAccessory.ts +37 -0
- package/src/devices-matter/DimmableLightAccessory.ts +196 -0
- package/src/devices-matter/DoorLockAccessory.ts +56 -0
- package/src/devices-matter/ExtendedColorLightAccessory.ts +127 -0
- package/src/devices-matter/FanAccessory.ts +87 -0
- package/src/devices-matter/HumiditySensorAccessory.ts +39 -0
- package/src/devices-matter/LeakSensorAccessory.ts +36 -0
- package/src/devices-matter/LightSensorAccessory.ts +39 -0
- package/src/devices-matter/OccupancySensorAccessory.ts +52 -0
- package/src/devices-matter/OnOffLightAccessory.ts +133 -0
- package/src/devices-matter/OnOffOutletAccessory.ts +52 -0
- package/src/devices-matter/OnOffSwitchAccessory.ts +52 -0
- package/src/devices-matter/RoboticVacuumAccessory.ts +484 -0
- package/src/devices-matter/SmokeCOAlarmAccessory.ts +59 -0
- package/src/devices-matter/TemperatureSensorAccessory.ts +39 -0
- package/src/devices-matter/ThermostatAccessory.ts +105 -0
- package/src/devices-matter/VenetianBlindAccessory.ts +118 -0
- package/src/devices-matter/WindowBlindAccessory.ts +94 -0
- package/src/devices-matter/custom/PowerStripAccessory.ts +309 -0
- package/src/devices-matter/custom/index.ts +8 -0
- package/src/devices-matter/index.ts +29 -0
- package/src/homebridge-ui/public/index.html +1 -1
- package/src/index.test.ts +2 -2
- package/src/index.ts +7 -2
- package/src/irdevice/airconditioner.ts +2 -2
- package/src/irdevice/airpurifier.ts +2 -2
- package/src/irdevice/camera.ts +2 -2
- package/src/irdevice/fan.ts +2 -2
- package/src/irdevice/irdevice.ts +2 -2
- package/src/irdevice/light.ts +2 -2
- package/src/irdevice/other.ts +2 -2
- package/src/irdevice/tv.ts +2 -2
- package/src/irdevice/vacuumcleaner.ts +2 -2
- package/src/irdevice/waterheater.ts +2 -2
- package/src/{platform.ts → platform-hap.ts} +31 -30
- package/src/platform-matter.ts +450 -0
- package/src/verifyconfig.test.ts +197 -0
- package/tsconfig.json +2 -1
- package/typedoc.json +1 -0
- package/.github/workflows/build.yml +0 -18
- package/.github/workflows/changerelease.yml +0 -11
- package/.github/workflows/labeler.yml +0 -16
- package/.github/workflows/release-drafter.yml +0 -14
- package/dist/device/airpurifier.d.ts.map +0 -1
- package/dist/device/airpurifier.js.map +0 -1
- package/dist/device/blindtilt.d.ts.map +0 -1
- package/dist/device/blindtilt.js.map +0 -1
- package/dist/device/bot.d.ts.map +0 -1
- package/dist/device/bot.js.map +0 -1
- package/dist/device/ceilinglight.d.ts.map +0 -1
- package/dist/device/ceilinglight.js.map +0 -1
- package/dist/device/colorbulb.d.ts.map +0 -1
- package/dist/device/colorbulb.js.map +0 -1
- package/dist/device/contact.d.ts.map +0 -1
- package/dist/device/contact.js.map +0 -1
- package/dist/device/curtain.d.ts.map +0 -1
- package/dist/device/curtain.js.map +0 -1
- package/dist/device/device.d.ts.map +0 -1
- package/dist/device/device.js.map +0 -1
- package/dist/device/fan.d.ts.map +0 -1
- package/dist/device/fan.js.map +0 -1
- package/dist/device/hub.d.ts.map +0 -1
- package/dist/device/hub.js.map +0 -1
- package/dist/device/humidifier.d.ts.map +0 -1
- package/dist/device/humidifier.js.map +0 -1
- package/dist/device/iosensor.d.ts.map +0 -1
- package/dist/device/iosensor.js.map +0 -1
- package/dist/device/lightstrip.d.ts.map +0 -1
- package/dist/device/lightstrip.js.map +0 -1
- package/dist/device/lock.d.ts.map +0 -1
- package/dist/device/lock.js.map +0 -1
- package/dist/device/meter.d.ts.map +0 -1
- package/dist/device/meter.js.map +0 -1
- package/dist/device/meterplus.d.ts.map +0 -1
- package/dist/device/meterplus.js.map +0 -1
- package/dist/device/meterpro.d.ts.map +0 -1
- package/dist/device/meterpro.js.map +0 -1
- package/dist/device/motion.d.ts.map +0 -1
- package/dist/device/motion.js.map +0 -1
- package/dist/device/plug.d.ts.map +0 -1
- package/dist/device/plug.js.map +0 -1
- package/dist/device/relayswitch.d.ts.map +0 -1
- package/dist/device/relayswitch.js.map +0 -1
- package/dist/device/robotvacuumcleaner.d.ts.map +0 -1
- package/dist/device/robotvacuumcleaner.js.map +0 -1
- package/dist/device/waterdetector.d.ts.map +0 -1
- package/dist/device/waterdetector.js.map +0 -1
- package/dist/platform.d.ts.map +0 -1
- /package/dist/{device → devices-hap}/airpurifier.js +0 -0
- /package/dist/{device → devices-hap}/bot.js +0 -0
- /package/dist/{device → devices-hap}/ceilinglight.js +0 -0
- /package/dist/{device → devices-hap}/colorbulb.js +0 -0
- /package/dist/{device → devices-hap}/contact.js +0 -0
- /package/dist/{device → devices-hap}/fan.js +0 -0
- /package/dist/{device → devices-hap}/humidifier.js +0 -0
- /package/dist/{device → devices-hap}/iosensor.js +0 -0
- /package/dist/{device → devices-hap}/lightstrip.js +0 -0
- /package/dist/{device → devices-hap}/lock.js +0 -0
- /package/dist/{device → devices-hap}/meter.js +0 -0
- /package/dist/{device → devices-hap}/meterplus.js +0 -0
- /package/dist/{device → devices-hap}/motion.js +0 -0
- /package/dist/{device → devices-hap}/plug.js +0 -0
- /package/dist/{device → devices-hap}/relayswitch.js +0 -0
- /package/dist/{device → devices-hap}/robotvacuumcleaner.js +0 -0
- /package/dist/{device → devices-hap}/waterdetector.js +0 -0
package/docs/index.html
CHANGED
|
@@ -113,7 +113,7 @@ Without this step, then you will receive the following error when the swichbot p
|
|
|
113
113
|
<li>Supports OpenAPI & Bluetooth Low Energy (BLE) Connections</li>
|
|
114
114
|
<li>If using OpenAPI:
|
|
115
115
|
<ul>
|
|
116
|
-
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a> or <a href="https://us.switch-bot.com/products/switchbot-hub-
|
|
116
|
+
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a>, <a href="https://us.switch-bot.com/products/switchbot-hub-2">SwitchBot Hub 2</a>, or <a href="https://us.switch-bot.com/products/switchbot-hub-3">SwitchBot Hub 3</a> Required</li>
|
|
117
117
|
<li>Enable Cloud Services for Device on SwitchBot App</li>
|
|
118
118
|
</ul>
|
|
119
119
|
</li>
|
|
@@ -130,7 +130,7 @@ Without this step, then you will receive the following error when the swichbot p
|
|
|
130
130
|
<li>Supports OpenAPI & Bluetooth Low Energy (BLE) Connections</li>
|
|
131
131
|
<li>If using OpenAPI:
|
|
132
132
|
<ul>
|
|
133
|
-
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a> or <a href="https://us.switch-bot.com/products/switchbot-hub-
|
|
133
|
+
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a>, <a href="https://us.switch-bot.com/products/switchbot-hub-2">SwitchBot Hub 2</a>, or <a href="https://us.switch-bot.com/products/switchbot-hub-3">SwitchBot Hub 3</a> Required</li>
|
|
134
134
|
<li>Enable Cloud Services for Device on SwitchBot App</li>
|
|
135
135
|
</ul>
|
|
136
136
|
</li>
|
|
@@ -147,7 +147,7 @@ Without this step, then you will receive the following error when the swichbot p
|
|
|
147
147
|
<li>Supports OpenAPI & Bluetooth Low Energy (BLE) Connections</li>
|
|
148
148
|
<li>If using OpenAPI:
|
|
149
149
|
<ul>
|
|
150
|
-
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a> or <a href="https://us.switch-bot.com/products/switchbot-hub-
|
|
150
|
+
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a>, <a href="https://us.switch-bot.com/products/switchbot-hub-2">SwitchBot Hub 2</a>, or <a href="https://us.switch-bot.com/products/switchbot-hub-3">SwitchBot Hub 3</a> Required</li>
|
|
151
151
|
<li>Enable Cloud Services for Device on SwitchBot App</li>
|
|
152
152
|
</ul>
|
|
153
153
|
</li>
|
|
@@ -165,7 +165,7 @@ Without this step, then you will receive the following error when the swichbot p
|
|
|
165
165
|
<li>Supports OpenAPI & Bluetooth Low Energy (BLE) Connections</li>
|
|
166
166
|
<li>If using OpenAPI:
|
|
167
167
|
<ul>
|
|
168
|
-
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a> or <a href="https://us.switch-bot.com/products/switchbot-hub-
|
|
168
|
+
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a>, <a href="https://us.switch-bot.com/products/switchbot-hub-2">SwitchBot Hub 2</a>, or <a href="https://us.switch-bot.com/products/switchbot-hub-3">SwitchBot Hub 3</a> Required</li>
|
|
169
169
|
<li>Enable Cloud Services for Device on SwitchBot App</li>
|
|
170
170
|
</ul>
|
|
171
171
|
</li>
|
|
@@ -182,7 +182,7 @@ Without this step, then you will receive the following error when the swichbot p
|
|
|
182
182
|
<li>Supports OpenAPI & partial Bluetooth Low Energy (BLE) Connections</li>
|
|
183
183
|
<li>If using OpenAPI:
|
|
184
184
|
<ul>
|
|
185
|
-
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a> or <a href="https://us.switch-bot.com/products/switchbot-hub-
|
|
185
|
+
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a>, <a href="https://us.switch-bot.com/products/switchbot-hub-2">SwitchBot Hub 2</a>, or <a href="https://us.switch-bot.com/products/switchbot-hub-3">SwitchBot Hub 3</a> Required</li>
|
|
186
186
|
<li>Enable Cloud Services for Device on SwitchBot App</li>
|
|
187
187
|
</ul>
|
|
188
188
|
</li>
|
|
@@ -196,7 +196,7 @@ Without this step, then you will receive the following error when the swichbot p
|
|
|
196
196
|
<li>Supports OpenAPI & partial Bluetooth Low Energy (BLE) Connections</li>
|
|
197
197
|
<li>If using OpenAPI:
|
|
198
198
|
<ul>
|
|
199
|
-
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a> or <a href="https://us.switch-bot.com/products/switchbot-hub-
|
|
199
|
+
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a>, <a href="https://us.switch-bot.com/products/switchbot-hub-2">SwitchBot Hub 2</a>, or <a href="https://us.switch-bot.com/products/switchbot-hub-3">SwitchBot Hub 3</a> Required</li>
|
|
200
200
|
<li>Enable Cloud Services for Device on SwitchBot App</li>
|
|
201
201
|
</ul>
|
|
202
202
|
</li>
|
|
@@ -208,7 +208,7 @@ Without this step, then you will receive the following error when the swichbot p
|
|
|
208
208
|
<li>Supports OpenAPI & Bluetooth Low Energy (BLE) Connections</li>
|
|
209
209
|
<li>If using OpenAPI:
|
|
210
210
|
<ul>
|
|
211
|
-
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a> or <a href="https://us.switch-bot.com/products/switchbot-hub-
|
|
211
|
+
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a>, <a href="https://us.switch-bot.com/products/switchbot-hub-2">SwitchBot Hub 2</a>, or <a href="https://us.switch-bot.com/products/switchbot-hub-3">SwitchBot Hub 3</a> Required</li>
|
|
212
212
|
<li>Enable Cloud Services for Device on SwitchBot App</li>
|
|
213
213
|
</ul>
|
|
214
214
|
</li>
|
|
@@ -229,7 +229,7 @@ Without this step, then you will receive the following error when the swichbot p
|
|
|
229
229
|
<li>Supports OpenAPI & Bluetooth Low Energy (BLE) Connections</li>
|
|
230
230
|
<li>If using OpenAPI:
|
|
231
231
|
<ul>
|
|
232
|
-
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a> or <a href="https://us.switch-bot.com/products/switchbot-hub-
|
|
232
|
+
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a>, <a href="https://us.switch-bot.com/products/switchbot-hub-2">SwitchBot Hub 2</a>, or <a href="https://us.switch-bot.com/products/switchbot-hub-3">SwitchBot Hub 3</a> Required</li>
|
|
233
233
|
<li>Enable Cloud Services for Device on SwitchBot App</li>
|
|
234
234
|
</ul>
|
|
235
235
|
</li>
|
|
@@ -240,7 +240,7 @@ Without this step, then you will receive the following error when the swichbot p
|
|
|
240
240
|
<li>Supports OpenAPI & Bluetooth Low Energy (BLE) Connections</li>
|
|
241
241
|
<li>If using OpenAPI:
|
|
242
242
|
<ul>
|
|
243
|
-
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a> or <a href="https://us.switch-bot.com/products/switchbot-hub-
|
|
243
|
+
<li><a href="https://www.switch-bot.com/products/switchbot-hub-mini">SwitchBot Hub Mini</a>, <a href="https://us.switch-bot.com/products/switchbot-hub-2">SwitchBot Hub 2</a>, or <a href="https://us.switch-bot.com/products/switchbot-hub-3">SwitchBot Hub 3</a> Required</li>
|
|
244
244
|
<li>Enable Cloud Services for Device on SwitchBot App</li>
|
|
245
245
|
<li>You must set your Bot's Device ID for either Press Mode or Switch Mode in Plugin Config (SwitchBot Device Settings > Bot Settings)
|
|
246
246
|
<ul>
|
|
@@ -272,6 +272,15 @@ Without this step, then you will receive the following error when the swichbot p
|
|
|
272
272
|
</li>
|
|
273
273
|
</ul>
|
|
274
274
|
</li>
|
|
275
|
+
<li><a href="https://us.switch-bot.com/products/switchbot-hub-3">SwitchBot Hub 3</a>
|
|
276
|
+
<ul>
|
|
277
|
+
<li>Supports OpenAPI & Bluetooth Low Energy (BLE) Connections
|
|
278
|
+
<ul>
|
|
279
|
+
<li>Enables Humidity, Temperature, and Light Sensor</li>
|
|
280
|
+
</ul>
|
|
281
|
+
</li>
|
|
282
|
+
</ul>
|
|
283
|
+
</li>
|
|
275
284
|
<li><a href="https://us.switch-bot.com/products/switchbot-battery-circulator-fan">SwitchBot Battery Circulator Fan</a>
|
|
276
285
|
<ul>
|
|
277
286
|
<li>Supports OpenAPI Connection Only</li>
|
|
@@ -283,7 +292,7 @@ Without this step, then you will receive the following error when the swichbot p
|
|
|
283
292
|
</ul>
|
|
284
293
|
</li>
|
|
285
294
|
</ul>
|
|
286
|
-
<h2 id="supported-ir-devices" class="tsd-anchor-link">Supported IR Devices<a href="#supported-ir-devices" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><h3 id="all-ir-devices-require-switchbot-hub-2-or-hub-mini" class="tsd-anchor-link"><em>(All IR Devices require <a href="https://us.switch-bot.com/products/switchbot-hub-2">SwitchBot Hub 2</a> or <a href="https://www.switch-bot.com/products/switchbot-hub-mini">Hub Mini</a>)</em><a href="#all-ir-devices-require-switchbot-hub-2-or-hub-mini" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul>
|
|
295
|
+
<h2 id="supported-ir-devices" class="tsd-anchor-link">Supported IR Devices<a href="#supported-ir-devices" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><h3 id="all-ir-devices-require-switchbot-hub-2-switchbot-hub-3-or-hub-mini" class="tsd-anchor-link"><em>(All IR Devices require <a href="https://us.switch-bot.com/products/switchbot-hub-2">SwitchBot Hub 2</a>, <a href="https://us.switch-bot.com/products/switchbot-hub-3">SwitchBot Hub 3</a>, or <a href="https://www.switch-bot.com/products/switchbot-hub-mini">Hub Mini</a>)</em><a href="#all-ir-devices-require-switchbot-hub-2-switchbot-hub-3-or-hub-mini" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul>
|
|
287
296
|
<li>TV
|
|
288
297
|
<ul>
|
|
289
298
|
<li>Allows for On/Off and Volume Controls</li>
|
|
@@ -377,4 +386,4 @@ Without this step, then you will receive the following error when the swichbot p
|
|
|
377
386
|
<li><a href="https://www.facebook.com/SwitchBotRobot/">Facebook @SwitchBotRobot</a></li>
|
|
378
387
|
<li><a href="https://twitter.com/switchbot">Twitter @SwitchBot</a></li>
|
|
379
388
|
</ul>
|
|
380
|
-
</div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#switchbothomebridge-switchbot"><span>@switchbot/homebridge-<wbr/>switchbot</span></a><ul><li><a href="#installation"><span>Installation</span></a></li><li><a href="#configuration"><span>Configuration</span></a></li><li><ul><li><a href="#if-using-openapi-connection"><span>If using <wbr/>Open<wbr/>API <wbr/>Connection</span></a></li><li><a href="#if-using-ble-connection"><span>If using <wbr/>BLE <wbr/>Connection</span></a></li></ul></li><li><a href="#troubleshooting"><span>Troubleshooting</span></a></li><li><ul><li><a href="#if-using-linux--raspberry-pi-os"><span>If using <wbr/>Linux / <wbr/>Raspberry <wbr/>Pi <wbr/>OS</span></a></li><li><a href="#if-using-macos"><span>If using <wbr/>Mac<wbr/>OS</span></a></li></ul></li><li><a href="#supported-switchbot-devices"><span>Supported <wbr/>Switch<wbr/>Bot <wbr/>Devices</span></a></li><li><a href="#supported-ir-devices"><span>Supported <wbr/>IR <wbr/>Devices</span></a></li><li><ul><li><a href="#all-ir-devices-require-switchbot-hub-2-or-hub-mini"><span>(<wbr/>All <wbr/>IR <wbr/>Devices require <wbr/>Switch<wbr/>Bot <wbr/>Hub 2 or <wbr/>Hub <wbr/>Mini)</span></a></li></ul></li><li><a href="#switchbot-apis"><span>Switch<wbr/>Bot <wbr/>AP<wbr/>Is</span></a></li><li><a href="#community"><span>Community</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html">@switchbot/homebridge-switchbot</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
|
389
|
+
</div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#switchbothomebridge-switchbot"><span>@switchbot/homebridge-<wbr/>switchbot</span></a><ul><li><a href="#installation"><span>Installation</span></a></li><li><a href="#configuration"><span>Configuration</span></a></li><li><ul><li><a href="#if-using-openapi-connection"><span>If using <wbr/>Open<wbr/>API <wbr/>Connection</span></a></li><li><a href="#if-using-ble-connection"><span>If using <wbr/>BLE <wbr/>Connection</span></a></li></ul></li><li><a href="#troubleshooting"><span>Troubleshooting</span></a></li><li><ul><li><a href="#if-using-linux--raspberry-pi-os"><span>If using <wbr/>Linux / <wbr/>Raspberry <wbr/>Pi <wbr/>OS</span></a></li><li><a href="#if-using-macos"><span>If using <wbr/>Mac<wbr/>OS</span></a></li></ul></li><li><a href="#supported-switchbot-devices"><span>Supported <wbr/>Switch<wbr/>Bot <wbr/>Devices</span></a></li><li><a href="#supported-ir-devices"><span>Supported <wbr/>IR <wbr/>Devices</span></a></li><li><ul><li><a href="#all-ir-devices-require-switchbot-hub-2-switchbot-hub-3-or-hub-mini"><span>(<wbr/>All <wbr/>IR <wbr/>Devices require <wbr/>Switch<wbr/>Bot <wbr/>Hub 2, <wbr/>Switch<wbr/>Bot <wbr/>Hub 3, or <wbr/>Hub <wbr/>Mini)</span></a></li></ul></li><li><a href="#switchbot-apis"><span>Switch<wbr/>Bot <wbr/>AP<wbr/>Is</span></a></li><li><a href="#community"><span>Community</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html">@switchbot/homebridge-switchbot</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>default | @switchbot/homebridge-switchbot</title><meta name="description" content="Documentation for @switchbot/homebridge-switchbot"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@switchbot/homebridge-switchbot</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">default</a></li></ul><h1>Variable default</h1></div><div class="tsd-signature"><span class="tsd-kind-variable">default</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">api</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">API</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">void</span></div><div class="tsd-type-declaration"><h4>Type
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>default | @switchbot/homebridge-switchbot</title><meta name="description" content="Documentation for @switchbot/homebridge-switchbot"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@switchbot/homebridge-switchbot</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">default</a></li></ul><h1>Variable default</h1></div><div class="tsd-signature"><span class="tsd-kind-variable">default</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">api</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">API</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">void</span></div><div class="tsd-type-declaration"><h4>Type Declaration</h4><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature" id="__type"><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">api</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">API</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">api</span>: <span class="tsd-signature-type">API</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></li></ul></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/OpenWonderLabs/homebridge-switchbot/blob/c586403210ae94803ca6e83cf6a0f787d3e16315/src/index.ts#L12">index.ts:12</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@switchbot/homebridge-switchbot</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@switchbot/homebridge-switchbot",
|
|
3
3
|
"displayName": "SwitchBot",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "5.0.0-beta.0",
|
|
6
6
|
"description": "The SwitchBot plugin allows you to access your SwitchBot device(s) from HomeKit.",
|
|
7
7
|
"author": "SwitchBot <support@wondertechlabs.com> (https://github.com/SwitchBot)",
|
|
8
8
|
"contributors": [
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"icon": "https://raw.githubusercontent.com/OpenWonderLabs/homebridge-switchbot/latest/branding/icon.png",
|
|
56
56
|
"engineStrict": true,
|
|
57
57
|
"engines": {
|
|
58
|
-
"homebridge": "^
|
|
58
|
+
"homebridge": "^2.0.0-beta.38",
|
|
59
59
|
"node": "^20 || ^22 || ^24"
|
|
60
60
|
},
|
|
61
61
|
"scripts": {
|
|
@@ -81,29 +81,29 @@
|
|
|
81
81
|
"@homebridge/plugin-ui-utils": "^2.1.0",
|
|
82
82
|
"async-mqtt": "^2.6.3",
|
|
83
83
|
"fakegato-history": "^0.6.7",
|
|
84
|
-
"homebridge-lib": "^7.1.
|
|
85
|
-
"node-switchbot": "^3.6.0
|
|
84
|
+
"homebridge-lib": "^7.1.7",
|
|
85
|
+
"node-switchbot": "^3.6.0",
|
|
86
86
|
"rxjs": "^7.8.2"
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
|
-
"@antfu/eslint-config": "^5.1
|
|
89
|
+
"@antfu/eslint-config": "^5.2.1",
|
|
90
90
|
"@types/aes-js": "^3.1.4",
|
|
91
91
|
"@types/debug": "^4.1.12",
|
|
92
92
|
"@types/fs-extra": "^11.0.4",
|
|
93
93
|
"@types/mdast": "^4.0.4",
|
|
94
|
-
"@types/node": "^24.
|
|
94
|
+
"@types/node": "^24.3.0",
|
|
95
95
|
"@types/semver": "^7.7.0",
|
|
96
96
|
"@types/source-map-support": "^0.5.10",
|
|
97
97
|
"@vitest/coverage-v8": "^3.2.4",
|
|
98
|
-
"eslint": "^9.
|
|
98
|
+
"eslint": "^9.33.0",
|
|
99
99
|
"eslint-plugin-format": "^1.0.1",
|
|
100
100
|
"eslint-plugin-import": "^2.32.0",
|
|
101
|
-
"homebridge": "^
|
|
102
|
-
"homebridge-config-ui-x": "5.4.
|
|
101
|
+
"homebridge": "^2.0.0-beta.38",
|
|
102
|
+
"homebridge-config-ui-x": "5.4.1",
|
|
103
103
|
"nodemon": "^3.1.10",
|
|
104
104
|
"shx": "^0.4.0",
|
|
105
105
|
"ts-node": "^10.9.2",
|
|
106
|
-
"typedoc": "^0.28.
|
|
106
|
+
"typedoc": "^0.28.11",
|
|
107
107
|
"typescript": "^5.9.2",
|
|
108
108
|
"vitest": "^3.2.4"
|
|
109
109
|
},
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { airPurifierServiceData, airPurifierStatus, airPurifierTableServiceData, airPurifierTableStatus, airPurifierTableWebhookContext, airPurifierWebhookContext, bodyChange, device, SwitchBotBLE, SwitchbotDevice } from 'node-switchbot'
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type { SwitchBotHAPPlatform } from '../platform-hap.js'
|
|
9
9
|
import type { devicesConfig } from '../settings.js'
|
|
10
10
|
|
|
11
11
|
/*
|
|
@@ -44,7 +44,7 @@ export class AirPurifier extends deviceBase {
|
|
|
44
44
|
doAirPurifierUpdate!: Subject<void>
|
|
45
45
|
|
|
46
46
|
constructor(
|
|
47
|
-
readonly platform:
|
|
47
|
+
readonly platform: SwitchBotHAPPlatform,
|
|
48
48
|
accessory: PlatformAccessory,
|
|
49
49
|
device: device & devicesConfig,
|
|
50
50
|
) {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { blindTiltServiceData, blindTiltStatus, blindTiltWebhookContext, bodyChange, device, SwitchBotBLE, SwitchbotDevice, WoBlindTilt } from 'node-switchbot'
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type { SwitchBotHAPPlatform } from '../platform-hap.js'
|
|
9
9
|
import type { blindTiltConfig, devicesConfig } from '../settings.js'
|
|
10
10
|
|
|
11
11
|
/*
|
|
@@ -76,7 +76,7 @@ export class BlindTilt extends deviceBase {
|
|
|
76
76
|
doBlindTiltUpdate: Subject<void>
|
|
77
77
|
|
|
78
78
|
constructor(
|
|
79
|
-
readonly platform:
|
|
79
|
+
readonly platform: SwitchBotHAPPlatform,
|
|
80
80
|
accessory: PlatformAccessory,
|
|
81
81
|
device: device & devicesConfig,
|
|
82
82
|
) {
|
|
@@ -589,7 +589,11 @@ export class BlindTilt extends deviceBase {
|
|
|
589
589
|
return await this.retryBLE({
|
|
590
590
|
max: this.maxRetryBLE(),
|
|
591
591
|
fn: async () => {
|
|
592
|
-
|
|
592
|
+
if (deviceList && Array.isArray(deviceList) && deviceList.length > 0) {
|
|
593
|
+
return await deviceList[0].runToPos(100 - Number(this.WindowCovering.TargetPosition), setPositionMode)
|
|
594
|
+
} else {
|
|
595
|
+
throw new Error('No device found')
|
|
596
|
+
}
|
|
593
597
|
},
|
|
594
598
|
})
|
|
595
599
|
})
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { bodyChange, botServiceData, botStatus, botWebhookContext, device, SwitchBotBLE, SwitchbotDevice, WoHand } from 'node-switchbot'
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type { SwitchBotHAPPlatform } from '../platform-hap.js'
|
|
9
9
|
import type { botConfig, devicesConfig } from '../settings.js'
|
|
10
10
|
|
|
11
11
|
/*
|
|
@@ -118,7 +118,7 @@ export class Bot extends deviceBase {
|
|
|
118
118
|
* @constructor
|
|
119
119
|
*/
|
|
120
120
|
constructor(
|
|
121
|
-
readonly platform:
|
|
121
|
+
readonly platform: SwitchBotHAPPlatform,
|
|
122
122
|
accessory: PlatformAccessory,
|
|
123
123
|
device: device & devicesConfig,
|
|
124
124
|
) {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { CharacteristicValue, Controller, ControllerConstructor, ControllerServiceMap, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { bodyChange, ceilingLightProServiceData, ceilingLightProStatus, ceilingLightProWebhookContext, ceilingLightServiceData, ceilingLightStatus, ceilingLightWebhookContext, device, SwitchBotBLE, SwitchbotDevice, WoCeilingLight } from 'node-switchbot'
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type { SwitchBotHAPPlatform } from '../platform-hap.js'
|
|
9
9
|
import type { ceilingLightConfig, devicesConfig } from '../settings.js'
|
|
10
10
|
|
|
11
11
|
/*
|
|
@@ -54,7 +54,7 @@ export class CeilingLight extends deviceBase {
|
|
|
54
54
|
doCeilingLightUpdate!: Subject<void>
|
|
55
55
|
|
|
56
56
|
constructor(
|
|
57
|
-
readonly platform:
|
|
57
|
+
readonly platform: SwitchBotHAPPlatform,
|
|
58
58
|
accessory: PlatformAccessory,
|
|
59
59
|
device: device & devicesConfig,
|
|
60
60
|
) {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { CharacteristicValue, Controller, ControllerConstructor, ControllerServiceMap, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { bodyChange, colorBulbServiceData, colorBulbStatus, colorBulbWebhookContext, device, SwitchBotBLE, SwitchbotDevice, WoBulb } from 'node-switchbot'
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type { SwitchBotHAPPlatform } from '../platform-hap.js'
|
|
9
9
|
import type { colorBulbConfig, devicesConfig } from '../settings.js'
|
|
10
10
|
|
|
11
11
|
/*
|
|
@@ -54,7 +54,7 @@ export class ColorBulb extends deviceBase {
|
|
|
54
54
|
doColorBulbUpdate!: Subject<void>
|
|
55
55
|
|
|
56
56
|
constructor(
|
|
57
|
-
readonly platform:
|
|
57
|
+
readonly platform: SwitchBotHAPPlatform,
|
|
58
58
|
accessory: PlatformAccessory,
|
|
59
59
|
device: device & devicesConfig,
|
|
60
60
|
) {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { contactSensorServiceData, contactSensorStatus, contactSensorWebhookContext, device, SwitchBotBLE } from 'node-switchbot'
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type { SwitchBotHAPPlatform } from '../platform-hap.js'
|
|
9
9
|
import type { contactConfig, devicesConfig } from '../settings.js'
|
|
10
10
|
|
|
11
11
|
/*
|
|
@@ -64,7 +64,7 @@ export class Contact extends deviceBase {
|
|
|
64
64
|
doContactUpdate!: Subject<void>
|
|
65
65
|
|
|
66
66
|
constructor(
|
|
67
|
-
readonly platform:
|
|
67
|
+
readonly platform: SwitchBotHAPPlatform,
|
|
68
68
|
accessory: PlatformAccessory,
|
|
69
69
|
device: device & devicesConfig,
|
|
70
70
|
) {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { CharacteristicChange, CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { bodyChange, curtain3ServiceData, curtain3WebhookContext, curtainServiceData, curtainStatus, curtainWebhookContext, device, SwitchBotBLE, SwitchbotDevice, WoCurtain } from 'node-switchbot'
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type { SwitchBotHAPPlatform } from '../platform-hap.js'
|
|
9
9
|
import type { curtainConfig, devicesConfig } from '../settings.js'
|
|
10
10
|
|
|
11
11
|
import { hostname } from 'node:os'
|
|
@@ -77,7 +77,7 @@ export class Curtain extends deviceBase {
|
|
|
77
77
|
doCurtainUpdate!: Subject<void>
|
|
78
78
|
|
|
79
79
|
constructor(
|
|
80
|
-
readonly platform:
|
|
80
|
+
readonly platform: SwitchBotHAPPlatform,
|
|
81
81
|
accessory: PlatformAccessory,
|
|
82
82
|
device: device & devicesConfig,
|
|
83
83
|
) {
|
|
@@ -378,9 +378,11 @@ export class Curtain extends deviceBase {
|
|
|
378
378
|
this.debugLog('BLEparseStatus')
|
|
379
379
|
this.debugLog(`(position, battery) = BLE:(${this.serviceData.position}, ${this.serviceData.battery}), current:(${this.WindowCovering.CurrentPosition}, ${this.Battery.BatteryLevel})`)
|
|
380
380
|
// CurrentPosition
|
|
381
|
-
if ('position' in this.serviceData) {
|
|
382
|
-
this.WindowCovering.CurrentPosition = 100 - this.serviceData.position
|
|
381
|
+
if ('position' in this.serviceData && this.serviceData.position !== undefined && this.serviceData.position !== null && !Number.isNaN(Number(this.serviceData.position))) {
|
|
382
|
+
this.WindowCovering.CurrentPosition = 100 - Number(this.serviceData.position)
|
|
383
383
|
await this.getCurrentPostion()
|
|
384
|
+
} else {
|
|
385
|
+
this.warnLog(`Invalid position data from BLE: ${this.serviceData.position}`)
|
|
384
386
|
}
|
|
385
387
|
// CurrentAmbientLightLevel
|
|
386
388
|
if (!(this.device as curtainConfig).hide_lightsensor && this.LightSensor?.Service && 'lightLevel' in this.serviceData) {
|
|
@@ -489,10 +491,10 @@ export class Curtain extends deviceBase {
|
|
|
489
491
|
// Start to monitor advertisement packets
|
|
490
492
|
const serviceData = await this.monitorAdvertisementPackets(switchBotBLE) as curtainServiceData | curtain3ServiceData
|
|
491
493
|
// Update HomeKit
|
|
492
|
-
if ((serviceData.model === SwitchBotBLEModel.Curtain || SwitchBotBLEModel.Curtain3)
|
|
493
|
-
&& (serviceData.modelName === SwitchBotBLEModelName.Curtain || SwitchBotBLEModelName.Curtain3)) {
|
|
494
|
+
if ((serviceData.model === SwitchBotBLEModel.Curtain || serviceData.model === SwitchBotBLEModel.Curtain3)
|
|
495
|
+
&& (serviceData.modelName === SwitchBotBLEModelName.Curtain || serviceData.modelName === SwitchBotBLEModelName.Curtain3)) {
|
|
494
496
|
this.serviceData = serviceData
|
|
495
|
-
if (serviceData !== undefined
|
|
497
|
+
if (serviceData !== undefined && serviceData !== null) {
|
|
496
498
|
await this.BLEparseStatus()
|
|
497
499
|
await this.updateHomeKitCharacteristics()
|
|
498
500
|
} else {
|
|
@@ -559,7 +561,7 @@ export class Curtain extends deviceBase {
|
|
|
559
561
|
this.platform.bleEventHandler[this.device.bleMac] = async (context: curtainServiceData | curtain3ServiceData) => {
|
|
560
562
|
try {
|
|
561
563
|
this.serviceData = context
|
|
562
|
-
if (context !== undefined
|
|
564
|
+
if (context !== undefined && context !== null) {
|
|
563
565
|
this.debugLog(`received BLE: ${JSON.stringify(context)}`)
|
|
564
566
|
await this.BLEparseStatus()
|
|
565
567
|
await this.updateHomeKitCharacteristics()
|
|
@@ -619,7 +621,11 @@ export class Curtain extends deviceBase {
|
|
|
619
621
|
return await this.retryBLE({
|
|
620
622
|
max: this.maxRetryBLE(),
|
|
621
623
|
fn: async () => {
|
|
622
|
-
|
|
624
|
+
if (deviceList && Array.isArray(deviceList) && deviceList.length > 0) {
|
|
625
|
+
return await deviceList[0].runToPos(100 - Number(this.WindowCovering.TargetPosition), adjustedMode)
|
|
626
|
+
} else {
|
|
627
|
+
throw new Error('No device found')
|
|
628
|
+
}
|
|
623
629
|
},
|
|
624
630
|
})
|
|
625
631
|
})
|
|
@@ -777,6 +783,17 @@ export class Curtain extends deviceBase {
|
|
|
777
783
|
|
|
778
784
|
async updateHomeKitCharacteristics(): Promise<void> {
|
|
779
785
|
await this.setMinMax()
|
|
786
|
+
|
|
787
|
+
// Validate position values to prevent NaN
|
|
788
|
+
if (Number.isNaN(Number(this.WindowCovering.CurrentPosition))) {
|
|
789
|
+
this.warnLog(`CurrentPosition is NaN, keeping previous value`)
|
|
790
|
+
this.WindowCovering.CurrentPosition = this.accessory.context.CurrentPosition ?? 100
|
|
791
|
+
}
|
|
792
|
+
if (Number.isNaN(Number(this.WindowCovering.TargetPosition))) {
|
|
793
|
+
this.warnLog(`TargetPosition is NaN, keeping previous value`)
|
|
794
|
+
this.WindowCovering.TargetPosition = this.accessory.context.TargetPosition ?? 100
|
|
795
|
+
}
|
|
796
|
+
|
|
780
797
|
// CurrentPosition
|
|
781
798
|
await this.updateCharacteristic(this.WindowCovering.Service, this.hap.Characteristic.CurrentPosition, this.WindowCovering.CurrentPosition, 'CurrentPosition')
|
|
782
799
|
// PositionState
|
|
@@ -799,17 +816,22 @@ export class Curtain extends deviceBase {
|
|
|
799
816
|
}
|
|
800
817
|
|
|
801
818
|
async BLEPushConnection() {
|
|
819
|
+
this.warnLog('BLE connection failed for push operation')
|
|
802
820
|
if (this.platform.config.credentials?.token && this.device.connectionType === 'BLE/OpenAPI') {
|
|
803
821
|
this.warnLog('Using OpenAPI Connection to Push Changes')
|
|
804
822
|
await this.openAPIpushChanges()
|
|
823
|
+
} else {
|
|
824
|
+
this.errorLog('No fallback available for BLE push failure. Consider using BLE/OpenAPI connection type.')
|
|
805
825
|
}
|
|
806
826
|
}
|
|
807
827
|
|
|
808
828
|
async BLERefreshConnection(switchbot: SwitchBotBLE): Promise<void> {
|
|
809
|
-
this.
|
|
829
|
+
this.warnLog(`BLE connection failed for refresh operation, node-switchbot: ${switchbot}`)
|
|
810
830
|
if (this.platform.config.credentials?.token && this.device.connectionType === 'BLE/OpenAPI') {
|
|
811
831
|
this.warnLog('Using OpenAPI Connection to Refresh Status')
|
|
812
832
|
await this.openAPIRefreshStatus()
|
|
833
|
+
} else {
|
|
834
|
+
this.errorLog('No fallback available for BLE refresh failure. Consider using BLE/OpenAPI connection type.')
|
|
813
835
|
}
|
|
814
836
|
}
|
|
815
837
|
|
|
@@ -7,7 +7,7 @@ import type { API, CharacteristicValue, HAP, Logging, PlatformAccessory, Service
|
|
|
7
7
|
import type { MqttClient } from 'mqtt'
|
|
8
8
|
import type { ad, bodyChange, device, deviceStatus, deviceStatusRequest, pushResponse, SwitchBotBLE } from 'node-switchbot'
|
|
9
9
|
|
|
10
|
-
import type {
|
|
10
|
+
import type { SwitchBotHAPPlatform } from '../platform-hap.js'
|
|
11
11
|
import type { blindTiltConfig, botConfig, ceilingLightConfig, colorBulbConfig, contactConfig, curtainConfig, devicesConfig, hubConfig, humidifierConfig, indoorOutdoorSensorConfig, lockConfig, meterConfig, motionConfig, plugConfig, relaySwitch1Config, relaySwitch1PMConfig, stripLightConfig, SwitchBotPlatformConfig, waterDetectorConfig } from '../settings.js'
|
|
12
12
|
|
|
13
13
|
import { hostname } from 'node:os'
|
|
@@ -53,7 +53,7 @@ export abstract class deviceBase {
|
|
|
53
53
|
protected mqttClient: MqttClient | null = null
|
|
54
54
|
|
|
55
55
|
constructor(
|
|
56
|
-
protected readonly platform:
|
|
56
|
+
protected readonly platform: SwitchBotHAPPlatform,
|
|
57
57
|
protected accessory: PlatformAccessory,
|
|
58
58
|
protected device: device & devicesConfig,
|
|
59
59
|
) {
|
|
@@ -318,7 +318,7 @@ export abstract class deviceBase {
|
|
|
318
318
|
try {
|
|
319
319
|
await switchbot.startScan({ model: this.device.bleModel, id: this.device.bleMac })
|
|
320
320
|
} catch (e: any) {
|
|
321
|
-
this.errorLog(`Failed to start BLE scanning. Error
|
|
321
|
+
this.errorLog(`Failed to start BLE scanning. Error: ${e.message ?? e}`)
|
|
322
322
|
}
|
|
323
323
|
// Set an event handler
|
|
324
324
|
let serviceData = { model: this.device.bleModel, modelName: this.device.bleModelName } as ad['serviceData']
|
|
@@ -337,7 +337,7 @@ export abstract class deviceBase {
|
|
|
337
337
|
try {
|
|
338
338
|
await switchbot.stopScan()
|
|
339
339
|
} catch (e: any) {
|
|
340
|
-
this.errorLog(`Failed to stop BLE scanning. Error
|
|
340
|
+
this.errorLog(`Failed to stop BLE scanning. Error: ${e.message ?? e}`)
|
|
341
341
|
}
|
|
342
342
|
return serviceData
|
|
343
343
|
}
|
|
@@ -350,7 +350,7 @@ export abstract class deviceBase {
|
|
|
350
350
|
try {
|
|
351
351
|
await switchbot.startScan({ model: this.device.bleModel })
|
|
352
352
|
} catch (e: any) {
|
|
353
|
-
this.errorLog(`Failed to start BLE scanning. Error
|
|
353
|
+
this.errorLog(`Failed to start BLE scanning. Error: ${e.message ?? e}`)
|
|
354
354
|
}
|
|
355
355
|
// Set an event handler
|
|
356
356
|
switchbot.onadvertisement = (ad: ad) => {
|
|
@@ -361,7 +361,7 @@ export abstract class deviceBase {
|
|
|
361
361
|
try {
|
|
362
362
|
switchbot.stopScan()
|
|
363
363
|
} catch (e: any) {
|
|
364
|
-
this.errorLog(`Failed to stop BLE scanning. Error
|
|
364
|
+
this.errorLog(`Failed to stop BLE scanning. Error: ${e.message ?? e}`)
|
|
365
365
|
}
|
|
366
366
|
})()
|
|
367
367
|
}
|
|
@@ -446,6 +446,12 @@ export abstract class deviceBase {
|
|
|
446
446
|
bleModelName: SwitchBotBLEModelName.Hub2,
|
|
447
447
|
bleModelFriendlyName: SwitchBotBLEModelFriendlyName.Hub2,
|
|
448
448
|
},
|
|
449
|
+
'Hub 3': {
|
|
450
|
+
model: SwitchBotModel.Hub3,
|
|
451
|
+
bleModel: SwitchBotBLEModel.Hub3,
|
|
452
|
+
bleModelName: SwitchBotBLEModelName.Hub3,
|
|
453
|
+
bleModelFriendlyName: SwitchBotBLEModelFriendlyName.Hub3,
|
|
454
|
+
},
|
|
449
455
|
'Bot': {
|
|
450
456
|
model: SwitchBotModel.Bot,
|
|
451
457
|
bleModel: SwitchBotBLEModel.Bot,
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { batteryCirculatorFanServiceData, batteryCirculatorFanStatus, batteryCirculatorFanWebhookContext, bodyChange, device, SwitchBotBLE, SwitchbotDevice } from 'node-switchbot'
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type { SwitchBotHAPPlatform } from '../platform-hap.js'
|
|
9
9
|
import type { devicesConfig } from '../settings.js'
|
|
10
10
|
|
|
11
11
|
/*
|
|
@@ -57,7 +57,7 @@ export class Fan extends deviceBase {
|
|
|
57
57
|
doFanUpdate!: Subject<void>
|
|
58
58
|
|
|
59
59
|
constructor(
|
|
60
|
-
readonly platform:
|
|
60
|
+
readonly platform: SwitchBotHAPPlatform,
|
|
61
61
|
accessory: PlatformAccessory,
|
|
62
62
|
device: device & devicesConfig,
|
|
63
63
|
) {
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* hub.ts: @switchbot/homebridge-switchbot.
|
|
4
4
|
*/
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
|
-
import type { device, hub2ServiceData, hub2Status, hub2WebhookContext, SwitchBotBLE } from 'node-switchbot'
|
|
6
|
+
import type { device, hub2ServiceData, hub2Status, hub2WebhookContext, hub3ServiceData, SwitchBotBLE } from 'node-switchbot'
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type { SwitchBotHAPPlatform } from '../platform-hap.js'
|
|
9
9
|
import type { devicesConfig, hubConfig } from '../settings.js'
|
|
10
10
|
|
|
11
11
|
import { Units } from 'homebridge'
|
|
@@ -46,14 +46,14 @@ export class Hub extends deviceBase {
|
|
|
46
46
|
webhookContext!: hub2WebhookContext
|
|
47
47
|
|
|
48
48
|
// BLE
|
|
49
|
-
serviceData!: hub2ServiceData
|
|
49
|
+
serviceData!: hub2ServiceData | hub3ServiceData
|
|
50
50
|
|
|
51
51
|
// Updates
|
|
52
52
|
hubUpdateInProgress!: boolean
|
|
53
53
|
doHubUpdate!: Subject<void>
|
|
54
54
|
|
|
55
55
|
constructor(
|
|
56
|
-
readonly platform:
|
|
56
|
+
readonly platform: SwitchBotHAPPlatform,
|
|
57
57
|
accessory: PlatformAccessory,
|
|
58
58
|
device: device & devicesConfig,
|
|
59
59
|
) {
|
|
@@ -292,9 +292,10 @@ export class Hub extends deviceBase {
|
|
|
292
292
|
// Start to monitor advertisement packets
|
|
293
293
|
(async () => {
|
|
294
294
|
// Start to monitor advertisement packets
|
|
295
|
-
const serviceData = await this.monitorAdvertisementPackets(switchBotBLE) as hub2ServiceData
|
|
295
|
+
const serviceData = await this.monitorAdvertisementPackets(switchBotBLE) as hub2ServiceData | hub3ServiceData
|
|
296
296
|
// Update HomeKit
|
|
297
|
-
if (serviceData.model === SwitchBotBLEModel.Hub2 && serviceData.modelName === SwitchBotBLEModelName.Hub2)
|
|
297
|
+
if ((serviceData.model === SwitchBotBLEModel.Hub2 && serviceData.modelName === SwitchBotBLEModelName.Hub2)
|
|
298
|
+
|| (serviceData.model === SwitchBotBLEModel.Hub3 && serviceData.modelName === SwitchBotBLEModelName.Hub3)) {
|
|
298
299
|
this.serviceData = serviceData
|
|
299
300
|
if (serviceData !== undefined || serviceData !== null) {
|
|
300
301
|
await this.BLEparseStatus()
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { bodyChange, device, humidifier2ServiceData, humidifier2Status, humidifier2WebhookContext, humidifierServiceData, humidifierStatus, humidifierWebhookContext, SwitchBotBLE, SwitchbotDevice, WoHumi } from 'node-switchbot'
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type { SwitchBotHAPPlatform } from '../platform-hap.js'
|
|
9
9
|
import type { devicesConfig, humidifierConfig } from '../settings.js'
|
|
10
10
|
|
|
11
11
|
/*
|
|
@@ -56,7 +56,7 @@ export class Humidifier extends deviceBase {
|
|
|
56
56
|
doHumidifierUpdate!: Subject<void>
|
|
57
57
|
|
|
58
58
|
constructor(
|
|
59
|
-
readonly platform:
|
|
59
|
+
readonly platform: SwitchBotHAPPlatform,
|
|
60
60
|
accessory: PlatformAccessory,
|
|
61
61
|
device: device & devicesConfig,
|
|
62
62
|
) {
|