0

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 ?

Community
  • 1
  • 1
Priyank Kapadia
  • 203
  • 4
  • 14

2 Answers2

1

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.

Kyle Monson
  • 471
  • 1
  • 3
  • 6
  • I understood that the remote station address has to be used as the bacnet device address and it was not the router address from Kyle's response and it solved my problem with device communication. Thanks! – Priyank Kapadia Jul 11 '16 at 08:02
  • Just for the benefit of others; a missing (or corrupt) point name might otherwise be due to the controller been faulty or maybe even a different character-set been configured for it. – DennisVM-D2i Sep 30 '22 at 10:00
0

Thanks Kyle. Our hardware configuration uses a BACnet router (ID 570009) and a VAV controller (ID 990037). With grab config, we've got to have both register points files, with the designated Volttron Point Names.

These are the grab_config out-test columns for the VAV controller csv file (As Priyank mentioned we got around 75 register points but we are showing two points that we are trying to modify flow_sp_1 and dmpr_pos_1):

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

We are not sure if this is a grab_config issue. These are the original point list of the device.

Name              Value    Type  ObjectID DeviceID     Object Name  COVIncrement
Airflow Setpoint 2000.0cfm  BAV   AV:5    DEV:990037    flow_sp_1   1                   
Damper Position 100.0 %Open BAV   AV:8    DEV:990037    dmpr_pos_1  2

Seems Volttron(or grab_config) uses the Object Name.

We would appreciate if you could guide us to find the mistake. We also modified the config file using the BACnet router ID instead of the VAV device IS. But we still get the keyError

**test_bacnet1.config**
{ "driver_config": {"device_address": "192.168.1.9", "device_id":"570009" },...