Break out central DeviceRegistry for all Plejd data
This commit is contained in:
parent
f2aa7b84c0
commit
4f51063c41
1 changed files with 73 additions and 0 deletions
73
plejd/DeviceRegistry.js
Normal file
73
plejd/DeviceRegistry.js
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
class DeviceRegistry {
|
||||||
|
apiSite;
|
||||||
|
cryptoKey = null;
|
||||||
|
|
||||||
|
deviceIdsByRoom = {};
|
||||||
|
deviceIdsBySerial = {};
|
||||||
|
|
||||||
|
// Dictionaries of [id]: device per type
|
||||||
|
plejdDevices = {};
|
||||||
|
roomDevices = {};
|
||||||
|
sceneDevices = {};
|
||||||
|
|
||||||
|
get allDevices() {
|
||||||
|
return [
|
||||||
|
...Object.values(this.plejdDevices),
|
||||||
|
...Object.values(this.roomDevices),
|
||||||
|
...Object.values(this.sceneDevices),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
addPlejdDevice(device) {
|
||||||
|
this.plejdDevices[device.id] = device;
|
||||||
|
this.deviceIdsBySerial[device.serialNumber] = device.id;
|
||||||
|
if (!this.deviceIdsByRoom[device.roomId]) {
|
||||||
|
this.deviceIdsByRoom[device.roomId] = [];
|
||||||
|
}
|
||||||
|
this.deviceIdsByRoom[device.roomId].push(device.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
addScene(scene) {
|
||||||
|
this.plejdDevices[scene.id] = scene;
|
||||||
|
}
|
||||||
|
|
||||||
|
setApiSite(siteDetails) {
|
||||||
|
this.apiSite = siteDetails;
|
||||||
|
}
|
||||||
|
|
||||||
|
clearPlejdDevices() {
|
||||||
|
this.plejdDevices = {};
|
||||||
|
this.deviceIdsByRoom = {};
|
||||||
|
this.deviceIdsBySerial = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
addRoomDevice(device) {
|
||||||
|
this.roomDevices[device.id] = device;
|
||||||
|
}
|
||||||
|
|
||||||
|
clearRoomDevices() {
|
||||||
|
this.roomDevices = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
clearSceneDevices() {
|
||||||
|
this.sceneDevices = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
getDevice(deviceId) {
|
||||||
|
return this.plejdDevices[deviceId];
|
||||||
|
}
|
||||||
|
|
||||||
|
getDeviceBySerialNumber(serialNumber) {
|
||||||
|
return this.plejdDevices[this.deviceIdsBySerial[serialNumber]];
|
||||||
|
}
|
||||||
|
|
||||||
|
getDeviceName(deviceId) {
|
||||||
|
return (this.plejdDevices[deviceId] || {}).name;
|
||||||
|
}
|
||||||
|
|
||||||
|
getSceneName(sceneId) {
|
||||||
|
return (this.sceneDevices[sceneId] || {}).name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = DeviceRegistry;
|
||||||
Loading…
Add table
Add a link
Reference in a new issue