node-red-contrib-bacnet
Version:
The BACnet toolbox package for Node-RED from the P4NR B2B Community.
3 lines (2 loc) • 5.19 kB
JavaScript
;function _createForOfIteratorHelper(e,r){var t,a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=_unsupportedIterableToArray(e))||r&&e&&"number"==typeof e.length)return a&&(e=a),t=0,{s:r=function(){},n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:r};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,o=!0,i=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return o=e.done,e},e:function(e){i=!0,n=e},f:function(){try{o||null==a.return||a.return()}finally{if(i)throw n}}}}function _unsupportedIterableToArray(e,r){if(e){if("string"==typeof e)return _arrayLikeToArray(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Map"===(t="Object"===t&&e.constructor?e.constructor.name:t)||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(e,r):void 0}}function _arrayLikeToArray(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,a=new Array(r);t<r;t++)a[t]=e[t];return a}module.exports=function(r){var o=require("./core/bacnet-core"),s=require("node-bacnet"),l=require("underscore");r.nodes.registerType("BACnet-Write",function(e){r.nodes.createNode(this,e),this.name=e.name,this.objectType=parseInt(e.objectType),this.valueTag=parseInt(e.valueTag),this.valueValue=e.valueValue,this.propertyId=parseInt(e.propertyId),this.priority=parseInt(e.priority),this.multipleWrite=e.multipleWrite,this.instance=r.nodes.getNode(e.instance),this.objectInstance=parseInt(this.instance.instanceAddress)||0,this.device=r.nodes.getNode(e.device),this.deviceIPAddress=this.device.deviceAddress||"127.0.0.1",this.connector=r.nodes.getNode(e.server);var n=this;n.status({fill:"green",shape:"dot",text:"active"}),n.on("input",function(t){if(n.connector){n.priority=n.priority<1?16:n.priority,n.priority=16<n.priority?16:n.priority;var e=t.payload.options||{priority:n.priority};if(n.multipleWrite)if(o.internalDebugLog("Multiple Write"),t.payload.values&&t.payload.values[0].values){t.payload.values.forEach(function(e){e.objectId||(e.objectId={type:n.objectType,instance:parseInt(n.objectInstance)})});try{o.internalDebugLog("writeProperty node.deviceIPAddress: "+n.deviceIPAddress),o.internalDebugLog("writeProperty msg.payload.deviceIPAddress: "+t.payload.deviceIPAddress),o.internalDebugLog("writePropertyMultiple msg.payload.values: "+JSON.stringify(t.payload.values))}catch(e){o.internalDebugLog("writePropertyMultiple error: "+e)}n.connector.client.writePropertyMultiple(t.payload.deviceIPAddress||n.deviceIPAddress,t.payload.values,e,function(e,r){e?(e=o.translateErrorMessage(e),o.internalDebugLog(e),n.error(e,t)):(t.input=t.payload,t.payload=r,n.send(t))})}else n.error(new Error("msg.payload.values missing or invalid array for multiple write"),t);else if(o.internalDebugLog("Write"),t.payload.values&&!t.payload.values[0])n.error(new Error("invalid msg.payload.values array for write"),t);else{var r={type:parseInt(n.objectType),instance:parseInt(n.objectInstance)},a=[{type:parseInt(n.valueTag),value:n.valueValue}];try{o.internalDebugLog("writeProperty node.deviceIPAddress: "+n.deviceIPAddress),o.internalDebugLog("writeProperty msg.payload.deviceIPAddress: "+t.payload.deviceIPAddress),o.internalDebugLog("writeProperty default objectId: "+JSON.stringify(r)),o.internalDebugLog("writeProperty default values: "+JSON.stringify(a)),o.internalDebugLog("writeProperty msg.payload.values: "+JSON.stringify(t.payload.values)),o.internalDebugLog("writeProperty node.propertyId: "+n.propertyId),o.internalDebugLog("writeProperty msg.payload.propertyId: "+t.payload.propertyId)}catch(e){o.internalDebugLog("writeProperty error: "+e)}n.connector.client.writeProperty(t.payload.deviceIPAddress||n.deviceIPAddress,t.payload.objectId||r,parseInt(t.payload.propertyId)||parseInt(n.propertyId)||85,t.payload.values||a,e,function(e,r){e?(e=o.translateErrorMessage(e),o.internalDebugLog(e),n.error(e,t)):(t.input=t.payload,t.payload=r||"write done",n.send(t))})}}else n.error(new Error("Client Not Ready To Write"),t)})}),r.httpAdmin.get("/bacnet/ApplicationTags",r.auth.needsPermission("bacnet.CMD.write"),function(e,r){var t,a,n=s.enum.ApplicationTag,o=[],i=_createForOfIteratorHelper(l.toArray(l.invert(n)));try{for(i.s();!(a=i.n()).done;)t=a.value,o.push({typeValue:parseInt(n[t])||0,label:t})}catch(e){i.e(e)}finally{i.f()}r.json(o)}),r.httpAdmin.get("/bacnet/PropertyIds",r.auth.needsPermission("bacnet.CMD.write"),function(e,r){var t,a,n=s.enum.PropertyIdentifier,o=[],i=_createForOfIteratorHelper(l.toArray(l.invert(n)));try{for(i.s();!(a=i.n()).done;)t=a.value,o.push({typeValue:parseInt(n[t])||0,label:t})}catch(e){i.e(e)}finally{i.f()}r.json(o)}),r.httpAdmin.get("/bacnet/ObjectTypes",r.auth.needsPermission("bacnet.CMD.write"),function(e,r){var t,a,n=s.enum.ObjectType,o=[],i=_createForOfIteratorHelper(l.toArray(l.invert(n)));try{for(i.s();!(a=i.n()).done;)t=a.value,o.push({typeValue:parseInt(n[t])||0,label:t})}catch(e){i.e(e)}finally{i.f()}r.json(o)})};
//# sourceMappingURL=maps/bacnet-write.js.map