UNPKG

homebridge-unifi-smartpower

Version:
170 lines 5.49 kB
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