@pmouli/isy-matter-server
Version:
Service to expose an ISY device as a Matter Border router
58 lines • 2.15 kB
JavaScript
import { Family } from '../Definitions/index.js';
// #endregion Interfaces (7)
// #region Functions (3)
export function isFamily(nodeInfo, family) {
return nodeInfo.family ?? 1 === family;
}
export function parseDeviceInfo(nodeInfo) {
const type = nodeInfo.type === undefined || nodeInfo.type === '0.0.0.0' ? nodeInfo.hint : nodeInfo.type;
const family = (nodeInfo.family ?? nodeInfo.family == 0) ? Family.Insteon : nodeInfo.family;
if (isFamily(nodeInfo, Family.Insteon)) {
const s = type.split('.');
return { category: Number(s[0]), model: Number(s[1]), firmwareVersion: Number(Number(s[2]).toString(16)), firmwareRevision: Number(Number(s[3]).toString(16)) };
}
else {
const s = type.split('.');
return { domain: Number(s[0]), category: Number(s[1]), subcategory: Number(s[1]), model: Number(s[2]) };
}
}
export function cleanNodeInfo(nodeInfo) {
if (isDynamic(nodeInfo)) {
nodeInfo.nodeTypeId = `${nodeInfo.typeInfo.t.find((p) => p.id == 'ioxType').val}`;
}
else if (isZWave(nodeInfo)) {
nodeInfo.nodeTypeId = nodeInfo.sgid;
}
if (!nodeInfo.property) {
nodeInfo.property = [];
}
nodeInfo.property = Array.isArray(nodeInfo.property) ? nodeInfo.property : [nodeInfo.property];
nodeInfo.state = nodeInfo.property.reduce((acc, p) => {
if (p && p?.id) {
p.name = p.name == '' ? undefined : p.name;
acc[p.id] = p;
}
return acc;
}, {});
if (!nodeInfo.family || nodeInfo.family == -1) {
nodeInfo.family = Family.Insteon;
}
return nodeInfo;
}
export function isPlugin(nodeInfo) {
if (typeof nodeInfo.family == 'object') {
return true;
}
return nodeInfo.family === Family.Poly;
}
export function isDynamic(nodeInfo) {
return [Family.ZMatter, Family.ZigBee].includes(nodeInfo.family);
}
export function isZWave(nodeInfo) {
return nodeInfo.family == Family.ZWave;
}
export function isStatic(nodeInfo) {
return isDynamic(nodeInfo) || isZWave(nodeInfo) ? false : true;
}
// #endregion Functions (3)
//# sourceMappingURL=NodeInfo.js.map