Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bacnet device object and properties are not able to access but able to discover the devices #141

Open
iliyas18 opened this issue Aug 29, 2019 · 7 comments

Comments

@iliyas18
Copy link

I am using Yabe bacnet simulator which has both device simulator and explorer. But if I use the bacstack library , I am not able to use the device objects and proeprties. It is discovering the device but not able to load object and properties for usage.

Simulator which I used https://sourceforge.net/projects/yetanotherbacnetexplorer.

But in Yabe device explorer it is working.
image

Simulator snap:
image

The error which I am getting:

err:  Error: ERR_TIMEOUT
    at Timeout._onTimeout (C:\Users\EpsilonPrime\node_modules\bacstack\lib\client.js:75:16)
    at ontimeout (timers.js:436:11)
    at tryOnTimeout (timers.js:300:5)
    at listOnTimeout (timers.js:263:5)
    at Timer.processTimers (timers.js:223:10)

The nodejs code which I have used:

const bacnet = require('bacstack');

// Initialize BACStack
const client = new bacnet({apduTimeout: 3000});

console.log(client);

//console.log(client.EventEmitter)


// Discover Devices
client.on('iAm', (device) => {
  console.log('address----------> ', device.address);
  console.log('deviceId---------->  ', device.deviceId);
  console.log('maxApdu---------->  ', device.maxApdu);
  console.log('segmentation---------->  ', device.segmentation);
  console.log('vendorId---------->  ', device.vendorId);
  console.log('object type---------->  ', device.vendorId);
  console.log('vendorId---------->  ', device.vendorId);
});


client.whoIs();

// Read Device Object
client.readProperty('192.168.14.87', {type: 8, instance: 2195695}, 28, (err, value) => {
  console.log('value: ', value);
  console.log('err: ', err);
});

In the below image it is displaying that it is discovering the devices but it is not able to find objects.
98a2e5579a291af57edf750e1b8f9a52d52d427f

CqnnB

@Apollon77
Copy link

Please check the updated fork on https://github.com/BiancoRoyal/node-bacstack ... I was able successfully to communicate with the Room Simulator ... I only had trouble when it was running on the same device.

@jaydenpung
Copy link

jaydenpung commented Aug 23, 2021

I am having the same issue here. I am able to detect the bacnet device with BACnet Explorer:
image

There is also whois response:
image

However I am getting timeout. How should I troubleshoot this?

UPDATE: Turns out if I close the BACnet Explorer, the library works fine. I guess BACnet only support one poller?

@jscott3201
Copy link

BACnet is a long running UDP process in most stacks that binds to the adapter. Only one service can bind to 47808 at a time. Linux you can use ifconfig and setup a temporary adapter with IP/SUBNET.

192.168.1.1:47808 -> 192.168.1.2:47807 would be a valid path but not using the same source and destination IP. Basically mimicking the loop back behavior of the local machine at that point.

@jaydenpung
Copy link

Does this mean if I have two separate machine polling from a bacnet device, it will still work?

@jscott3201
Copy link

Yes you can multiple machines target a device or poll each other. You should always be able to WhoIs your virtual instances as they are required by spec to have a few default fields like Vendor ID. If you want to simulate two devices on a machine you need to setup separate Ethernet interfaces. Something like "sudo ifconfig eth0:1 192.168.1.1/24" would work in Linux. Each instance of the service has to bind to the UDP port.

@jaydenpung
Copy link

This is amazing info, really saved me a lot of time, thank you Scott!

@Ashok0111
Copy link

Hey guys , i too have the same issue, but I am running the nodejs code on Mac, and running the YABE on a virtual machine , on the same network. i am able to run whois. but unable to read values. can you help me on this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants