Bacnet 设备未识别 pointName
Bacnet device not identifying pointName
下面是我对 volttron 的配置。我有一个 bacnet 兼容的 VAV,我在上面使用 grab_bacnet 生成了配置 csv。问题是 bacnet 代理以及 bacnet 驱动程序中的 scrape all 方法无法从设备中获取任何内容。
还要注意的是,当我启动bacnet proxy agent和master driver agent时,volttron.log中没有显示错误。
但是我尝试了如下所示的测试代理,我得到一个 keyError,它告诉我请求发送到错误的设备或者 bacnet 根本无法识别设备。
**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
这是当 testagent 不是 运行 时我得到的错误。
ERROR: Failed to scrape campus/building/bacnet1:
RuntimeError('Device communication aborted: noResponse')
其次,我通过执行器在我的 TestAgent 上进行如下调用:
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)
volttron 给我错误:
RemoteError:volttron.platform.jsonrpc.RemoteError("KeyError('dmpr_pos_1')")
编辑 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
之后我 运行 grab_bacnet 像这样:
python scripts/bacnet/grab_bacnet_config.py 990037 --ini scripts/bacnet/BACpypes.ini --out-file bac3.csv
其中一个csv文件中的值是这样的:
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
谁能指导我解决这个问题?
这里好像有两个问题。
首先看起来设备根本没有响应。这可能是由于配置问题 test_bacnet1.config。
您最初用来获取配置的命令行是什么?
其次,您在代理中使用的点名称与 CSV 文件中的点名称似乎不匹配。
请 post 您的 CSV 文件的内容,以便我们可以看到可用的点名称。
编辑
(实际上我们早些时候在 phone 上解决了这个问题,但出于 post 的考虑,我会在此处添加它。)
问题是您没有提供正确的设备 ID 和地址组合。地址始终是实际设备的地址,而不是可能恰好位于它前面的路由器的地址。设备 ID 始终是实际的设备 ID。
根据 bacnet_scan 的输出,您将使用“5701:37”作为地址,990037 作为设备 ID。
关键错误是错误设置的副作用。
最近添加了设备 ID 作为一项要求,以确保在大多数情况下 BACnet 代理可以建立到设备的路由。
谢谢凯尔。我们的硬件配置使用 BACnet 路由器 (ID 570009) 和 VAV 控制器 (ID 990037)。使用抓取配置,我们必须拥有两个注册点文件,以及指定的 Volttron 点名称。
这些是 VAV 控制器 csv 文件的 grab_config 测试列(正如 Priyank 提到的那样,我们得到了大约 75 个寄存器点,但我们显示了我们正在尝试修改的两个点 flow_sp_1和 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
我们不确定这是否是一个 grab_config 问题。这些是设备的原始点列表。
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
似乎 Volttron(或 grab_config)使用了对象名称。
如果您能指导我们找出错误,我们将不胜感激。
我们还使用 BACnet 路由器 ID 而不是 VAV 设备 IS 修改了配置文件。
但是我们仍然得到 keyError
**test_bacnet1.config**<br>
{
"driver_config": {"device_address": "192.168.1.9",
"device_id":"570009"},...
下面是我对 volttron 的配置。我有一个 bacnet 兼容的 VAV,我在上面使用 grab_bacnet 生成了配置 csv。问题是 bacnet 代理以及 bacnet 驱动程序中的 scrape all 方法无法从设备中获取任何内容。
还要注意的是,当我启动bacnet proxy agent和master driver agent时,volttron.log中没有显示错误。 但是我尝试了如下所示的测试代理,我得到一个 keyError,它告诉我请求发送到错误的设备或者 bacnet 根本无法识别设备。
**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
这是当 testagent 不是 运行 时我得到的错误。
ERROR: Failed to scrape campus/building/bacnet1:
RuntimeError('Device communication aborted: noResponse')
其次,我通过执行器在我的 TestAgent 上进行如下调用:
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)
volttron 给我错误: RemoteError:volttron.platform.jsonrpc.RemoteError("KeyError('dmpr_pos_1')")
编辑 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
之后我 运行 grab_bacnet 像这样:
python scripts/bacnet/grab_bacnet_config.py 990037 --ini scripts/bacnet/BACpypes.ini --out-file bac3.csv
其中一个csv文件中的值是这样的:
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
谁能指导我解决这个问题?
这里好像有两个问题。
首先看起来设备根本没有响应。这可能是由于配置问题 test_bacnet1.config。
您最初用来获取配置的命令行是什么?
其次,您在代理中使用的点名称与 CSV 文件中的点名称似乎不匹配。
请 post 您的 CSV 文件的内容,以便我们可以看到可用的点名称。
编辑
(实际上我们早些时候在 phone 上解决了这个问题,但出于 post 的考虑,我会在此处添加它。)
问题是您没有提供正确的设备 ID 和地址组合。地址始终是实际设备的地址,而不是可能恰好位于它前面的路由器的地址。设备 ID 始终是实际的设备 ID。
根据 bacnet_scan 的输出,您将使用“5701:37”作为地址,990037 作为设备 ID。
关键错误是错误设置的副作用。
最近添加了设备 ID 作为一项要求,以确保在大多数情况下 BACnet 代理可以建立到设备的路由。
谢谢凯尔。我们的硬件配置使用 BACnet 路由器 (ID 570009) 和 VAV 控制器 (ID 990037)。使用抓取配置,我们必须拥有两个注册点文件,以及指定的 Volttron 点名称。
这些是 VAV 控制器 csv 文件的 grab_config 测试列(正如 Priyank 提到的那样,我们得到了大约 75 个寄存器点,但我们显示了我们正在尝试修改的两个点 flow_sp_1和 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
我们不确定这是否是一个 grab_config 问题。这些是设备的原始点列表。
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
似乎 Volttron(或 grab_config)使用了对象名称。
如果您能指导我们找出错误,我们将不胜感激。 我们还使用 BACnet 路由器 ID 而不是 VAV 设备 IS 修改了配置文件。 但是我们仍然得到 keyError
**test_bacnet1.config**<br>
{
"driver_config": {"device_address": "192.168.1.9",
"device_id":"570009"},...