mirror of
https://github.com/Koenkk/zigbee2mqtt.git
synced 2026-07-04 11:01:40 +00:00
30227a13ae
* chore: Implement prettier * Run prettier * fix lint * process feedback * process feedback
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
/* eslint-disable brace-style */
|
|
import * as zhc from 'zigbee-herdsman-converters';
|
|
|
|
import * as settings from '../util/settings';
|
|
|
|
export default class Group {
|
|
public zh: zh.Group;
|
|
private resolveDevice: (ieeeAddr: string) => Device;
|
|
|
|
get ID(): number {
|
|
return this.zh.groupID;
|
|
}
|
|
get options(): GroupOptions {
|
|
return {...settings.getGroup(this.ID)};
|
|
}
|
|
get name(): string {
|
|
return this.options?.friendly_name || this.ID.toString();
|
|
}
|
|
|
|
constructor(group: zh.Group, resolveDevice: (ieeeAddr: string) => Device) {
|
|
this.zh = group;
|
|
this.resolveDevice = resolveDevice;
|
|
}
|
|
|
|
hasMember(device: Device): boolean {
|
|
return !!device.zh.endpoints.find((e) => this.zh.members.includes(e));
|
|
}
|
|
|
|
membersDevices(): Device[] {
|
|
return this.zh.members.map((e) => this.resolveDevice(e.getDevice().ieeeAddr)).filter((d) => d);
|
|
}
|
|
|
|
membersDefinitions(): zhc.Definition[] {
|
|
return this.membersDevices()
|
|
.map((d) => d.definition)
|
|
.filter((d) => d);
|
|
}
|
|
|
|
isDevice(): this is Device {
|
|
return false;
|
|
}
|
|
isGroup(): this is Group {
|
|
return true;
|
|
}
|
|
}
|