我有一个用于暖通空调控制的BACnet系统,其中我使用VOLTTRON执行器代理在BACnet中将@ priority 10写为值2,这很好用。
result = self.vip.rpc.call('platform.actuator', 'set_multiple_points', self.core.identity, set_multi_topic_values_master).get(timeout=20)
_log.debug(f'*** [Setter Agent INFO] *** - set_multiple_points ON ALL VAVs WRITE SUCCESS!')
然后系统会休眠一段时间以进行测试:
_log.debug(f'*** [Setter Agent INFO] *** - SETTING UP GEVENT SLEEP!')
gevent.sleep(120)
_log.debug(f'*** [Setter Agent INFO] *** - GEVENT SLEEP DONE!')
在gevent睡眠之后,我遇到了一些关于还原点不工作的问题。下面的代码执行得很好,但使用BACnet扫描工具时,暖通空调控制上的优先级10值2仍然存在,就像还原点什么也不做一样。
for device in revert_topic_devices_jci:
response = self.vip.rpc.call('platform.actuator', 'revert_point', self.core.identity, topic_jci, self.jci_setpoint_topic).get(timeout=20)
_log.debug(f'*** [Setter Agent INFO] *** - REVERT POINTS ON {device} SUCCESS!')
_log.debug(f'*** [Setter Agent INFO] *** - REVERT POINTS JCI DONE DEAL SUCCESS!')
我注意到的一件事是,楼宇自动化将占用/未占用写入HVAC controls @ BACnet priority 12。它总是1表示占用或2表示空闲。
我尝试对VOLTTRON执行的操作是在优先级为10的BACnet中写入值2,然后在恢复时释放为空。这会不会被还原成什么都不做,因为也没有要还原的东西?我希望VOLTTRON可以编写@ BACnet priority 10,然后直接发布。在BACnet扫描工具上,我可以做同样的事情,写优先级为10,然后释放优先级为10的优先级10写null
我是否应该像建筑自动化系统一样在优先级12下编写代码,这样VOLTTRON就可以恢复到原来的状态,无论建筑自动化在做什么?
发布于 2021-06-11 06:59:11
我有几点看法:
总的来说,我建议调试在"revert_point“RPC调用中传递的主题。
发布于 2021-06-16 00:17:54
我很幸运能够使用set_multiple_points
将点恢复为None
如下所示:
self.jci_device_map = {
'VMA-2-6': '27',
'VMA-2-4': '29',
'VMA-2-7': '30',
'VMA-1-8': '6',
}
revert_multi_topic_values_master = []
set_multi_topic_values_master = []
for device in self.jci_device_map.values():
topic_jci = '/'.join([self.building_topic, device])
final_topic_jci = '/'.join([topic_jci, self.jci_setpoint_topic])
# BACnet enum point for VAV occ
# 1 == occ, 2 == unnoc
# create a (topic, value) tuple and add it to our topic values
set_multi_topic_values_master.append((final_topic_jci, self.unnoccupied_value)) # TO SET UNNOCUPIED
revert_multi_topic_values_master.append((final_topic_jci, None)) # TO SET FOR REVERT
result = self.vip.rpc.call('platform.actuator', 'set_multiple_points', self.core.identity, revert_multi_topic_values_master).get(timeout=20)
https://stackoverflow.com/questions/67874085
复制相似问题