diff --git a/src/nodeClass.js b/src/nodeClass.js index 0e7c1cf..de160ee 100644 --- a/src/nodeClass.js +++ b/src/nodeClass.js @@ -81,11 +81,13 @@ class nodeClass { enabled: uiConfig.simulator }, functionality: { - positionVsParent: uiConfig.positionVsParent || 'atEquipment', // Default to 'atEquipment' if not specified + positionVsParent: uiConfig.positionVsParent,// Default to 'atEquipment' if not specified distance: uiConfig.hasDistance ? uiConfig.distance : undefined } }; + console.log("---================>>>>>Loaded config:", uiConfig.positionVsParent); + // Utility for formatting outputs this._output = new outputUtils(); } @@ -102,9 +104,11 @@ class nodeClass { * Bind Measurement events to Node-RED status updates. Using internal emitter. --> REMOVE LATER WE NEED ONLY COMPLETE CHILDS AND THEN CHECK FOR UPDATES */ _bindEvents() { + this.source.emitter.on('mAbs', (val) => { this.node.status({ fill: 'green', shape: 'dot', text: `${val} ${this.config.general.unit}` }); }); + } /** diff --git a/src/specificClass.js b/src/specificClass.js index 8546f1e..44809c8 100644 --- a/src/specificClass.js +++ b/src/specificClass.js @@ -497,8 +497,18 @@ class Measurement { updateOutputAbs(val) { + // Constrain first, then check for changes + let constrainedVal = val; + + if (val < this.config.scaling.absMin || val > this.config.scaling.absMax) { + this.logger.warn(`Output value=${val} is outside of ABS range. Constraining.`); + constrainedVal = this.constrain(val, this.config.scaling.absMin, this.config.scaling.absMax); + } + + const roundedVal = Math.round(constrainedVal * 100) / 100; + //only update on change - if (val != this.outputAbs) { + if (roundedVal != this.outputAbs) { // Constrain value within process range if (val < this.config.scaling.absMin || val > this.config.scaling.absMax) {