homebridge 2.0.0-beta.1 → 2.0.0-beta.100
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/README.md +72 -32
- package/bin/homebridge.js +22 -0
- package/config-sample.json +3 -3
- package/dist/api.d.ts +143 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +157 -0
- package/dist/api.js.map +1 -0
- package/{lib → dist}/bridgeService.d.ts +25 -35
- package/dist/bridgeService.d.ts.map +1 -0
- package/dist/bridgeService.js +351 -0
- package/dist/bridgeService.js.map +1 -0
- package/dist/childBridgeFork.d.ts +41 -0
- package/dist/childBridgeFork.d.ts.map +1 -0
- package/dist/childBridgeFork.js +300 -0
- package/dist/childBridgeFork.js.map +1 -0
- package/dist/childBridgeService.d.ts +147 -0
- package/dist/childBridgeService.d.ts.map +1 -0
- package/dist/childBridgeService.js +434 -0
- package/dist/childBridgeService.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +88 -0
- package/dist/cli.js.map +1 -0
- package/dist/externalPortService.d.ts +23 -0
- package/dist/externalPortService.d.ts.map +1 -0
- package/dist/externalPortService.js +53 -0
- package/dist/externalPortService.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/ipcService.d.ts +39 -0
- package/dist/ipcService.d.ts.map +1 -0
- package/dist/ipcService.js +47 -0
- package/dist/ipcService.js.map +1 -0
- package/dist/logger.d.ts +38 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +102 -0
- package/dist/logger.js.map +1 -0
- package/dist/matter/BaseMatterManager.d.ts +22 -0
- package/dist/matter/BaseMatterManager.d.ts.map +1 -0
- package/dist/matter/BaseMatterManager.js +206 -0
- package/dist/matter/BaseMatterManager.js.map +1 -0
- package/dist/matter/ChildBridgeMatterManager.d.ts +43 -0
- package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -0
- package/dist/matter/ChildBridgeMatterManager.js +260 -0
- package/dist/matter/ChildBridgeMatterManager.js.map +1 -0
- package/dist/matter/ChildBridgeMatterMessageHandler.d.ts +24 -0
- package/dist/matter/ChildBridgeMatterMessageHandler.d.ts.map +1 -0
- package/dist/matter/ChildBridgeMatterMessageHandler.js +131 -0
- package/dist/matter/ChildBridgeMatterMessageHandler.js.map +1 -0
- package/dist/matter/ClusterCommandMapper.d.ts +5 -0
- package/dist/matter/ClusterCommandMapper.d.ts.map +1 -0
- package/dist/matter/ClusterCommandMapper.js +214 -0
- package/dist/matter/ClusterCommandMapper.js.map +1 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +22 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.js +51 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -0
- package/dist/matter/MatterAPIImpl.d.ts +145 -0
- package/dist/matter/MatterAPIImpl.d.ts.map +1 -0
- package/dist/matter/MatterAPIImpl.js +210 -0
- package/dist/matter/MatterAPIImpl.js.map +1 -0
- package/dist/matter/MatterBridgeManager.d.ts +40 -0
- package/dist/matter/MatterBridgeManager.d.ts.map +1 -0
- package/dist/matter/MatterBridgeManager.js +350 -0
- package/dist/matter/MatterBridgeManager.js.map +1 -0
- package/dist/matter/MatterPortAllocator.d.ts +14 -0
- package/dist/matter/MatterPortAllocator.d.ts.map +1 -0
- package/dist/matter/MatterPortAllocator.js +54 -0
- package/dist/matter/MatterPortAllocator.js.map +1 -0
- package/dist/matter/accessoryCache.d.ts +57 -0
- package/dist/matter/accessoryCache.d.ts.map +1 -0
- package/dist/matter/accessoryCache.js +151 -0
- package/dist/matter/accessoryCache.js.map +1 -0
- package/dist/matter/behaviors/AirQualityBehavior.d.ts +5 -0
- package/dist/matter/behaviors/AirQualityBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/AirQualityBehavior.js +7 -0
- package/dist/matter/behaviors/AirQualityBehavior.js.map +1 -0
- package/dist/matter/behaviors/BehaviorRegistry.d.ts +27 -0
- package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -0
- package/dist/matter/behaviors/BehaviorRegistry.js +109 -0
- package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -0
- package/dist/matter/behaviors/ColorControlBehavior.d.ts +12 -0
- package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ColorControlBehavior.js +139 -0
- package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts +21 -0
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js +31 -0
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js.map +1 -0
- package/dist/matter/behaviors/DoorLockBehavior.d.ts +8 -0
- package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/DoorLockBehavior.js +43 -0
- package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -0
- package/dist/matter/behaviors/EndpointContext.d.ts +10 -0
- package/dist/matter/behaviors/EndpointContext.d.ts.map +1 -0
- package/dist/matter/behaviors/EndpointContext.js +12 -0
- package/dist/matter/behaviors/EndpointContext.js.map +1 -0
- package/dist/matter/behaviors/FanControlBehavior.d.ts +7 -0
- package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/FanControlBehavior.js +57 -0
- package/dist/matter/behaviors/FanControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/IdentifyBehavior.d.ts +7 -0
- package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/IdentifyBehavior.js +25 -0
- package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -0
- package/dist/matter/behaviors/LevelControlBehavior.d.ts +11 -0
- package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/LevelControlBehavior.js +100 -0
- package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/OnOffBehavior.d.ts +8 -0
- package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/OnOffBehavior.js +58 -0
- package/dist/matter/behaviors/OnOffBehavior.js.map +1 -0
- package/dist/matter/behaviors/RegistryManager.d.ts +13 -0
- package/dist/matter/behaviors/RegistryManager.d.ts.map +1 -0
- package/dist/matter/behaviors/RegistryManager.js +30 -0
- package/dist/matter/behaviors/RegistryManager.js.map +1 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +7 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.js +29 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +10 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js +81 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +7 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.js +29 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +9 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.js +62 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -0
- package/dist/matter/behaviors/ThermostatBehavior.d.ts +9 -0
- package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ThermostatBehavior.js +92 -0
- package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -0
- package/dist/matter/behaviors/ValveConfigurationAndControlBehavior.d.ts +8 -0
- package/dist/matter/behaviors/ValveConfigurationAndControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ValveConfigurationAndControlBehavior.js +49 -0
- package/dist/matter/behaviors/ValveConfigurationAndControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +20 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.js +109 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -0
- package/dist/matter/behaviors/index.d.ts +19 -0
- package/dist/matter/behaviors/index.d.ts.map +1 -0
- package/dist/matter/behaviors/index.js +18 -0
- package/dist/matter/behaviors/index.js.map +1 -0
- package/dist/matter/clusterHandlerMap.d.ts +115 -0
- package/dist/matter/clusterHandlerMap.d.ts.map +1 -0
- package/dist/matter/clusterHandlerMap.js +2 -0
- package/dist/matter/clusterHandlerMap.js.map +1 -0
- package/dist/matter/clusterStateMap.d.ts +88 -0
- package/dist/matter/clusterStateMap.d.ts.map +1 -0
- package/dist/matter/clusterStateMap.js +2 -0
- package/dist/matter/clusterStateMap.js.map +1 -0
- package/dist/matter/clusterTypes.d.ts +225 -0
- package/dist/matter/clusterTypes.d.ts.map +1 -0
- package/dist/matter/clusterTypes.js +2 -0
- package/dist/matter/clusterTypes.js.map +1 -0
- package/dist/matter/config.d.ts +9 -0
- package/dist/matter/config.d.ts.map +1 -0
- package/dist/matter/config.js +84 -0
- package/dist/matter/config.js.map +1 -0
- package/dist/matter/configValidator.d.ts +26 -0
- package/dist/matter/configValidator.d.ts.map +1 -0
- package/dist/matter/configValidator.js +174 -0
- package/dist/matter/configValidator.js.map +1 -0
- package/dist/matter/errorHandler.d.ts +11 -0
- package/dist/matter/errorHandler.d.ts.map +1 -0
- package/dist/matter/errorHandler.js +85 -0
- package/dist/matter/errorHandler.js.map +1 -0
- package/dist/matter/errors.d.ts +46 -0
- package/dist/matter/errors.d.ts.map +1 -0
- package/dist/matter/errors.js +68 -0
- package/dist/matter/errors.js.map +1 -0
- package/dist/matter/index.d.ts +99 -0
- package/dist/matter/index.d.ts.map +1 -0
- package/dist/matter/index.js +9 -0
- package/dist/matter/index.js.map +1 -0
- package/dist/matter/ipc-types.d.ts +25 -0
- package/dist/matter/ipc-types.d.ts.map +1 -0
- package/dist/matter/ipc-types.js +2 -0
- package/dist/matter/ipc-types.js.map +1 -0
- package/dist/matter/logFormatter.d.ts +2 -0
- package/dist/matter/logFormatter.d.ts.map +1 -0
- package/dist/matter/logFormatter.js +100 -0
- package/dist/matter/logFormatter.js.map +1 -0
- package/dist/matter/managerTypes.d.ts +57 -0
- package/dist/matter/managerTypes.d.ts.map +1 -0
- package/dist/matter/managerTypes.js +2 -0
- package/dist/matter/managerTypes.js.map +1 -0
- package/dist/matter/server/AccessoryManager.d.ts +31 -0
- package/dist/matter/server/AccessoryManager.d.ts.map +1 -0
- package/dist/matter/server/AccessoryManager.js +430 -0
- package/dist/matter/server/AccessoryManager.js.map +1 -0
- package/dist/matter/server/AccessoryQuery.d.ts +15 -0
- package/dist/matter/server/AccessoryQuery.d.ts.map +1 -0
- package/dist/matter/server/AccessoryQuery.js +91 -0
- package/dist/matter/server/AccessoryQuery.js.map +1 -0
- package/dist/matter/server/BehaviorMap.d.ts +6 -0
- package/dist/matter/server/BehaviorMap.d.ts.map +1 -0
- package/dist/matter/server/BehaviorMap.js +26 -0
- package/dist/matter/server/BehaviorMap.js.map +1 -0
- package/dist/matter/server/CommissioningManager.d.ts +33 -0
- package/dist/matter/server/CommissioningManager.d.ts.map +1 -0
- package/dist/matter/server/CommissioningManager.js +234 -0
- package/dist/matter/server/CommissioningManager.js.map +1 -0
- package/dist/matter/server/FabricManager.d.ts +20 -0
- package/dist/matter/server/FabricManager.d.ts.map +1 -0
- package/dist/matter/server/FabricManager.js +128 -0
- package/dist/matter/server/FabricManager.js.map +1 -0
- package/dist/matter/server/ServerConfig.d.ts +11 -0
- package/dist/matter/server/ServerConfig.d.ts.map +1 -0
- package/dist/matter/server/ServerConfig.js +67 -0
- package/dist/matter/server/ServerConfig.js.map +1 -0
- package/dist/matter/server/ServerLifecycle.d.ts +37 -0
- package/dist/matter/server/ServerLifecycle.d.ts.map +1 -0
- package/dist/matter/server/ServerLifecycle.js +322 -0
- package/dist/matter/server/ServerLifecycle.js.map +1 -0
- package/dist/matter/server/StateManager.d.ts +13 -0
- package/dist/matter/server/StateManager.d.ts.map +1 -0
- package/dist/matter/server/StateManager.js +190 -0
- package/dist/matter/server/StateManager.js.map +1 -0
- package/dist/matter/server/index.d.ts +9 -0
- package/dist/matter/server/index.d.ts.map +1 -0
- package/dist/matter/server/index.js +9 -0
- package/dist/matter/server/index.js.map +1 -0
- package/dist/matter/server.d.ts +78 -0
- package/dist/matter/server.d.ts.map +1 -0
- package/dist/matter/server.js +240 -0
- package/dist/matter/server.js.map +1 -0
- package/dist/matter/serverHelpers.d.ts +32 -0
- package/dist/matter/serverHelpers.d.ts.map +1 -0
- package/dist/matter/serverHelpers.js +261 -0
- package/dist/matter/serverHelpers.js.map +1 -0
- package/dist/matter/sharedTypes.d.ts +94 -0
- package/dist/matter/sharedTypes.d.ts.map +1 -0
- package/dist/matter/sharedTypes.js +20 -0
- package/dist/matter/sharedTypes.js.map +1 -0
- package/dist/matter/types.d.ts +342 -0
- package/dist/matter/types.d.ts.map +1 -0
- package/dist/matter/types.js +221 -0
- package/dist/matter/types.js.map +1 -0
- package/dist/matter/utils.d.ts +13 -0
- package/dist/matter/utils.d.ts.map +1 -0
- package/dist/matter/utils.js +23 -0
- package/dist/matter/utils.js.map +1 -0
- package/dist/platformAccessory.d.ts +41 -0
- package/dist/platformAccessory.d.ts.map +1 -0
- package/dist/platformAccessory.js +85 -0
- package/dist/platformAccessory.js.map +1 -0
- package/{lib → dist}/plugin.d.ts +2 -6
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +159 -0
- package/dist/plugin.js.map +1 -0
- package/{lib → dist}/pluginManager.d.ts +3 -25
- package/dist/pluginManager.d.ts.map +1 -0
- package/{lib → dist}/pluginManager.js +109 -126
- package/dist/pluginManager.js.map +1 -0
- package/{lib → dist}/server.d.ts +14 -21
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +711 -0
- package/dist/server.js.map +1 -0
- package/{lib → dist}/storageService.d.ts.map +1 -1
- package/dist/storageService.js +41 -0
- package/dist/storageService.js.map +1 -0
- package/{lib → dist}/user.d.ts +1 -3
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +29 -0
- package/dist/user.js.map +1 -0
- package/{lib → dist}/util/mac.d.ts +2 -2
- package/dist/util/mac.d.ts.map +1 -0
- package/dist/util/mac.js +14 -0
- package/dist/util/mac.js.map +1 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +16 -0
- package/dist/version.js.map +1 -0
- package/package.json +56 -52
- package/bin/homebridge +0 -17
- package/lib/api.d.ts +0 -215
- package/lib/api.d.ts.map +0 -1
- package/lib/api.js +0 -155
- package/lib/api.js.map +0 -1
- package/lib/bridgeService.d.ts.map +0 -1
- package/lib/bridgeService.js +0 -446
- package/lib/bridgeService.js.map +0 -1
- package/lib/childBridgeFork.d.ts +0 -37
- package/lib/childBridgeFork.d.ts.map +0 -1
- package/lib/childBridgeFork.js +0 -234
- package/lib/childBridgeFork.js.map +0 -1
- package/lib/childBridgeService.d.ts +0 -194
- package/lib/childBridgeService.d.ts.map +0 -1
- package/lib/childBridgeService.js +0 -408
- package/lib/childBridgeService.js.map +0 -1
- package/lib/cli.d.ts +0 -4
- package/lib/cli.d.ts.map +0 -1
- package/lib/cli.js +0 -117
- package/lib/cli.js.map +0 -1
- package/lib/externalPortService.d.ts +0 -33
- package/lib/externalPortService.d.ts.map +0 -1
- package/lib/externalPortService.js +0 -61
- package/lib/externalPortService.js.map +0 -1
- package/lib/index.d.ts +0 -76
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -75
- package/lib/index.js.map +0 -1
- package/lib/ipcService.d.ts +0 -34
- package/lib/ipcService.d.ts.map +0 -1
- package/lib/ipcService.js +0 -49
- package/lib/ipcService.js.map +0 -1
- package/lib/logger.d.ts +0 -101
- package/lib/logger.d.ts.map +0 -1
- package/lib/logger.js +0 -176
- package/lib/logger.js.map +0 -1
- package/lib/platformAccessory.d.ts +0 -78
- package/lib/platformAccessory.d.ts.map +0 -1
- package/lib/platformAccessory.js +0 -122
- package/lib/platformAccessory.js.map +0 -1
- package/lib/plugin.d.ts.map +0 -1
- package/lib/plugin.js +0 -183
- package/lib/plugin.js.map +0 -1
- package/lib/pluginManager.d.ts.map +0 -1
- package/lib/pluginManager.js.map +0 -1
- package/lib/server.d.ts.map +0 -1
- package/lib/server.js +0 -455
- package/lib/server.js.map +0 -1
- package/lib/storageService.js +0 -69
- package/lib/storageService.js.map +0 -1
- package/lib/user.d.ts.map +0 -1
- package/lib/user.js +0 -35
- package/lib/user.js.map +0 -1
- package/lib/util/mac.d.ts.map +0 -1
- package/lib/util/mac.js +0 -21
- package/lib/util/mac.js.map +0 -1
- package/lib/version.d.ts.map +0 -1
- package/lib/version.js +0 -22
- package/lib/version.js.map +0 -1
- /package/{lib → dist}/storageService.d.ts +0 -0
- /package/{lib → dist}/version.d.ts +0 -0
package/README.md
CHANGED
|
@@ -1,38 +1,40 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="https://homebridge.io"><img src="https://raw.githubusercontent.com/homebridge/branding/
|
|
2
|
+
<a href="https://homebridge.io"><img src="https://raw.githubusercontent.com/homebridge/branding/latest/logos/homebridge-color-round-stylized.png" height="140"></a>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<span align="center">
|
|
6
6
|
|
|
7
7
|
# Homebridge
|
|
8
8
|
|
|
9
|
-
<a href="https://www.npmjs.com/package/homebridge"><img title="npm version" src="https://
|
|
10
|
-
<a href="https://github.com/homebridge/homebridge/wiki/Homebridge-
|
|
11
|
-
<a href="https://
|
|
9
|
+
<a href="https://www.npmjs.com/package/homebridge"><img title="npm version" src="https://img.shields.io/npm/v/homebridge?label=stable"></a>
|
|
10
|
+
<a href="https://github.com/homebridge/homebridge/wiki/How-To-Change-Homebridge-Version#manage-beta-version"><img title="npm version" src="https://img.shields.io/npm/v/homebridge/beta?label=beta"></a>
|
|
11
|
+
<a href="https://github.com/homebridge/homebridge/wiki/How-To-Change-Homebridge-Version#manage-beta-version"><img title="npm version" src="https://img.shields.io/npm/v/homebridge/alpha?label=alpha"></a><br>
|
|
12
|
+
<a href="https://www.npmjs.com/package/homebridge"><img title="npm downloads" src="https://img.shields.io/npm/dt/homebridge"></a>
|
|
13
|
+
<a href="https://github.com/homebridge/homebridge/actions/workflows/build.yml"><img title="Node Build" src="https://github.com/homebridge/homebridge/actions/workflows/build.yml/badge.svg"></a>
|
|
12
14
|
|
|
13
15
|
</span>
|
|
14
16
|
|
|
15
17
|
<img src="https://media.giphy.com/media/10l79ICohTu4iQ/giphy.gif" align="right" alt="Unlocking Door">
|
|
16
18
|
|
|
17
|
-
**Homebridge** is a lightweight
|
|
19
|
+
**Homebridge** is a lightweight Node.js server you can run on your home network to emulate the HomeKit Accessory Protocol (HAP). It supports plugins, which are community-contributed modules that provide a basic bridge from HomeKit to various 3rd-party APIs provided by manufacturers of "smart home" devices.
|
|
18
20
|
|
|
19
21
|
Since Siri supports devices added through HomeKit, this means that with Homebridge you can ask Siri to control devices that don't have any support for HomeKit at all. For instance, using just some of the available plugins, you can say:
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
- _Siri, unlock the back door._ [pictured to the right]
|
|
24
|
+
- _Siri, open the garage door._
|
|
25
|
+
- _Siri, turn on the coffee maker._
|
|
26
|
+
- _Siri, turn on the living room lights._
|
|
27
|
+
- _Siri, good morning!_
|
|
26
28
|
|
|
27
29
|
You can explore all available plugins at the NPM website by [searching for the keyword `homebridge-plugin`](https://www.npmjs.com/search?q=homebridge-plugin).
|
|
28
30
|
|
|
29
|
-
##
|
|
31
|
+
## Community
|
|
30
32
|
|
|
31
33
|
The official Homebridge Discord server and Reddit community are where users can discuss Homebridge and ask for help.
|
|
32
34
|
|
|
33
35
|
<span align="center">
|
|
34
36
|
|
|
35
|
-
[](https://discord.gg/kqNCe2D) [](https://www.reddit.com/r/homebridge/)
|
|
37
|
+
[](https://discord.gg/kqNCe2D) [](https://www.reddit.com/r/homebridge/)
|
|
36
38
|
|
|
37
39
|
</span>
|
|
38
40
|
|
|
@@ -40,25 +42,64 @@ HomeKit communities can also be found on both [Discord](https://discord.gg/RcV7f
|
|
|
40
42
|
|
|
41
43
|
## Installation
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
<img align="left" src="https://user-images.githubusercontent.com/3979615/59594350-07b45b80-9137-11e9-85fd-e75093ba91a4.png" alt="raspbian" height="75" width="75"/>
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
### Raspberry Pi
|
|
48
|
+
|
|
49
|
+
[Official Homebridge Raspberry Pi Image](https://github.com/homebridge/homebridge-raspbian-image/wiki/Getting-Started) <br> [Install Homebridge on Raspbian](https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Raspbian)
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
<img align="left" src="https://user-images.githubusercontent.com/3979615/59595664-93c78280-9139-11e9-83dc-4d6f9405e788.png" alt="linux" height="75" width="75"/>
|
|
54
|
+
|
|
55
|
+
### Linux
|
|
56
|
+
|
|
57
|
+
[Debian or Ubuntu Linux](https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Debian-or-Ubuntu-Linux) |
|
|
58
|
+
[Red Hat, CentOS or Fedora Linux](https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Red-Hat%2C-CentOS-or-Fedora-Linux) | [Arch / Manjaro Linux|Install Homebridge on Arch Linux](https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Arch-Linux) <br>
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
<img align="left" src="https://user-images.githubusercontent.com/3979615/59594157-b015f000-9136-11e9-93cb-c9d9773ec9e8.png" alt="macos" height="75" width="75"/>
|
|
63
|
+
|
|
64
|
+
### macOS
|
|
65
|
+
|
|
66
|
+
[Install Homebridge on macOS](https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-macOS)
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
<img align="left" src="https://user-images.githubusercontent.com/3979615/59593218-e0f52580-9134-11e9-8b77-585755af5d99.png" alt="windows" height="75" width="75"/>
|
|
71
|
+
|
|
72
|
+
### Windows 10 / 11
|
|
73
|
+
|
|
74
|
+
[Install Homebridge on Windows 10 / 11 Using Hyper V](https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Windows-10-Using-Hyper-V)
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
<img align="left" src="https://user-images.githubusercontent.com/3979615/59594527-56fa8c00-9137-11e9-937b-32092dfcff41.png" alt="docker" height="75" width="75"/>
|
|
79
|
+
|
|
80
|
+
### Docker
|
|
81
|
+
|
|
82
|
+
[Install Homebridge on Docker](https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Docker) <br> [Synology](https://github.com/homebridge/docker-homebridge/wiki/Homebridge-on-Synology) | [Unraid](https://github.com/homebridge/docker-homebridge/wiki/Homebridge-on-Unraid) | [QNAP](https://github.com/homebridge/docker-homebridge/wiki/Homebridge-on-QNAP) | [TrueNAS Scale](https://github.com/homebridge/docker-homebridge/wiki/Homebridge-on-TrueNAS-Scale)
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
<img align="left" src="https://user-images.githubusercontent.com/3979615/78118531-dc46f700-7452-11ea-95e5-977f79d1904f.png" alt="docker" height="75" width="75"/>
|
|
87
|
+
|
|
88
|
+
### Synology DSM
|
|
89
|
+
|
|
90
|
+
[Install Homebridge on Synology DSM 7](https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Synology-DSM)
|
|
91
|
+
|
|
92
|
+
### Other Platforms
|
|
93
|
+
|
|
94
|
+
[Other Platforms](https://github.com/homebridge/homebridge/wiki/Other-Platforms)
|
|
54
95
|
|
|
55
96
|
## Adding Homebridge to iOS
|
|
56
97
|
|
|
57
98
|
1. Open the Home <img src="https://user-images.githubusercontent.com/3979615/78010622-4ea1d380-738e-11ea-8a17-e6a465eeec35.png" height="16.42px"> app on your device.
|
|
58
99
|
2. Tap the Home tab, then tap <img src="https://user-images.githubusercontent.com/3979615/78010869-9aed1380-738e-11ea-9644-9f46b3633026.png" height="16.42px">.
|
|
59
|
-
3. Tap
|
|
100
|
+
3. Tap _Add Accessory_, then scan the QR code shown in the Homebridge UI or your Homebridge logs.
|
|
60
101
|
|
|
61
|
-
If the bridge does not have any accessories yet, you may receive a message saying
|
|
102
|
+
If the bridge does not have any accessories yet, you may receive a message saying _Additional Set-up Required_, this is ok, as you add plugins they will show up in the Home app without the need to pair again (except for Cameras and TVs).
|
|
62
103
|
|
|
63
104
|
Cameras and most TV devices are exposed as separate accessories and each needs to be paired separately. See [this wiki article](https://github.com/homebridge/homebridge/wiki/Connecting-Homebridge-To-HomeKit#how-to-add-homebridge-cameras--tvs) for instructions.
|
|
64
105
|
|
|
@@ -72,18 +113,17 @@ One final thing to remember is that Siri will almost always prefer its default p
|
|
|
72
113
|
|
|
73
114
|
The https://developers.homebridge.io website contains the Homebridge API reference, available service and characteristic types, and plugin examples.
|
|
74
115
|
|
|
75
|
-
The [Homebridge Plugin Template](https://github.com/homebridge/homebridge-plugin-template) project provides a base you can use to create your own
|
|
116
|
+
The [Homebridge Plugin Template](https://github.com/homebridge/homebridge-plugin-template) project provides a base you can use to create your own _platform_ plugin.
|
|
76
117
|
|
|
77
118
|
There are many existing plugins you can study; you might start with the [Homebridge Example Plugins](https://github.com/homebridge/homebridge-examples) or a plugin that already implements the device type you need.
|
|
78
119
|
|
|
79
|
-
When writing your plugin, you'll want Homebridge to load it from your development directory instead of publishing it to `npm` each time. Run this command inside your plugin project folder so your global
|
|
80
|
-
|
|
120
|
+
When writing your plugin, you'll want Homebridge to load it from your development directory instead of publishing it to `npm` each time. Run this command inside your plugin project folder so your global installation of Homebridge can discover it:
|
|
81
121
|
|
|
82
122
|
```shell
|
|
83
123
|
npm link
|
|
84
124
|
```
|
|
85
125
|
|
|
86
|
-
|
|
126
|
+
_You can undo this using the `npm unlink` command._
|
|
87
127
|
|
|
88
128
|
Then start Homebridge in debug mode:
|
|
89
129
|
|
|
@@ -109,13 +149,13 @@ To fix this, [Reset Homebridge](https://github.com/homebridge/homebridge/wiki/Co
|
|
|
109
149
|
|
|
110
150
|
Try the following:
|
|
111
151
|
|
|
112
|
-
|
|
113
|
-
|
|
152
|
+
1. Swap between the `Bonjour HAP` and `Ciao` mDNS Advertiser options. See [the wiki](https://github.com/homebridge/homebridge/wiki/mDNS-Options) for more details.
|
|
153
|
+
2. iOS DNS cache has gone stale or gotten misconfigured. To fix this, turn airplane mode on and back off to flush the DNS cache.
|
|
114
154
|
|
|
115
155
|
### Limitations
|
|
116
156
|
|
|
117
|
-
|
|
118
|
-
|
|
157
|
+
- One bridge can only expose 150 accessories due to a HomeKit limit. You can however run your plugins as a [Child Bridge](https://github.com/homebridge/homebridge/wiki/Child-Bridges) or run [Multiple Homebridge Instances](https://github.com/homebridge/homebridge-config-ui-x/wiki/Homebridge-Service-Command#multiple-instances) to get around this limitation.
|
|
158
|
+
- Once an accessory has been added to the Home app, changing its name via Homebridge won't be automatically reflected in iOS. You must change it via the Home app as well.
|
|
119
159
|
|
|
120
160
|
## Why Homebridge?
|
|
121
161
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
//
|
|
4
|
+
// This executable sets up the environment and runs the Homebridge CLI.
|
|
5
|
+
//
|
|
6
|
+
|
|
7
|
+
import { realpathSync } from 'node:fs'
|
|
8
|
+
import { dirname, join } from 'node:path'
|
|
9
|
+
import process from 'node:process'
|
|
10
|
+
import { fileURLToPath, pathToFileURL } from 'node:url'
|
|
11
|
+
|
|
12
|
+
process.title = 'homebridge'
|
|
13
|
+
|
|
14
|
+
// Find the Homebridge lib
|
|
15
|
+
const __filename = fileURLToPath(import.meta.url)
|
|
16
|
+
const lib = join(dirname(realpathSync(__filename)), '../dist')
|
|
17
|
+
|
|
18
|
+
// Convert the path to a file URL
|
|
19
|
+
const libUrl = pathToFileURL(join(lib, 'cli.js')).href
|
|
20
|
+
|
|
21
|
+
// Run Homebridge
|
|
22
|
+
import(libUrl).then(({ default: run }) => run())
|
package/config-sample.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"port": 51826,
|
|
8
8
|
"pin": "031-45-154"
|
|
9
9
|
},
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
"description": "This is an example configuration file with one fake accessory and one fake platform. You can use this as a template for creating your own configuration file containing devices you actually own.",
|
|
12
12
|
"ports": {
|
|
13
13
|
"start": 52100,
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
|
|
24
24
|
"platforms": [
|
|
25
25
|
{
|
|
26
|
-
"platform"
|
|
27
|
-
"name"
|
|
26
|
+
"platform": "PhilipsHue",
|
|
27
|
+
"name": "Hue"
|
|
28
28
|
}
|
|
29
29
|
]
|
|
30
30
|
}
|
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import type { Controller, Service } from '@homebridge/hap-nodejs';
|
|
2
|
+
import type { AccessoryConfig, PlatformConfig } from './bridgeService.js';
|
|
3
|
+
import type { Logging } from './logger.js';
|
|
4
|
+
import type { BaseMatterManager } from './matter/BaseMatterManager.js';
|
|
5
|
+
import type { clusterNames, clusters, ClusterStateMap, deviceTypes, MatterAccessory, MatterServer, MatterTypes } from './matter/index.js';
|
|
6
|
+
import { EventEmitter } from 'node:events';
|
|
7
|
+
import hapNodeJs from '@homebridge/hap-nodejs';
|
|
8
|
+
import { PlatformAccessory } from './platformAccessory.js';
|
|
9
|
+
import { User } from './user.js';
|
|
10
|
+
export type HAP = typeof hapNodeJs;
|
|
11
|
+
export type HAPLegacyTypes = typeof hapNodeJs.LegacyTypes;
|
|
12
|
+
export type PluginIdentifier = PluginName | ScopedPluginName;
|
|
13
|
+
export type PluginName = string;
|
|
14
|
+
export type ScopedPluginName = string;
|
|
15
|
+
export type AccessoryName = string;
|
|
16
|
+
export type PlatformName = string;
|
|
17
|
+
export type AccessoryIdentifier = string;
|
|
18
|
+
export type PlatformIdentifier = string;
|
|
19
|
+
export declare const enum PluginType {
|
|
20
|
+
ACCESSORY = "accessory",
|
|
21
|
+
PLATFORM = "platform"
|
|
22
|
+
}
|
|
23
|
+
export interface PluginInitializer {
|
|
24
|
+
(api: API): void | Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export interface AccessoryPluginConstructor {
|
|
27
|
+
new (logger: Logging, config: AccessoryConfig, api: API): AccessoryPlugin;
|
|
28
|
+
}
|
|
29
|
+
export interface AccessoryPlugin {
|
|
30
|
+
identify?: () => void;
|
|
31
|
+
getServices: () => Service[];
|
|
32
|
+
getControllers?: () => Controller[];
|
|
33
|
+
}
|
|
34
|
+
export interface PlatformPluginConstructor<Config extends PlatformConfig = PlatformConfig> {
|
|
35
|
+
new (logger: Logging, config: Config, api: API): DynamicPlatformPlugin | StaticPlatformPlugin | IndependentPlatformPlugin;
|
|
36
|
+
}
|
|
37
|
+
export interface PlatformPlugin {
|
|
38
|
+
}
|
|
39
|
+
export interface DynamicPlatformPlugin extends PlatformPlugin {
|
|
40
|
+
configureAccessory: (accessory: PlatformAccessory) => void;
|
|
41
|
+
configureMatterAccessory?: (accessory: MatterAccessory) => void;
|
|
42
|
+
}
|
|
43
|
+
export interface StaticPlatformPlugin extends PlatformPlugin {
|
|
44
|
+
accessories: (callback: (foundAccessories: AccessoryPlugin[]) => void) => void;
|
|
45
|
+
}
|
|
46
|
+
export interface IndependentPlatformPlugin extends PlatformPlugin {
|
|
47
|
+
}
|
|
48
|
+
export declare const enum APIEvent {
|
|
49
|
+
DID_FINISH_LAUNCHING = "didFinishLaunching",
|
|
50
|
+
SHUTDOWN = "shutdown"
|
|
51
|
+
}
|
|
52
|
+
export declare const enum InternalAPIEvent {
|
|
53
|
+
REGISTER_ACCESSORY = "registerAccessory",
|
|
54
|
+
REGISTER_PLATFORM = "registerPlatform",
|
|
55
|
+
PUBLISH_EXTERNAL_ACCESSORIES = "publishExternalAccessories",
|
|
56
|
+
REGISTER_PLATFORM_ACCESSORIES = "registerPlatformAccessories",
|
|
57
|
+
UPDATE_PLATFORM_ACCESSORIES = "updatePlatformAccessories",
|
|
58
|
+
UNREGISTER_PLATFORM_ACCESSORIES = "unregisterPlatformAccessories",
|
|
59
|
+
PUBLISH_EXTERNAL_MATTER_ACCESSORIES = "publishExternalMatterAccessories",
|
|
60
|
+
REGISTER_MATTER_PLATFORM_ACCESSORIES = "registerMatterPlatformAccessories",
|
|
61
|
+
UPDATE_MATTER_PLATFORM_ACCESSORIES = "updateMatterPlatformAccessories",
|
|
62
|
+
UNREGISTER_MATTER_PLATFORM_ACCESSORIES = "unregisterMatterPlatformAccessories",
|
|
63
|
+
UNREGISTER_EXTERNAL_MATTER_ACCESSORIES = "unregisterExternalMatterAccessories",
|
|
64
|
+
UPDATE_MATTER_ACCESSORY_STATE = "updateMatterAccessoryState"
|
|
65
|
+
}
|
|
66
|
+
export interface MatterAPI {
|
|
67
|
+
readonly uuid: HAP['uuid'];
|
|
68
|
+
readonly deviceTypes: typeof deviceTypes;
|
|
69
|
+
readonly clusters: typeof clusters;
|
|
70
|
+
readonly clusterNames: typeof clusterNames;
|
|
71
|
+
readonly types: typeof MatterTypes;
|
|
72
|
+
registerPlatformAccessories: (pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]) => Promise<void>;
|
|
73
|
+
updatePlatformAccessories: (accessories: MatterAccessory[]) => Promise<void>;
|
|
74
|
+
unregisterPlatformAccessories: (pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]) => Promise<void>;
|
|
75
|
+
updateAccessoryState: {
|
|
76
|
+
<K extends keyof ClusterStateMap>(uuid: string, cluster: K, attributes: Partial<ClusterStateMap[K]>, partId?: string): Promise<void>;
|
|
77
|
+
(uuid: string, cluster: string, attributes: Record<string, unknown>, partId?: string): Promise<void>;
|
|
78
|
+
};
|
|
79
|
+
getAccessoryState: {
|
|
80
|
+
<K extends keyof ClusterStateMap>(uuid: string, cluster: K, partId?: string): Promise<Partial<ClusterStateMap[K]> | undefined>;
|
|
81
|
+
(uuid: string, cluster: string, partId?: string): Promise<Record<string, unknown> | undefined>;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export interface API {
|
|
85
|
+
readonly version: number;
|
|
86
|
+
readonly serverVersion: string;
|
|
87
|
+
readonly user: typeof User;
|
|
88
|
+
readonly hap: HAP;
|
|
89
|
+
readonly hapLegacyTypes: HAPLegacyTypes;
|
|
90
|
+
readonly platformAccessory: typeof PlatformAccessory;
|
|
91
|
+
readonly matter: MatterAPI;
|
|
92
|
+
versionGreaterOrEqual: (version: string) => boolean;
|
|
93
|
+
registerAccessory: ((accessoryName: AccessoryName, constructor: AccessoryPluginConstructor) => void) & ((pluginIdentifier: PluginIdentifier, accessoryName: AccessoryName, constructor: AccessoryPluginConstructor) => void);
|
|
94
|
+
registerPlatform: (<Config extends PlatformConfig>(platformName: PlatformName, constructor: PlatformPluginConstructor<Config>) => void) & (<Config extends PlatformConfig>(pluginIdentifier: PluginIdentifier, platformName: PlatformName, constructor: PlatformPluginConstructor<Config>) => void);
|
|
95
|
+
registerPlatformAccessories: (pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: PlatformAccessory[]) => void;
|
|
96
|
+
updatePlatformAccessories: (accessories: PlatformAccessory[]) => void;
|
|
97
|
+
unregisterPlatformAccessories: (pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: PlatformAccessory[]) => void;
|
|
98
|
+
publishExternalAccessories: (pluginIdentifier: PluginIdentifier, accessories: PlatformAccessory[]) => void;
|
|
99
|
+
isMatterAvailable: () => boolean;
|
|
100
|
+
isMatterEnabled: () => boolean;
|
|
101
|
+
on: ((event: 'didFinishLaunching', listener: () => void) => this) & ((event: 'shutdown', listener: () => void) => this);
|
|
102
|
+
}
|
|
103
|
+
export declare interface HomebridgeAPI {
|
|
104
|
+
on: ((event: 'didFinishLaunching', listener: () => void) => this) & ((event: 'shutdown', listener: () => void) => this) & ((event: InternalAPIEvent.REGISTER_ACCESSORY, listener: (accessoryName: AccessoryName, accessoryConstructor: AccessoryPluginConstructor, pluginIdentifier?: PluginIdentifier) => void) => this) & ((event: InternalAPIEvent.REGISTER_PLATFORM, listener: (platformName: PlatformName, platformConstructor: PlatformPluginConstructor, pluginIdentifier?: PluginIdentifier) => void) => this) & ((event: InternalAPIEvent.PUBLISH_EXTERNAL_ACCESSORIES, listener: (accessories: PlatformAccessory[]) => void) => this) & ((event: InternalAPIEvent.REGISTER_PLATFORM_ACCESSORIES, listener: (accessories: PlatformAccessory[]) => void) => this) & ((event: InternalAPIEvent.UPDATE_PLATFORM_ACCESSORIES, listener: (accessories: PlatformAccessory[]) => void) => this) & ((event: InternalAPIEvent.UNREGISTER_PLATFORM_ACCESSORIES, listener: (accessories: PlatformAccessory[]) => void) => this) & ((event: InternalAPIEvent.PUBLISH_EXTERNAL_MATTER_ACCESSORIES, listener: (accessories: MatterAccessory[], registrationId: string) => void) => this) & ((event: InternalAPIEvent.REGISTER_MATTER_PLATFORM_ACCESSORIES, listener: (pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]) => void) => this) & ((event: InternalAPIEvent.UPDATE_MATTER_PLATFORM_ACCESSORIES, listener: (accessories: MatterAccessory[]) => void) => this) & ((event: InternalAPIEvent.UNREGISTER_MATTER_PLATFORM_ACCESSORIES, listener: (pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]) => void) => this) & ((event: InternalAPIEvent.UNREGISTER_EXTERNAL_MATTER_ACCESSORIES, listener: (accessories: MatterAccessory[]) => void) => this) & ((event: InternalAPIEvent.UPDATE_MATTER_ACCESSORY_STATE, listener: (uuid: string, cluster: string, attributes: Record<string, any>, partId?: string) => void) => this);
|
|
105
|
+
emit: ((event: 'didFinishLaunching') => boolean) & ((event: 'shutdown') => boolean) & ((event: InternalAPIEvent.REGISTER_ACCESSORY, accessoryName: AccessoryName, accessoryConstructor: AccessoryPluginConstructor, pluginIdentifier?: PluginIdentifier) => boolean) & ((event: InternalAPIEvent.REGISTER_PLATFORM, platformName: PlatformName, platformConstructor: PlatformPluginConstructor, pluginIdentifier?: PluginIdentifier) => boolean) & ((event: InternalAPIEvent.PUBLISH_EXTERNAL_ACCESSORIES, accessories: PlatformAccessory[]) => boolean) & ((event: InternalAPIEvent.REGISTER_PLATFORM_ACCESSORIES, accessories: PlatformAccessory[]) => boolean) & ((event: InternalAPIEvent.UPDATE_PLATFORM_ACCESSORIES, accessories: PlatformAccessory[]) => boolean) & ((event: InternalAPIEvent.UNREGISTER_PLATFORM_ACCESSORIES, accessories: PlatformAccessory[]) => boolean) & ((event: InternalAPIEvent.PUBLISH_EXTERNAL_MATTER_ACCESSORIES, accessories: MatterAccessory[], registrationId: string) => boolean) & ((event: InternalAPIEvent.REGISTER_MATTER_PLATFORM_ACCESSORIES, pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]) => boolean) & ((event: InternalAPIEvent.UPDATE_MATTER_PLATFORM_ACCESSORIES, accessories: MatterAccessory[]) => boolean) & ((event: InternalAPIEvent.UNREGISTER_MATTER_PLATFORM_ACCESSORIES, pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]) => boolean) & ((event: InternalAPIEvent.UNREGISTER_EXTERNAL_MATTER_ACCESSORIES, accessories: MatterAccessory[]) => boolean) & ((event: InternalAPIEvent.UPDATE_MATTER_ACCESSORY_STATE, uuid: string, cluster: string, attributes: Record<string, any>, partId?: string) => boolean);
|
|
106
|
+
}
|
|
107
|
+
export declare class HomebridgeAPI extends EventEmitter implements API {
|
|
108
|
+
readonly version = 2.7;
|
|
109
|
+
readonly serverVersion: string;
|
|
110
|
+
readonly user: typeof User;
|
|
111
|
+
readonly hap: typeof hapNodeJs;
|
|
112
|
+
readonly hapLegacyTypes: typeof hapNodeJs.LegacyTypes;
|
|
113
|
+
readonly platformAccessory: typeof PlatformAccessory;
|
|
114
|
+
private matterEnabled;
|
|
115
|
+
_matterServer: MatterServer | null;
|
|
116
|
+
_matterManager: BaseMatterManager | null;
|
|
117
|
+
private _pendingExternalRegistrations;
|
|
118
|
+
private _matterAPI?;
|
|
119
|
+
get matter(): MatterAPI;
|
|
120
|
+
loadMatterAPI(): Promise<void>;
|
|
121
|
+
constructor();
|
|
122
|
+
_setMatterEnabled(enabled: boolean): void;
|
|
123
|
+
_setMatterServer(server: MatterServer | null): void;
|
|
124
|
+
_setMatterManager(manager: BaseMatterManager | null): void;
|
|
125
|
+
_resolveExternalRegistration(registrationId: string): void;
|
|
126
|
+
versionGreaterOrEqual(version: string): boolean;
|
|
127
|
+
static isDynamicPlatformPlugin(platformPlugin: PlatformPlugin): platformPlugin is DynamicPlatformPlugin;
|
|
128
|
+
static isStaticPlatformPlugin(platformPlugin: PlatformPlugin): platformPlugin is StaticPlatformPlugin;
|
|
129
|
+
signalFinished(): void;
|
|
130
|
+
signalShutdown(): void;
|
|
131
|
+
registerAccessory(accessoryName: AccessoryName, constructor: AccessoryPluginConstructor): void;
|
|
132
|
+
registerAccessory(pluginIdentifier: PluginIdentifier, accessoryName: AccessoryName, constructor: AccessoryPluginConstructor): void;
|
|
133
|
+
registerPlatform(platformName: PlatformName, constructor: PlatformPluginConstructor): void;
|
|
134
|
+
registerPlatform(pluginIdentifier: PluginIdentifier, platformName: PlatformName, constructor: PlatformPluginConstructor): void;
|
|
135
|
+
publishCameraAccessories(pluginIdentifier: PluginIdentifier, accessories: PlatformAccessory[]): void;
|
|
136
|
+
publishExternalAccessories(pluginIdentifier: PluginIdentifier, accessories: PlatformAccessory[]): void;
|
|
137
|
+
registerPlatformAccessories(pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: PlatformAccessory[]): void;
|
|
138
|
+
updatePlatformAccessories(accessories: PlatformAccessory[]): void;
|
|
139
|
+
unregisterPlatformAccessories(pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: PlatformAccessory[]): void;
|
|
140
|
+
isMatterAvailable(): boolean;
|
|
141
|
+
isMatterEnabled(): boolean;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import hapNodeJs from '@homebridge/hap-nodejs';
|
|
3
|
+
import semver from 'semver';
|
|
4
|
+
import { Logger } from './logger.js';
|
|
5
|
+
import { PlatformAccessory } from './platformAccessory.js';
|
|
6
|
+
import { PluginManager } from './pluginManager.js';
|
|
7
|
+
import { User } from './user.js';
|
|
8
|
+
import getVersion from './version.js';
|
|
9
|
+
const log = Logger.internal;
|
|
10
|
+
export var PluginType;
|
|
11
|
+
(function (PluginType) {
|
|
12
|
+
PluginType["ACCESSORY"] = "accessory";
|
|
13
|
+
PluginType["PLATFORM"] = "platform";
|
|
14
|
+
})(PluginType || (PluginType = {}));
|
|
15
|
+
export var APIEvent;
|
|
16
|
+
(function (APIEvent) {
|
|
17
|
+
APIEvent["DID_FINISH_LAUNCHING"] = "didFinishLaunching";
|
|
18
|
+
APIEvent["SHUTDOWN"] = "shutdown";
|
|
19
|
+
})(APIEvent || (APIEvent = {}));
|
|
20
|
+
export var InternalAPIEvent;
|
|
21
|
+
(function (InternalAPIEvent) {
|
|
22
|
+
InternalAPIEvent["REGISTER_ACCESSORY"] = "registerAccessory";
|
|
23
|
+
InternalAPIEvent["REGISTER_PLATFORM"] = "registerPlatform";
|
|
24
|
+
InternalAPIEvent["PUBLISH_EXTERNAL_ACCESSORIES"] = "publishExternalAccessories";
|
|
25
|
+
InternalAPIEvent["REGISTER_PLATFORM_ACCESSORIES"] = "registerPlatformAccessories";
|
|
26
|
+
InternalAPIEvent["UPDATE_PLATFORM_ACCESSORIES"] = "updatePlatformAccessories";
|
|
27
|
+
InternalAPIEvent["UNREGISTER_PLATFORM_ACCESSORIES"] = "unregisterPlatformAccessories";
|
|
28
|
+
InternalAPIEvent["PUBLISH_EXTERNAL_MATTER_ACCESSORIES"] = "publishExternalMatterAccessories";
|
|
29
|
+
InternalAPIEvent["REGISTER_MATTER_PLATFORM_ACCESSORIES"] = "registerMatterPlatformAccessories";
|
|
30
|
+
InternalAPIEvent["UPDATE_MATTER_PLATFORM_ACCESSORIES"] = "updateMatterPlatformAccessories";
|
|
31
|
+
InternalAPIEvent["UNREGISTER_MATTER_PLATFORM_ACCESSORIES"] = "unregisterMatterPlatformAccessories";
|
|
32
|
+
InternalAPIEvent["UNREGISTER_EXTERNAL_MATTER_ACCESSORIES"] = "unregisterExternalMatterAccessories";
|
|
33
|
+
InternalAPIEvent["UPDATE_MATTER_ACCESSORY_STATE"] = "updateMatterAccessoryState";
|
|
34
|
+
})(InternalAPIEvent || (InternalAPIEvent = {}));
|
|
35
|
+
export class HomebridgeAPI extends EventEmitter {
|
|
36
|
+
version = 2.7;
|
|
37
|
+
serverVersion = getVersion();
|
|
38
|
+
user = User;
|
|
39
|
+
hap = hapNodeJs;
|
|
40
|
+
hapLegacyTypes = hapNodeJs.LegacyTypes;
|
|
41
|
+
platformAccessory = PlatformAccessory;
|
|
42
|
+
matterEnabled = false;
|
|
43
|
+
_matterServer = null;
|
|
44
|
+
_matterManager = null;
|
|
45
|
+
_pendingExternalRegistrations = new Map();
|
|
46
|
+
_matterAPI;
|
|
47
|
+
get matter() {
|
|
48
|
+
if (!this._matterAPI) {
|
|
49
|
+
throw new Error('Matter API must be pre-loaded before access. '
|
|
50
|
+
+ 'Call await api.loadMatterAPI() in your plugin constructor or access api.matter in didFinishLaunching().');
|
|
51
|
+
}
|
|
52
|
+
return this._matterAPI;
|
|
53
|
+
}
|
|
54
|
+
async loadMatterAPI() {
|
|
55
|
+
if (!this._matterAPI) {
|
|
56
|
+
const { MatterAPIImpl } = await import('./matter/MatterAPIImpl.js');
|
|
57
|
+
this._matterAPI = new MatterAPIImpl(this);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
constructor() {
|
|
61
|
+
super();
|
|
62
|
+
}
|
|
63
|
+
_setMatterEnabled(enabled) {
|
|
64
|
+
this.matterEnabled = enabled;
|
|
65
|
+
}
|
|
66
|
+
_setMatterServer(server) {
|
|
67
|
+
this._matterServer = server;
|
|
68
|
+
}
|
|
69
|
+
_setMatterManager(manager) {
|
|
70
|
+
this._matterManager = manager;
|
|
71
|
+
}
|
|
72
|
+
_resolveExternalRegistration(registrationId) {
|
|
73
|
+
const resolve = this._pendingExternalRegistrations.get(registrationId);
|
|
74
|
+
if (resolve) {
|
|
75
|
+
resolve();
|
|
76
|
+
this._pendingExternalRegistrations.delete(registrationId);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
versionGreaterOrEqual(version) {
|
|
80
|
+
return semver.gte(this.serverVersion, version);
|
|
81
|
+
}
|
|
82
|
+
static isDynamicPlatformPlugin(platformPlugin) {
|
|
83
|
+
return 'configureAccessory' in platformPlugin;
|
|
84
|
+
}
|
|
85
|
+
static isStaticPlatformPlugin(platformPlugin) {
|
|
86
|
+
return 'accessories' in platformPlugin;
|
|
87
|
+
}
|
|
88
|
+
signalFinished() {
|
|
89
|
+
this.emit("didFinishLaunching");
|
|
90
|
+
}
|
|
91
|
+
signalShutdown() {
|
|
92
|
+
this.emit("shutdown");
|
|
93
|
+
}
|
|
94
|
+
registerAccessory(pluginIdentifier, accessoryName, constructor) {
|
|
95
|
+
if (typeof accessoryName === 'function') {
|
|
96
|
+
constructor = accessoryName;
|
|
97
|
+
accessoryName = pluginIdentifier;
|
|
98
|
+
this.emit("registerAccessory", accessoryName, constructor);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
this.emit("registerAccessory", accessoryName, constructor, pluginIdentifier);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
registerPlatform(pluginIdentifier, platformName, constructor) {
|
|
105
|
+
if (typeof platformName === 'function') {
|
|
106
|
+
constructor = platformName;
|
|
107
|
+
platformName = pluginIdentifier;
|
|
108
|
+
this.emit("registerPlatform", platformName, constructor);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
this.emit("registerPlatform", platformName, constructor, pluginIdentifier);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
publishCameraAccessories(pluginIdentifier, accessories) {
|
|
115
|
+
this.publishExternalAccessories(pluginIdentifier, accessories);
|
|
116
|
+
}
|
|
117
|
+
publishExternalAccessories(pluginIdentifier, accessories) {
|
|
118
|
+
if (!PluginManager.isQualifiedPluginIdentifier(pluginIdentifier)) {
|
|
119
|
+
log.info(`One of your plugins incorrectly registered an external accessory using the platform name (${pluginIdentifier}) and not the plugin identifier. Please report this to the developer!`);
|
|
120
|
+
}
|
|
121
|
+
accessories.forEach((accessory) => {
|
|
122
|
+
if (!(accessory instanceof PlatformAccessory)) {
|
|
123
|
+
throw new TypeError(`${pluginIdentifier} attempt to register an accessory that isn't PlatformAccessory!`);
|
|
124
|
+
}
|
|
125
|
+
accessory._associatedPlugin = pluginIdentifier;
|
|
126
|
+
});
|
|
127
|
+
this.emit("publishExternalAccessories", accessories);
|
|
128
|
+
}
|
|
129
|
+
registerPlatformAccessories(pluginIdentifier, platformName, accessories) {
|
|
130
|
+
accessories.forEach((accessory) => {
|
|
131
|
+
if (!(accessory instanceof PlatformAccessory)) {
|
|
132
|
+
throw new TypeError(`${pluginIdentifier} - ${platformName} attempt to register an accessory that isn't PlatformAccessory!`);
|
|
133
|
+
}
|
|
134
|
+
accessory._associatedPlugin = pluginIdentifier;
|
|
135
|
+
accessory._associatedPlatform = platformName;
|
|
136
|
+
});
|
|
137
|
+
this.emit("registerPlatformAccessories", accessories);
|
|
138
|
+
}
|
|
139
|
+
updatePlatformAccessories(accessories) {
|
|
140
|
+
this.emit("updatePlatformAccessories", accessories);
|
|
141
|
+
}
|
|
142
|
+
unregisterPlatformAccessories(pluginIdentifier, platformName, accessories) {
|
|
143
|
+
accessories.forEach((accessory) => {
|
|
144
|
+
if (!(accessory instanceof PlatformAccessory)) {
|
|
145
|
+
throw new TypeError(`${pluginIdentifier} - ${platformName} attempt to unregister an accessory that isn't PlatformAccessory!`);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
this.emit("unregisterPlatformAccessories", accessories);
|
|
149
|
+
}
|
|
150
|
+
isMatterAvailable() {
|
|
151
|
+
return semver.gte(this.serverVersion, '2.0.0-alpha.0');
|
|
152
|
+
}
|
|
153
|
+
isMatterEnabled() {
|
|
154
|
+
return this.matterEnabled;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|