UNPKG

@homenet/plugin-zway

Version:

Homenet plugin for Z-Way connected Z-Wave devices

32 lines (29 loc) 1.41 kB
import { ZwayMotionSensor, ZwayLuminescenceSensor, ZwayHumiditySensor, ZwayTemperatureSensor } from './sensor'; import { Dict, ILogger, ILock, ISensor, ISettable } from '@homenet/core'; import { ZwayController } from './controller'; import { ZwayLock } from './lock'; export function createLockFactory(controllers: Dict<ZwayController>, logger: ILogger) { return function lockFactory(id : string, opts : any) : ISettable { logger.info('Adding Z-Way lock: ' + id); const controller : ZwayController = controllers[opts.controller]; return new ZwayLock(id, controller, opts.deviceId); } } export function createSensorFactory(controllers: Dict<ZwayController>, logger: ILogger, type: 'motion' | 'temperature' | 'humidity' | 'luminescence') { return function sensorFactory(id : string, opts : any) : ISensor { logger.info(`Adding Z-Way ${type} sensor: ${id}`); const controller : ZwayController = controllers[opts.controller]; switch (type) { case 'motion': return new ZwayMotionSensor(id, controller, opts); case 'temperature': return new ZwayTemperatureSensor(id, controller, opts); case 'humidity': return new ZwayHumiditySensor(id, controller, opts); case 'luminescence': return new ZwayLuminescenceSensor(id, controller, opts); default: throw new Error(`Could not create ${type} sensor: ${id}`) } } }