homebridge-unifi-smartpower
Version:
UniFi SmartPower plugin for Homebridge.
170 lines • 5.49 kB
TypeScript
import { Logger } from 'homebridge';
import Token = PubSubJS.Token;
export interface UniFiDeviceStatus {
device: UniFiDevice;
ports: UniFiSwitchPort[];
outlets: UniFiSmartPowerOutlet[];
rpsPorts: UniFiRpsPort[];
}
export interface UniFiDevice {
site: string;
id: string;
ip: string;
mac: string;
model: string;
version: string;
serialNumber: string;
name: string;
}
export interface UniFiSmartPowerOutlet {
index: number;
name: string;
relayState: UniFiSmartPowerOutletState;
inUse: UniFiPortOrOutletInUse;
entry: UniFiApiDeviceOutletTable;
override: UniFiApiDeviceOutletOverride;
}
export interface UniFiSwitchPort {
index: number;
name: string;
poeMode: UniFiSwitchPortPoeMode;
poeOnAction: UniFiSwitchPortPoeModeAction;
inUse: UniFiPortOrOutletInUse;
active: boolean;
entry: UniFiApiDeviceSwitchPortTable;
override: UniFiApiDeviceSwitchPortOverride;
}
export interface UniFiRpsPort {
index: number;
name: string;
portMode: UniFiRpsPortMode;
inUse: UniFiPortOrOutletInUse;
active: boolean;
entry: UniFiApiDeviceRpsPortTable;
override: UniFiApiDeviceRpsPortTableOverride;
}
export type UniFiSwitchPortPoeMode = 'unknown' | 'auto' | 'passthrough' | 'pasv24' | 'off';
export type UniFiSwitchPortPoeModeAction = 'auto' | 'passthrough' | 'pasv24' | 'off';
export type UniFiRpsPortMode = 'auto' | 'disabled';
export declare enum UniFiSmartPowerOutletState {
UNKNOWN = -1,
OFF = 0,
ON = 1
}
export declare enum UniFiPortOrOutletInUse {
UNKNOWN = -1,
NO = 0,
YES = 1
}
export declare enum UniFiSmartPowerOutletAction {
OFF = 0,
ON = 1
}
export declare enum UniFiRpsPortAction {
OFF = 0,
ON = 1
}
export declare enum UniFiDeviceKind {
OUTLET = 0,
PORT = 1,
RPS_PORT = 2
}
export declare const UniFiSwitchPortPoeCaps: {
'8023AF': number;
'8023AT': number;
PASV24: number;
PASSTHROUGHABLE: number;
PASSTHROUGH: number;
'8023BT': number;
};
export interface UniFiControllerConfig {
host: string;
port: number;
username: string;
password: string;
refreshDevicesPollInterval?: number;
outletStatusPollInterval?: number;
outletStatusCacheTtl?: number;
}
export interface UniFiSite {
id: string;
name: string;
}
export declare class UniFiSmartPower {
readonly log: Logger;
private readonly config;
private static readonly PUB_SUB_OUTLET_TOPIC;
private static readonly STATUS_CACHE_KEY;
private static readonly STATUS_CACHE_TTL_MS_DEFAULT;
private static readonly STATUS_CACHE_TTL_MS_MIN;
private static readonly STATUS_CACHE_TTL_MS_MAX;
private static readonly STATUS_POLL_INTERVAL_MS_DEFAULT;
private static readonly STATUS_POLL_INTERVAL_MS_MIN;
private static readonly STATUS_POLL_INTERVAL_MS_MAX;
private static readonly CONTROLLER_LOCK;
private readonly lock;
private readonly cache;
private readonly controller;
constructor(log: Logger, config: UniFiControllerConfig);
reset(): void;
subscribe(device: UniFiDevice, kind: UniFiDeviceKind, index: number, func: ((outlet: UniFiSmartPowerOutlet) => void) | ((port: UniFiSwitchPort) => void) | ((rpsPort: UniFiRpsPort) => void)): Token;
unsubscribe(token: Token): void;
getSites(): Promise<UniFiSite[]>;
getDeviceStatuses(site: string, acquireLock?: boolean): Promise<UniFiDeviceStatus[]>;
getDeviceStatuses(device: UniFiDevice, acquireLock?: boolean): Promise<UniFiDeviceStatus[]>;
private static transformDeviceStatusResponse;
private static getPortPoeOnMode;
private static poeSupportsMode;
getDeviceStatus(device: UniFiDevice, acquireLock?: boolean): Promise<UniFiDeviceStatus>;
getPortStatus(device: UniFiDevice, portIndex: number): Promise<UniFiSwitchPort>;
getOutletStatus(device: UniFiDevice, outletIndex: number): Promise<UniFiSmartPowerOutlet>;
getRpsPortStatus(device: UniFiDevice, portIndex: number): Promise<UniFiRpsPort>;
commandOutlet(device: UniFiDevice, outletIndex: number, command: UniFiSmartPowerOutletAction): Promise<void>;
commandPort(device: UniFiDevice, portIndex: number, poeMode: UniFiSwitchPortPoeModeAction): Promise<void>;
commandRpsPort(device: UniFiDevice, portIndex: number, command: UniFiRpsPortAction): Promise<void>;
private get statusCacheTtlMs();
private get statusPollIntervalMs();
private static statusTopic;
private static deviceCacheKey;
}
type UniFiApiDeviceSwitchPortTable = {
port_idx: number;
name?: string;
port_poe?: boolean;
poe_mode?: UniFiSwitchPortPoeModeAction;
poe_caps?: number;
poe_power?: string;
poe_enable?: boolean;
};
type UniFiApiDeviceSwitchPortOverride = {
port_idx: number;
name?: string;
poe_mode: UniFiSwitchPortPoeModeAction;
};
type UniFiApiDeviceRpsPortTable = {
port_idx: number;
name?: string;
port_mode?: UniFiRpsPortMode;
up?: boolean;
power_active?: boolean;
power_delivering?: boolean;
};
type UniFiApiDeviceRpsPortTableOverride = {
port_idx: number;
name?: string;
port_mode: UniFiRpsPortMode;
};
type UniFiApiDeviceOutletTable = {
index: number;
name?: string;
relay_state: boolean;
outlet_power?: string;
outlet_caps?: number;
};
type UniFiApiDeviceOutletOverride = {
index: number;
name?: string;
relay_state: boolean;
};
export {};
//# sourceMappingURL=uniFiSmartPower.d.ts.map