UNPKG

@pmouli/isy-matter-server

Version:

Service to expose an ISY device as a Matter Border router

58 lines 2.15 kB
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