UNPKG

node-red-contrib-knx-ultimate

Version:

Control your KNX and KNX Secure intallation via Node-Red! A bunch of KNX nodes, with integrated Philips HUE control and ETS group address importer. Easy to use and highly configurable.

88 lines (79 loc) 3.06 kB
module.exports.ToBoolean = function ToBoolean(value, _configTranslationNode) { let res = false; let decimal = /^\s*[+-]{0,1}\s*([\d]+(\.[\d]*)*)\s*$/; if (typeof value === "boolean") { return value; } else if (typeof value === "string") { try { let translationTable = []; if (_configTranslationNode === null) { translationTable = DEFAULTTRANSLATIONINPUT.split("\n"); } else { translationTable = _configTranslationNode.commandText.split("\n"); } for (let index = 0; index < translationTable.length; index++) { let inputPayloadToBeTranslated = translationTable[index].split(":")[0]; let outputBoolean = Boolean(translationTable[index].split(":")[1]); if ( value.toLowerCase() === inputPayloadToBeTranslated.toLowerCase() && inputPayloadToBeTranslated.toLowerCase() !== "" ) { return translationTable[index].split(":")[1] === "true" ? true : false; } } } catch (error) { console.log("Boolean-Logic-Ultimate:utils:toBoolean: " + error.message); } } else if (typeof value === "number") { // Is it formated as a decimal number? if (decimal.test(value)) { res = parseFloat(value) != 0; } else { res = value.toLowerCase() === "true"; } return res; } }; module.exports.fetchFromObject = function fetchFromObject( _msg, _payloadPropName ) { // The output cannot be an oblect. In case, return undefined. var _index = _payloadPropName.indexOf("."); if (_index > -1) { return fetchFromObject( _msg[_payloadPropName.substring(0, _index)], _payloadPropName.substr(_index + 1) ); } if (typeof _msg[_payloadPropName] === "object") return undefined; return _msg[_payloadPropName]; }; const DEFAULTTRANSLATIONINPUT = "on:true\noff:false\nactive:true\ninactive:false\nopen:true\nclosed:false\nclose:false\n1:true\n0:false\ntrue:true\nfalse:false\nhome:true\nnot_home:false\nnormal:false\nviolated:true"; // 14/08/2019 Endpoint for retrieving the ethernet interfaces module.exports.DiscoverKNXGateways = async function DiscoverKNXGateways() { if (bDiscoverKNXGatewaysRunning) return; bDiscoverKNXGatewaysRunning = true; const KNXClient = require('knxultimate'); try { if (this.aDiscoveredknxGateways === undefined) { this.aDiscoveredknxGateways = await KNXClient.KNXClient.discover(6000); bDiscoverKNXGatewaysRunning = false; return this.aDiscoveredknxGateways; } else { bDiscoverKNXGatewaysRunning = false; return this.aDiscoveredknxGateways; } } catch (error) { bDiscoverKNXGatewaysRunning = false; this.aDiscoveredknxGateways = []; return this.aDiscoveredknxGateways; } } let bDiscoverKNXGatewaysRunning = false; module.exports.aDiscoveredknxGateways; module.exports.getDiscoveredknxGateways = function () { return module.exports.aDiscoveredknxGateways; }; module.exports.setDiscoveredknxGateways = function (value) { module.exports.aDiscoveredknxGateways = value; };