homebridge
- Version 1.9.0
- Published
- 342 kB
- 7 dependencies
- Apache-2.0 license
Install
npm i homebridge
yarn add homebridge
pnpm add homebridge
Overview
HomeKit support for the impatient
Index
Classes
Interfaces
Enums
Type Aliases
Classes
class Logger
class Logger {}
Logger class
constructor
constructor(prefix?: string);
property internal
static readonly internal: Logger;
property prefix
readonly prefix?: string;
method debug
debug: (message: string, ...parameters: any[]) => void;
method error
error: (message: string, ...parameters: any[]) => void;
method forceColor
static forceColor: () => void;
Forces color in logging output, even if it seems like color is unsupported.
method info
info: (message: string, ...parameters: any[]) => void;
method log
log: (level: LogLevel, message: string, ...parameters: any[]) => void;
method setDebugEnabled
static setDebugEnabled: (enabled?: boolean) => void;
Turns on debug level logging. Off by default.
Parameter enabled
method setTimestampEnabled
static setTimestampEnabled: (enabled?: boolean) => void;
Turns on inclusion of timestamps in log messages. On by default.
Parameter enabled
method success
success: (message: string, ...parameters: any[]) => void;
method warn
warn: (message: string, ...parameters: any[]) => void;
method withPrefix
static withPrefix: (prefix: string) => Logging;
Creates a new Logging device with a specified prefix.
Parameter prefix
the prefix of the logger
class PlatformAccessory
class PlatformAccessory< T extends UnknownContext = UnknownContext> extends EventEmitter {}
constructor
constructor(displayName: string, uuid: string, category?: Categories);
property category
category: Categories;
property context
context: UnknownContext;
This is a way for Plugin developers to store custom data with their accessory
property displayName
displayName: string;
property reachable
reachable: boolean;
Deprecated
reachability has no effect and isn't supported anymore
property services
services: Service[];
property UUID
UUID: string;
method addService
addService: { (service: Service): Service; <S extends any>( serviceConstructor: S, ...constructorArgs: ConstructorArgs<S> ): Service;};
method configureCameraSource
configureCameraSource: (cameraSource: LegacyCameraSource) => CameraController;
method configureController
configureController: (controller: Controller | ControllerConstructor) => void;
Configures a new controller for the given accessory. See Accessory.configureController.
Parameter controller
method deserialize
static deserialize: (json: SerializedPlatformAccessory) => PlatformAccessory;
method getService
getService: <T extends WithUUID<any>>(name: string | T) => Service | undefined;
method getServiceById
getServiceById: <T extends WithUUID<any>>( uuid: string | T, subType: string) => Service | undefined;
method getServiceByUUIDAndSubType
getServiceByUUIDAndSubType: <T extends WithUUID<any>>( uuid: string | T, subType: string) => Service | undefined;
method removeController
removeController: (controller: Controller) => void;
Removes a configured controller from the given accessory. See Accessory.removeController.
Parameter controller
method removeService
removeService: (service: Service) => void;
method serialize
static serialize: (accessory: PlatformAccessory) => SerializedPlatformAccessory;
method updateDisplayName
updateDisplayName: (name: string) => void;
method updateReachability
updateReachability: (reachable: boolean) => void;
Parameter reachable
Deprecated
reachability has no effect and isn't supported anymore
class User
class User {}
Manages user settings and storage locations.
method cachedAccessoryPath
static cachedAccessoryPath: () => string;
method configPath
static configPath: () => string;
method persistPath
static persistPath: () => string;
method setStoragePath
static setStoragePath: (...storagePathSegments: string[]) => void;
method storagePath
static storagePath: () => string;
Interfaces
interface AccessoryConfig
interface AccessoryConfig extends Record<string, any> {}
interface AccessoryPlugin
interface AccessoryPlugin {}
method getControllers
getControllers: () => Controller[];
This method will be called once on startup, to query all controllers to be exposed by the Accessory. It is optional to implement.
This includes controllers like the RemoteController or the CameraController. Any necessary controller specific setup should have been done when returning the array. In most cases the plugin will only return an array of the size 1.
In the case that the Plugin does not add any additional services (returned by getServices) the method getServices must be defined in any way and should just return an empty array.
Returns
{Controller[]} controllers - returned controllers will be configured for the Accessory
method getServices
getServices: () => Service[];
This method will be called once on startup, to query all services to be exposed by the Accessory. All event handlers for characteristics should be set up before the array is returned.
Returns
{Service[]} services - returned services will be added to the Accessory
method identify
identify: () => void;
Optional method which will be called if a 'identify' of an Accessory is requested by HomeKit.
interface AccessoryPluginConstructor
interface AccessoryPluginConstructor {}
construct signature
new (logger: Logging, config: AccessoryConfig, api: API): AccessoryPlugin;
interface API
interface API {}
property hap
readonly hap: HAP;
property hapLegacyTypes
readonly hapLegacyTypes: HAPLegacyTypes;
property platformAccessory
readonly platformAccessory: typeof PlatformAccessory;
property serverVersion
readonly serverVersion: string;
The current homebridge semver version.
property user
readonly user: typeof User;
property version
readonly version: number;
The homebridge API version as a floating point number.
method on
on: { (event: 'didFinishLaunching', listener: () => void): this; (event: 'shutdown', listener: () => void): this;};
method publishCameraAccessories
publishCameraAccessories: ( pluginIdentifier: PluginIdentifier, accessories: PlatformAccessory[]) => void;
Deprecated
use publishExternalAccessories directly to publish a standalone Accessory
method publishExternalAccessories
publishExternalAccessories: ( pluginIdentifier: PluginIdentifier, accessories: PlatformAccessory[]) => void;
method registerAccessory
registerAccessory: { ( accessoryName: AccessoryName, constructor: AccessoryPluginConstructor ): void; ( pluginIdentifier: string, accessoryName: string, constructor: AccessoryPluginConstructor ): void;};
method registerPlatform
registerPlatform: { <Config extends PlatformConfig>( platformName: PlatformName, constructor: PlatformPluginConstructor<Config> ): void; <Config extends PlatformConfig>( pluginIdentifier: string, platformName: string, constructor: PlatformPluginConstructor<Config> ): void;};
method registerPlatformAccessories
registerPlatformAccessories: ( pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: PlatformAccessory[]) => void;
method unregisterPlatformAccessories
unregisterPlatformAccessories: ( pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: PlatformAccessory[]) => void;
method updatePlatformAccessories
updatePlatformAccessories: (accessories: PlatformAccessory[]) => void;
method versionGreaterOrEqual
versionGreaterOrEqual: (version: string) => boolean;
Returns true if the current running homebridge version is greater or equal to the passed version string.
Example:
We assume the homebridge version 1.3.0-beta.12 (serverVersion) and the following example calls below
versionGreaterOrEqual("1.2.0"); // will return trueversionGreaterOrEqual("1.3.0"); // will return false (the RELEASE version 1.3.0 is bigger than the BETA version 1.3.0-beta.12)versionGreaterOrEqual("1.3.0-beta.8); // will return trueParameter version
interface BridgeConfiguration
interface BridgeConfiguration {}
property advertiser
advertiser?: MDNSAdvertiser;
property bind
bind?: (InterfaceName | IPAddress) | (InterfaceName | IPAddress)[];
property disableIpc
disableIpc?: boolean;
property env
env?: { DEBUG?: string; NODE_OPTIONS?: string;};
property firmwareRevision
firmwareRevision?: string;
property manufacturer
manufacturer?: string;
property model
model?: string;
property name
name: string;
property pin
pin: string;
property port
port?: number;
property serialNumber
serialNumber?: string;
property setupID
setupID?: string[4];
property username
username: MacAddress;
interface DynamicPlatformPlugin
interface DynamicPlatformPlugin extends PlatformPlugin {}
Platform that is able to dynamically add or remove accessories. All configured accessories are stored to disk and recreated on startup. Accessories can be added or removed by using API.registerPlatformAccessories or API.unregisterPlatformAccessories.
method configureAccessory
configureAccessory: (accessory: PlatformAccessory) => void;
This method is called for every PlatformAccessory, which is recreated from disk on startup. It should be used to properly initialize the Accessory and setup all event handlers for all services and their characteristics.
Parameter accessory
which needs to be configured
interface ExternalPortsConfiguration
interface ExternalPortsConfiguration {}
interface HomebridgeConfig
interface HomebridgeConfig {}
property accessories
accessories: AccessoryConfig[];
property bridge
bridge: BridgeConfiguration;
property disabledPlugins
disabledPlugins?: PluginIdentifier[];
Array of disabled plugins. Unlike the plugins[] config which prevents plugins from being initialised at all, disabled plugins still have their alias loaded, so we can match config blocks of disabled plugins and show an appropriate message in the logs.
property mdns
mdns?: any;
Deprecated
property platforms
platforms: PlatformConfig[];
property plugins
plugins?: PluginIdentifier[];
property ports
ports?: ExternalPortsConfiguration;
interface HomebridgeOptions
interface HomebridgeOptions {}
property customPluginPath
customPluginPath?: string;
property customStoragePath
customStoragePath?: string;
property debugModeEnabled
debugModeEnabled?: boolean;
property forceColourLogging
forceColourLogging?: boolean;
property hideQRCode
hideQRCode?: boolean;
property insecureAccess
insecureAccess?: boolean;
property keepOrphanedCachedAccessories
keepOrphanedCachedAccessories?: boolean;
property noLogTimestamps
noLogTimestamps?: boolean;
property strictPluginResolution
strictPluginResolution?: boolean;
interface IndependentPlatformPlugin
interface IndependentPlatformPlugin extends PlatformPlugin {}
Platform that does not aim to add any accessories to the main bridge accessory. This platform should be used if for example a plugin aims to only expose external accessories. It should also be used when the platform doesn't intend to expose any accessories at all, like plugins providing a UI for homebridge.
interface Logging
interface Logging {}
Represents a logging device which can be used directly as a function (for INFO logging) but also has dedicated logging functions for respective logging levels.
property prefix
prefix: string;
method debug
debug: (message: string, ...parameters: any[]) => void;
method error
error: (message: string, ...parameters: any[]) => void;
method info
info: (message: string, ...parameters: any[]) => void;
method log
log: (level: LogLevel, message: string, ...parameters: any[]) => void;
method success
success: (message: string, ...parameters: any[]) => void;
method warn
warn: (message: string, ...parameters: any[]) => void;
call signature
(message: string, ...parameters: any[]): void;
interface PlatformAccessory
interface PlatformAccessory {}
interface PlatformConfig
interface PlatformConfig extends Record<string, any> {}
interface PlatformPluginConstructor
interface PlatformPluginConstructor< Config extends PlatformConfig = PlatformConfig> {}
construct signature
new (logger: Logging, config: Config, api: API): | DynamicPlatformPlugin | StaticPlatformPlugin | IndependentPlatformPlugin;
interface PluginInitializer
interface PluginInitializer {}
The {PluginInitializer} is a method which must be the default export for every homebridge plugin. It is called once the plugin is loaded from disk.
call signature
(api: API): void | Promise<void>;
When the initializer is called the plugin must use the provided api instance and call the appropriate register methods - API.registerAccessory or API.registerPlatform - in order to correctly register for the following startup sequence.
Parameter api
interface StaticPlatformPlugin
interface StaticPlatformPlugin extends PlatformPlugin {}
Platform that exposes all available characteristics at the start of the plugin. The set of accessories can not change at runtime. The bridge waits for all callbacks to return before it is published and accessible by HomeKit controllers.
method accessories
accessories: (callback: (foundAccessories: AccessoryPlugin[]) => void) => void;
This method is called once at startup. The Platform should pass all accessories which need to be created to the callback in form of a AccessoryPlugin. The Platform must respond in a timely manner as otherwise the startup of the bridge would be unnecessarily delayed.
Parameter callback
Enums
enum APIEvent
const enum APIEvent { DID_FINISH_LAUNCHING = 'didFinishLaunching', SHUTDOWN = 'shutdown',}
member DID_FINISH_LAUNCHING
DID_FINISH_LAUNCHING = 'didFinishLaunching'
Event is fired once homebridge has finished with booting up and initializing all components and plugins. When this event is fired it is possible that the Bridge accessory isn't published yet, if homebridge still needs to wait for some to finish accessory creation.
member SHUTDOWN
SHUTDOWN = 'shutdown'
This event is fired when homebridge gets shutdown. This could be a regular shutdown or an unexpected crash. At this stage all Accessories are already unpublished and all PlatformAccessories are already saved to disk!
enum LogLevel
const enum LogLevel { INFO = 'info', SUCCESS = 'success', WARN = 'warn', ERROR = 'error', DEBUG = 'debug',}
Log levels to indicate importance of the logged message. Every level corresponds to a certain color.
- INFO: no color - SUCCESS: green - WARN: yellow - ERROR: red - DEBUG: gray
Messages with DEBUG level are only displayed if explicitly enabled.
enum PlatformAccessoryEvent
const enum PlatformAccessoryEvent { IDENTIFY = 'identify',}
member IDENTIFY
IDENTIFY = 'identify'
enum PluginType
const enum PluginType { ACCESSORY = 'accessory', PLATFORM = 'platform',}
Type Aliases
type AccessoryIdentifier
type AccessoryIdentifier = string;
type AccessoryName
type AccessoryName = string;
type HAP
type HAP = API['hap'];
type PlatformIdentifier
type PlatformIdentifier = string;
type PlatformName
type PlatformName = string;
type PluginIdentifier
type PluginIdentifier = PluginName | ScopedPluginName;
type PluginName
type PluginName = string;
type ScopedPluginName
type ScopedPluginName = string;
type UnknownContext
type UnknownContext = Record<string, any>;
Package Files (8)
Dependencies (7)
Dev Dependencies (19)
Peer Dependencies (0)
No peer dependencies.
Badge
To add a badge like this oneto your package's README, use the codes available below.
You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/homebridge
.
- Markdown[](https://www.jsdocs.io/package/homebridge)
- HTML<a href="https://www.jsdocs.io/package/homebridge"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>
- Updated .
Package analyzed in 4823 ms. - Missing or incorrect documentation? Open an issue for this package.