@pmouli/isy-matter-server
Version:
Service to expose an ISY device as a Matter Border router
218 lines (213 loc) • 6.53 kB
text/typescript
/* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT DIRECTLY. */
import type { IntRange } from 'type-fest';
import { Driver } from '../../../Definitions/Global/Drivers.js';
import { Family, UnitOfMeasure } from '../../../Definitions/Global/index.js';
import { Insteon } from '../../../Definitions/index.js';
import { ISY } from '../../../ISY.js';
import { ISYNode } from '../../../ISYNode.js';
import type { NodeInfo } from '../../../Model/NodeInfo.js';
import { ISYDeviceNode } from '../../ISYDeviceNode.js';
import { NodeFactory } from '../../NodeFactory.js';
import { Base } from '../index.js';
type Commands = DimmerMotorSwitch.Commands.Type;
type Drivers = DimmerMotorSwitch.Drivers.Type;
//@ts-ignore
export class DimmerMotorSwitch extends Base<Drivers, Commands> implements DimmerMotorSwitch.Interface {
public override readonly commands = {
DON: this.on,
DOF: this.off,
DFOF: this.fastOff,
DFON: this.fastOn,
FDUP: this.fadeUp,
FDDOWN: this.fadeDown,
FDSTOP: this.fadeStop,
QUERY: this.query,
BEEP: this.beep,
OL: this.updateOnLevel,
DUR: this.updateMaxDuration,
BL: this.backlight,
WDU: this.writeChanges
};
static override nodeDefId = 'DimmerMotorSwitch';
static override implements = ['DimmerMotorSwitch', 'RelaySwitchOnlyPlusQuery', 'RelaySwitchOnlyPlusQuery_ADV', 'RelaySwitchOnly', 'RelaySwitchOnly_ADV', 'RemoteLinc2', 'RemoteLinc2_ADV', 'IRLincTx', 'SirenAlert', 'SirenArm'];
declare readonly nodeDefId: 'DimmerMotorSwitch' | 'DimmerMotorSwitch_ADV';
constructor(isy: ISY, nodeInfo: NodeInfo<Family.Insteon>) {
super(isy, nodeInfo);
this.drivers.ST = Driver.create('ST', this, nodeInfo.state['ST'], { uom: UnitOfMeasure.Percent, label: 'Status', name: 'status' });
this.drivers.OL = Driver.create('OL', this, nodeInfo.state['OL'], { uom: UnitOfMeasure.Percent, label: 'On Level', name: 'onLevel' });
this.drivers.DUR = Driver.create('DUR', this, nodeInfo.state['DUR'], { uom: UnitOfMeasure.DurationInSeconds, label: 'Max Duration', name: 'maxDuration' });
this.drivers.ERR = Driver.create('ERR', this, nodeInfo.state['ERR'], { uom: UnitOfMeasure.Index, label: 'Responding', name: 'responding' });
}
async on(value?: number) {
return this.sendCommand('DON', [value, UnitOfMeasure.Percent]);
}
async off() {
return this.sendCommand('DOF');
}
async fastOff() {
return this.sendCommand('DFOF');
}
async fastOn() {
return this.sendCommand('DFON');
}
async fadeUp() {
return this.sendCommand('FDUP');
}
async fadeDown() {
return this.sendCommand('FDDOWN');
}
async fadeStop() {
return this.sendCommand('FDSTOP');
}
async query() {
return this.sendCommand('QUERY');
}
async beep(value?: number) {
return this.sendCommand('BEEP', [value, UnitOfMeasure.LevelFrom0To255]);
}
async updateOnLevel(value: number) {
return this.sendCommand('OL', [value, UnitOfMeasure.Percent]);
}
async updateMaxDuration(value: number) {
return this.sendCommand('DUR', [value, UnitOfMeasure.DurationInSeconds]);
}
async backlight(value: number) {
return this.sendCommand('BL', [value, UnitOfMeasure.Percent]);
}
async writeChanges() {
return this.sendCommand('WDU');
}
public get status(): IntRange<0, 100> {
return this.drivers.ST?.value;
}
public get onLevel(): IntRange<0, 100> {
return this.drivers.OL?.value;
}
public get maxDuration(): IntRange<0, 546.2> {
return this.drivers.DUR?.value;
}
public get responding(): Insteon.Error {
return this.drivers.ERR?.value;
}
}
NodeFactory.register(DimmerMotorSwitch);
NodeFactory.register(DimmerMotorSwitch, 'DimmerMotorSwitch_ADV');
export namespace DimmerMotorSwitch {
export interface Interface extends Omit<InstanceType<typeof DimmerMotorSwitch>, keyof ISYDeviceNode<any, any, any, any>> {}
export function is(node: ISYNode<any, any, any, any>): node is DimmerMotorSwitch {
return ['DimmerMotorSwitch', 'DimmerMotorSwitch_ADV'].includes(node.nodeDefId);
}
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is DimmerMotorSwitch {
return ['DimmerMotorSwitch', 'DimmerMotorSwitch_ADV'].includes(node.nodeDefId);
}
export function create(isy: ISY, nodeInfo: NodeInfo<Family.Insteon>) {
return new DimmerMotorSwitch(isy, nodeInfo);
}
export const Node = DimmerMotorSwitch;
export const Class = DimmerMotorSwitch;
export namespace Commands {
export type Type = {
DON: ((value?: number) => Promise<boolean>) & {
label: 'On';
name: 'on';
};
DOF: (() => Promise<boolean>) & {
label: 'Off';
name: 'off';
};
DFOF: (() => Promise<boolean>) & {
label: 'Fast Off';
name: 'fastOff';
};
DFON: (() => Promise<boolean>) & {
label: 'Fast On';
name: 'fastOn';
};
FDUP: (() => Promise<boolean>) & {
label: 'Fade Up';
name: 'fadeUp';
};
FDDOWN: (() => Promise<boolean>) & {
label: 'Fade Down';
name: 'fadeDown';
};
FDSTOP: (() => Promise<boolean>) & {
label: 'Fade Stop';
name: 'fadeStop';
};
QUERY: (() => Promise<boolean>) & {
label: 'Query';
name: 'query';
};
BEEP: ((value?: number) => Promise<boolean>) & {
label: 'Beep';
name: 'beep';
};
OL: ((value: number) => Promise<boolean>) & {
label: 'On Level';
name: 'updateOnLevel';
};
DUR: ((value: number) => Promise<boolean>) & {
label: 'Max Duration';
name: 'updateMaxDuration';
};
BL: ((value: number) => Promise<boolean>) & {
label: 'Backlight';
name: 'backlight';
};
WDU: (() => Promise<boolean>) & {
label: 'Write Changes';
name: 'writeChanges';
};
};
}
export enum Commands {
on = 'DON',
off = 'DOF',
fastOff = 'DFOF',
fastOn = 'DFON',
fadeUp = 'FDUP',
fadeDown = 'FDDOWN',
fadeStop = 'FDSTOP',
query = 'QUERY',
beep = 'BEEP',
updateOnLevel = 'OL',
updateMaxDuration = 'DUR',
backlight = 'BL',
writeChanges = 'WDU'
}
export namespace Drivers {
export type Type = {
ST: {
uom: UnitOfMeasure.Percent;
value: IntRange<0, 100>;
label: 'Status';
name: 'status';
};
OL: {
uom: UnitOfMeasure.Percent;
value: IntRange<0, 100>;
label: 'On Level';
name: 'onLevel';
};
DUR: {
uom: UnitOfMeasure.DurationInSeconds;
value: IntRange<0, 546.2>;
label: 'Max Duration';
name: 'maxDuration';
};
ERR: {
uom: UnitOfMeasure.Index;
value: Insteon.Error;
label: 'Responding';
name: 'responding';
};
};
}
export enum Drivers {
status = 'ST',
onLevel = 'OL',
maxDuration = 'DUR',
responding = 'ERR'
}
}