UNPKG

node-bacnet

Version:

The BACnet protocol library written in pure JavaScript.

3,134 lines (951 loc) 104 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>bacnet - Documentation</title> <script src="scripts/prettify/prettify.js"></script> <script src="scripts/prettify/lang-css.js"></script> <link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat:400,700"> <link type="text/css" rel="stylesheet" href="styles/prettify.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc.css"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <input type="checkbox" id="nav-trigger" class="nav-trigger" /> <label for="nav-trigger" class="navicon-button x"> <div class="navicon"></div> </label> <label for="nav-trigger" class="overlay"></label> <nav > <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="bacnet.html">bacnet</a><ul class='methods'><li data-type='method'><a href="bacnet.html#.close">close</a></li><li data-type='method'><a href="bacnet.html#.confirmedCOVNotification">confirmedCOVNotification</a></li><li data-type='method'><a href="bacnet.html#.deviceCommunicationControl">deviceCommunicationControl</a></li><li data-type='method'><a href="bacnet.html#.iAmResponse">iAmResponse</a></li><li data-type='method'><a href="bacnet.html#.readProperty">readProperty</a></li><li data-type='method'><a href="bacnet.html#.readPropertyMultiple">readPropertyMultiple</a></li><li data-type='method'><a href="bacnet.html#.readPropertyResponse">readPropertyResponse</a></li><li data-type='method'><a href="bacnet.html#.reinitializeDevice">reinitializeDevice</a></li><li data-type='method'><a href="bacnet.html#.resultResponse">resultResponse</a></li><li data-type='method'><a href="bacnet.html#.timeSync">timeSync</a></li><li data-type='method'><a href="bacnet.html#.timeSyncUTC">timeSyncUTC</a></li><li data-type='method'><a href="bacnet.html#.unconfirmedCOVNotification">unconfirmedCOVNotification</a></li><li data-type='method'><a href="bacnet.html#.whoIs">whoIs</a></li><li data-type='method'><a href="bacnet.html#.writeProperty">writeProperty</a></li><li data-type='method'><a href="bacnet.html#.writePropertyMultiple">writePropertyMultiple</a></li></ul></li><li><a href="Client.html">Client</a><ul class='methods'><li data-type='method'><a href="Client.html#.createBitstring">createBitstring</a></li><li data-type='method'><a href="Client.html#acknowledgeAlarm">acknowledgeAlarm</a></li><li data-type='method'><a href="Client.html#addListElement">addListElement</a></li><li data-type='method'><a href="Client.html#confirmedEventNotification">confirmedEventNotification</a></li><li data-type='method'><a href="Client.html#confirmedPrivateTransfer">confirmedPrivateTransfer</a></li><li data-type='method'><a href="Client.html#createObject">createObject</a></li><li data-type='method'><a href="Client.html#deleteObject">deleteObject</a></li><li data-type='method'><a href="Client.html#errorResponse">errorResponse</a></li><li data-type='method'><a href="Client.html#getAlarmSummary">getAlarmSummary</a></li><li data-type='method'><a href="Client.html#getEnrollmentSummary">getEnrollmentSummary</a></li><li data-type='method'><a href="Client.html#getEventInformation">getEventInformation</a></li><li data-type='method'><a href="Client.html#iHaveResponse">iHaveResponse</a></li><li data-type='method'><a href="Client.html#readFile">readFile</a></li><li data-type='method'><a href="Client.html#readRange">readRange</a></li><li data-type='method'><a href="Client.html#removeListElement">removeListElement</a></li><li data-type='method'><a href="Client.html#sendBvlc">sendBvlc</a></li><li data-type='method'><a href="Client.html#simpleAckResponse">simpleAckResponse</a></li><li data-type='method'><a href="Client.html#subscribeCov">subscribeCov</a></li><li data-type='method'><a href="Client.html#subscribeProperty">subscribeProperty</a></li><li data-type='method'><a href="Client.html#unconfirmedEventNotification">unconfirmedEventNotification</a></li><li data-type='method'><a href="Client.html#unconfirmedPrivateTransfer">unconfirmedPrivateTransfer</a></li><li data-type='method'><a href="Client.html#writeFile">writeFile</a></li></ul></li></ul><h3>Events</h3><ul><li><a href="bacnet.html#.event:error">error</a></li><li><a href="bacnet.html#.event:iAm">iAm</a></li><li><a href="bacnet.html#.event:timeSync">timeSync</a></li><li><a href="bacnet.html#.event:whoIs">whoIs</a></li></ul><h3>Global</h3><ul><li><a href="global.html#ApplicationTag">ApplicationTag</a></li><li><a href="global.html#EnableDisable">EnableDisable</a></li><li><a href="global.html#MaxApduLengthAccepted">MaxApduLengthAccepted</a></li><li><a href="global.html#MaxSegmentsAccepted">MaxSegmentsAccepted</a></li><li><a href="global.html#ReinitializedState">ReinitializedState</a></li><li><a href="global.html#usc">usc</a></li></ul> </nav> <div id="main"> <h1 class="page-title">bacnet</h1> <section> <header> <h2> bacnet </h2> </header> <article> <div class="container-overview"> <h4 class="name" id="bacnet"><span class="type-signature"></span>new bacnet<span class="signature">()</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="client.js.html">client.js</a>, <a href="client.js.html#line64">line 64</a> </li></ul></dd> </dl> <div class="description"> To be able to communicate to BACNET devices, you have to initialize a new bacnet instance. </div> <h5>Example</h5> <pre class="prettyprint"><code>const bacnet = require('node-bacnet'); const client = new bacnet({ port: 47809, // Use BAC1 as communication port interface: '192.168.251.10', // Listen on a specific interface broadcastAddress: '192.168.251.255', // Use the subnet broadcast address apduTimeout: 6000 // Wait twice as long for response });</code></pre> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th>Default</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>this._settings</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="default"> </td> <td class="description last">The options object used for parameterizing the bacnet.</td> </tr> <tr> <td class="name"><code>options.port</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="default"> <code>47808</code> </td> <td class="description last">BACNET communication port for listening and sending.</td> </tr> <tr> <td class="name"><code>options.interface</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="default"> </td> <td class="description last">Specific BACNET communication interface if different from primary one.</td> </tr> <tr> <td class="name"><code>options.broadcastAddress</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="default"> <code>255.255.255.255</code> </td> <td class="description last">The address used for broadcast messages.</td> </tr> <tr> <td class="name"><code>options.apduTimeout</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="default"> <code>3000</code> </td> <td class="description last">The timeout in milliseconds until a transaction should be interpreted as error.</td> </tr> </tbody> </table> </div> <h3 class="subsection-title">Methods</h3> <h4 class="name" id=".close"><span class="type-signature">(static) </span>close<span class="signature">()</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="client.js.html">client.js</a>, <a href="client.js.html#line1639">line 1639</a> </li></ul></dd> </dl> <div class="description"> Unloads the current bacnet instance and closes the underlying UDP socket. </div> <h5>Example</h5> <pre class="prettyprint"><code>const bacnet = require('node-bacnet'); const client = new bacnet(); client.close();</code></pre> <h4 class="name" id=".confirmedCOVNotification"><span class="type-signature">(static) </span>confirmedCOVNotification<span class="signature">(receiver, monitoredObject, subscribeId, initiatingDeviceId, lifetime, values, options<span class="signature-attributes">opt</span>, next)</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="client.js.html">client.js</a>, <a href="client.js.html#line839">line 839</a> </li></ul></dd> </dl> <div class="description"> The confirmedCOVNotification command is used to push notifications to other systems that have registered with us via a subscribeCOV message. </div> <h5>Example</h5> <pre class="prettyprint"><code>const bacnet = require('node-bacnet'); const client = new bacnet(); const settings = {deviceId: 123}; // our BACnet device // Items saved from subscribeCOV message const monitoredObject = {type: 1, instance: 1}; const subscriberProcessId = 123; client.confirmedCOVNotification( '192.168.1.43', monitoredObject, subscriberProcessId, settings.deviceId, 30, // should be lifetime of subscription really [ { property: { id: bacnet.enum.PropertyIdentifier.PRESENT_VALUE }, value: [ {value: 123, type: bacnet.enum.ApplicationTag.REAL}, ], }, ], (err) => { console.log('error: ', err); } );</code></pre> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>receiver</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="attributes"> </td> <td class="description last">IP address of the target device.</td> </tr> <tr> <td class="name"><code>monitoredObject</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="attributes"> </td> <td class="description last">The object being monitored, from subscribeCOV. <h6>Properties</h6> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>type</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="description last">Object type.</td> </tr> <tr> <td class="name"><code>instance</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="description last">Object instance.</td> </tr> </tbody> </table> </td> </tr> <tr> <td class="name"><code>subscribeId</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> </td> <td class="description last">Subscriber ID from subscribeCOV,</td> </tr> <tr> <td class="name"><code>initiatingDeviceId</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> </td> <td class="description last">Our BACnet device ID.</td> </tr> <tr> <td class="name"><code>lifetime</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> </td> <td class="description last">Number of seconds left until the subscription expires.</td> </tr> <tr> <td class="name"><code>values</code></td> <td class="type"> <span class="param-type">array</span> </td> <td class="attributes"> </td> <td class="description last">values for the monitored object. See example.</td> </tr> <tr> <td class="name"><code>options</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last"> <h6>Properties</h6> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>maxSegments</code></td> <td class="type"> <span class="param-type"><a href="global.html#MaxSegmentsAccepted">MaxSegmentsAccepted</a></span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The maximimal allowed number of segments.</td> </tr> <tr> <td class="name"><code>maxApdu</code></td> <td class="type"> <span class="param-type"><a href="global.html#MaxApduLengthAccepted">MaxApduLengthAccepted</a></span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The maximal allowed APDU size.</td> </tr> <tr> <td class="name"><code>invokeId</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The invoke ID of the confirmed service telegram.</td> </tr> </tbody> </table> </td> </tr> <tr> <td class="name"><code>next</code></td> <td class="type"> <span class="param-type">function</span> </td> <td class="attributes"> </td> <td class="description last">The callback containing an error, in case of a failure and value object in case of success.</td> </tr> </tbody> </table> <h4 class="name" id=".deviceCommunicationControl"><span class="type-signature">(static) </span>deviceCommunicationControl<span class="signature">(receiver, timeDuration, enableDisable, options<span class="signature-attributes">opt</span>, next)</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="client.js.html">client.js</a>, <a href="client.js.html#line906">line 906</a> </li></ul></dd> </dl> <div class="description"> The deviceCommunicationControl command enables or disables network communication of the target device. </div> <h5>Example</h5> <pre class="prettyprint"><code>const bacnet = require('node-bacnet'); const client = new bacnet(); client.deviceCommunicationControl('192.168.1.43', 0, bacnet.enum.EnableDisable.DISABLE, (err) => { console.log('error: ', err); });</code></pre> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>receiver</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="attributes"> </td> <td class="description last">IP address of the target device.</td> </tr> <tr> <td class="name"><code>timeDuration</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> </td> <td class="description last">The time to hold the network communication state in seconds. 0 for infinite.</td> </tr> <tr> <td class="name"><code>enableDisable</code></td> <td class="type"> <span class="param-type"><a href="global.html#EnableDisable">EnableDisable</a></span> </td> <td class="attributes"> </td> <td class="description last">The network communication state to set.</td> </tr> <tr> <td class="name"><code>options</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last"> <h6>Properties</h6> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>maxSegments</code></td> <td class="type"> <span class="param-type"><a href="global.html#MaxSegmentsAccepted">MaxSegmentsAccepted</a></span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The maximimal allowed number of segments.</td> </tr> <tr> <td class="name"><code>maxApdu</code></td> <td class="type"> <span class="param-type"><a href="global.html#MaxApduLengthAccepted">MaxApduLengthAccepted</a></span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The maximal allowed APDU size.</td> </tr> <tr> <td class="name"><code>invokeId</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The invoke ID of the confirmed service telegram.</td> </tr> <tr> <td class="name"><code>password</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The optional password used to set the network communication state.</td> </tr> </tbody> </table> </td> </tr> <tr> <td class="name"><code>next</code></td> <td class="type"> <span class="param-type">function</span> </td> <td class="attributes"> </td> <td class="description last">The callback containing an error, in case of a failure and value object in case of success.</td> </tr> </tbody> </table> <h4 class="name" id=".iAmResponse"><span class="type-signature">(static) </span>iAmResponse<span class="signature">(receiver, deviceId, segmentation, vendorId)</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="client.js.html">client.js</a>, <a href="client.js.html#line1535">line 1535</a> </li></ul></dd> </dl> <div class="description"> The iAmResponse command is sent as a reply to a whoIs request. </div> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>receiver</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">address to send packet to, null for local broadcast.</td> </tr> <tr> <td class="name"><code>deviceId</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="description last">Our device ID.</td> </tr> <tr> <td class="name"><code>segmentation</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="description last">an enum.Segmentation value.</td> </tr> <tr> <td class="name"><code>vendorId</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="description last">The numeric ID assigned to the organisation providing this application.</td> </tr> </tbody> </table> <h4 class="name" id=".readProperty"><span class="type-signature">(static) </span>readProperty<span class="signature">(receiver, objectId, propertyId, options<span class="signature-attributes">opt</span>, next)</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="client.js.html">client.js</a>, <a href="client.js.html#line642">line 642</a> </li></ul></dd> </dl> <div class="description"> The readProperty command reads a single property of an object from a device. </div> <h5>Example</h5> <pre class="prettyprint"><code>const bacnet = require('node-bacnet'); const client = new bacnet(); client.readProperty('192.168.1.43', {type: 8, instance: 44301}, 28, (err, value) => { console.log('value: ', value); });</code></pre> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>receiver</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="attributes"> </td> <td class="description last">IP address of the target device.</td> </tr> <tr> <td class="name"><code>objectId</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="attributes"> </td> <td class="description last">The BACNET object ID to read. <h6>Properties</h6> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>type</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="description last">The BACNET object type to read.</td> </tr> <tr> <td class="name"><code>instance</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="description last">The BACNET object instance to read.</td> </tr> </tbody> </table> </td> </tr> <tr> <td class="name"><code>propertyId</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> </td> <td class="description last">The BACNET property id in the specified object to read.</td> </tr> <tr> <td class="name"><code>options</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last"> <h6>Properties</h6> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>maxSegments</code></td> <td class="type"> <span class="param-type"><a href="global.html#MaxSegmentsAccepted">MaxSegmentsAccepted</a></span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The maximimal allowed number of segments.</td> </tr> <tr> <td class="name"><code>maxApdu</code></td> <td class="type"> <span class="param-type"><a href="global.html#MaxApduLengthAccepted">MaxApduLengthAccepted</a></span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The maximal allowed APDU size.</td> </tr> <tr> <td class="name"><code>invokeId</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The invoke ID of the confirmed service telegram.</td> </tr> <tr> <td class="name"><code>arrayIndex</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The array index of the property to be read.</td> </tr> </tbody> </table> </td> </tr> <tr> <td class="name"><code>next</code></td> <td class="type"> <span class="param-type">function</span> </td> <td class="attributes"> </td> <td class="description last">The callback containing an error, in case of a failure and value object in case of success.</td> </tr> </tbody> </table> <h4 class="name" id=".readPropertyMultiple"><span class="type-signature">(static) </span>readPropertyMultiple<span class="signature">(receiver, propertiesArray, options<span class="signature-attributes">opt</span>, next)</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="client.js.html">client.js</a>, <a href="client.js.html#line737">line 737</a> </li></ul></dd> </dl> <div class="description"> The readPropertyMultiple command reads multiple properties in multiple objects from a device. </div> <h5>Example</h5> <pre class="prettyprint"><code>const bacnet = require('node-bacnet'); const client = new bacnet(); const requestArray = [ {objectId: {type: 8, instance: 4194303}, properties: [{id: 8}]} ]; client.readPropertyMultiple('192.168.1.43', requestArray, (err, value) => { console.log('value: ', value); });</code></pre> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>receiver</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="attributes"> </td> <td class="description last">IP address of the target device.</td> </tr> <tr> <td class="name"><code>propertiesArray</code></td> <td class="type"> <span class="param-type">Array.&lt;object></span> </td> <td class="attributes"> </td> <td class="description last">List of object and property specifications to be read. <h6>Properties</h6> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>objectId</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="description last">Specifies which object to read. <h6>Properties</h6> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>type</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="description last">The BACNET object type to read.</td> </tr> <tr> <td class="name"><code>instance</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="description last">The BACNET object instance to read.</td> </tr> </tbody> </table> </td> </tr> <tr> <td class="name"><code>properties</code></td> <td class="type"> <span class="param-type">Array.&lt;object></span> </td> <td class="description last">List of properties to be read. <h6>Properties</h6> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>id</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="description last">The BACNET property id in the specified object to read. Also supports 8 for all properties.</td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> <tr> <td class="name"><code>options</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last"> <h6>Properties</h6> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>maxSegments</code></td> <td class="type"> <span class="param-type"><a href="global.html#MaxSegmentsAccepted">MaxSegmentsAccepted</a></span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The maximimal allowed number of segments.</td> </tr> <tr> <td class="name"><code>maxApdu</code></td> <td class="type"> <span class="param-type"><a href="global.html#MaxApduLengthAccepted">MaxApduLengthAccepted</a></span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The maximal allowed APDU size.</td> </tr> <tr> <td class="name"><code>invokeId</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">The invoke ID of the confirmed service telegram.</td> </tr> </tbody> </table> </td> </tr> <tr> <td class="name"><code>next</code></td> <td class="type"> <span class="param-type">function</span> </td> <td class="attributes"> </td> <td class="description last">The callback containing an error, in case of a failure and value object in case of success.</td> </tr> </tbody> </table> <h4 class="name" id=".readPropertyResponse"><span class="type-signature">(static) </span>readPropertyResponse<span class="signature">(receiver, invokeId, objectId, property, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="client.js.html">client.js</a>, <a href="client.js.html#line1509">line 1509</a> </li></ul></dd> </dl> <div class="description"> The readPropertyResponse call sends a response with information about one of our properties. </div> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>receiver</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="attributes"> </td> <td class="description last">IP address of the target device.</td> </tr> <tr> <td class="name"><code>invokeId</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> </td> <td class="description last">ID of the original readProperty request.</td> </tr> <tr> <td class="name"><code>objectId</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="attributes"> </td> <td class="description last">objectId from the original request,</td> </tr> <tr> <td class="name"><code>property</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="attributes"> </td> <td class="description last">property being read, taken from the original request.</td> </tr> <tr> <td class="name"><code>options</code></td> <td class="type"> <span class="param-type">object</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">varying behaviour for special circumstances <h6>Properties</h6> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>forwardedFrom</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">If functioning as a BBMD, the IP address this message originally came from.</td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <h4 class="name" id=".reinitiali