pythonbacnetvolttron

Bacnet device not identifying pointName


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 ?


Solution

  • 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.