So Below are my configurations for volttron. I have a bacnet compatible VAV attached on which I generated config csv using grab_bacnet. The problem is that the bacnet proxy and as well as scrape all method in bacnet driver is unable to get anything from the device.
This is also to note that there is no error shown in volttron.log when i start bacnet proxy agent and master driver agent. But i try the test agent as shown below I get a keyError which tells me that either the request is going to a wrong device or bacnet is not able to identify the device at all.
**Configurations**
*Master Driver*
{
"agentid": "master_driver",
"driver_config_list: ["absolute/path/to/test_bacnet1.config"]
}
**test_bacnet1.config**
{
"driver_config": {"device_address": "192.168.1.9",
"device_id":"990037" },
"campus": "campus",
"building": "building",
"unit": "bacnet1",
"driver_type": "bacnet",
"registry_config":"absolute/path/to/csv.csv",
"interval": 60,
"timezone": "UTC"
}
*BACNET PROXY CONFIGURATIONS*
"device_address": "192.168.1.5/24" #MY Laptop IP address
This is the error which I get when the testagent is not running.
ERROR: Failed to scrape campus/building/bacnet1:
RuntimeError('Device communication aborted: noResponse')
Secondly on my TestAgent through the actuator i make a call like this:
topic2 = 'campus/building/bacnet1/dmp_pos_1'
PLATFORM_ACTUATOR = 'platform.actuator'
PLATFORM_BACNET = 'platform.bacnet_proxy'
REQUEST_NEW_SCHEDULE = 'request_new_schedule'
@Core.periodic(3)
def publish_heartbeat(self):
_log.info('Agent Starting')
result = self.vip.rpc.call(
PLATFORM_ACTUATOR, # Target agent
'get_point', # Method
topic2 # point
).get(timeout=10)
_log.info('RESULT:'+str(result)
The volttron gives me error: RemoteError:volttron.platform.jsonrpc.RemoteError("KeyError('dmpr_pos_1')")
EDIT 1 python scripts/bacnet/bacnet_scan.py --ini scripts/bacnet/BACpypes.ini
Device Address = <Address 192.168.1.9>
Device Id = 570009
maxAPDULengthAccepted = 480
segmentationSupported = segmentedBoth
vendorID = 24
Device Address = <RemoteStation 5701:37>
Device Id = 990037
maxAPDULengthAccepted = 480
segmentationSupported = segmentedBoth
vendorID = 24
After that I ran the grab_bacnet like this:
python scripts/bacnet/grab_bacnet_config.py 990037 --ini scripts/bacnet/BACpypes.ini --out-file bac3.csv
In which one of the values is like this in csv file:
Reference Point Name Volttron Point Name Units Unit Details BACnet Object Type Property Writable Index Write Priority Notes
flow_sp_1 flow_sp_1 cubicFeetPerMinute analogValue presentValue FALSE 5 Airflow Setpoint
dmpr_pos_1 dmpr_pos_1 UNKNOWN UNIT ENUM VALUE: 4109 analogValue presentValue FALSE 8 Damper Position
Can anyone guide me on this problem ?
It looks like there is two problems here.
First it looks like the device is simply not responding. This can be due to a configuration issue test_bacnet1.config.
What was the command line you used to grab the configuration in the first place?
Second is that there appears to be a mismatch between the point name you've used in your agent and the name of the point in the in your CSV file.
Please post the guts of your CSV file so we can see the available point names.
EDIT
(We actually resolved this earlier on the phone but I'll add it here for posterity.)
The problem is that the you are not providing the correct combination of of device ID and address. The address is always the address of the actual device and not a router that might happen to be sitting in front of it. The device ID is always the actual device ID.
From the output of bacnet_scan you would use "5701:37" for the address and 990037 for the device ID.
The key error is a side effect of setting this up incorrectly.
The device ID was recently added as a requirement to ensure in most cases that the BACnet Proxy can establish a route to a device.