0
import BAC0

bacnet = BAC0.connect()

my_obj_list = [('file', 1),
             ('analogInput', 1002),
             ('analogInput', 1),
             ('analogInput', 1006),
             ('analogInput', 1011),
             ('analogInput', 1010),
             ('analogInput', 1001)]


# # Provide it as an argument
fx = BAC0.device('16102:19', 1610219, bacnet, object_list = my_obj_list)
p=fx.points
for point in p:
    print(point)

代码按预期返回点值,但抛出异常。无法弄清楚我做错了什么。

错误

2018-11-26 17:45:51,864 - 信息 | 开始 BAC0 版本 0.99.944 (Lite) 2018-11-26 17:45:51,908 - INFO | 使用 ip : 192.168.0.16 2018-11-26 17:45:51,909 - INFO | 正在启动应用程序... 2018-11-26 17:45:51,910 - INFO | BAC0 开始于 2018 年 11 月 26 日 17:45:51,910 - 信息 | 注册为 Simple BACnet/IP App 2018-11-26 17:45:54,529 - INFO | 将设备状态更改为 DeviceDisconnected'> 2018-11-26 17:45:54,726 - INFO | 将设备状态更改为 RPDeviceConnected'> 2018-11-26 17:45:54,928 - 信息 | 设备 1610219:[device1610219] 找到...建筑点列表 2018-11-26 17:45:57,674 - INFO | 准备好!2018-11-26 17:45:57,676 - 信息 | 轮询开始,每 10 秒读取一次值线程 rpm_poll 中的异常:回溯(最近一次调用):文件“C:

Device1610219/AI_2:2.30 NOUNITS DEVICE1610219/ZONE_TEMP:45.00 DEGREESFAHRENHEIT DEVICE1610219/AI_6:75.00 DEGREESFAHRENHEIT DEVICE1610219/AI_11/AI_11:1.1.00 65535 DEVICE11610219/AI_IT 1610219/AI_ITERERESFHEREF

进程以退出代码 0 结束

4

1 回答 1

0

我已经进行了一些测试,试图复制你的错误,我认为你可能正在与一个奇怪的设备作斗争。

使用完全相同的脚本,我成功阅读了所有要点。

如果我可以建议,使用默认的“轮询”参数声明您的设备将确保每 10 秒读取一次所有点。

使用点将在调用时强制读取点(一个接一个),这会减慢进程。为此,我会使用point.lastValue

当设备在内部轮询其点列表时,它将使用 ReadPropertyMultiple 来同时读取一堆点和属性。它更有效。

像(玩格式......)这样的东西:

import BAC0

bacnet = BAC0.lite()

# # Provide it as an argument
fx = BAC0.device('2:5', 5, bacnet)

for name in fx.points_name:
    if fx[name].units:
        val = '{:>10.2f}'.format(fx[name].lastValue)
        units = fx[name].units
    else:
        units = '({})'.format(fx[name].properties.units_state)
        val = '{:>10}'.format(fx[name].lastValue)
    print('{:<20} : {} {:<10}'.format(fx[name].properties.name, val, units))

(结果摘录)

2018-12-06 20:43:17,167 - INFO    | Starting BAC0 version 0.99.944 (Lite)
2018-12-06 20:43:17,283 - INFO    | Using ip : 192.168.210.11
2018-12-06 20:43:17,285 - INFO    | Starting app...
2018-12-06 20:43:17,292 - INFO    | BAC0 started
2018-12-06 20:43:17,292 - INFO    | Registered as Simple BACnet/IP App
2018-12-06 20:43:19,295 - INFO    | Changing device state to DeviceDisconnected'>
2018-12-06 20:43:20,156 - INFO    | Changing device state to RPMDeviceConnected'>
2018-12-06 20:43:20,716 - INFO    | Device 5:[FX14 0005] found... building points 
2018-12-06 20:43:32,691 - INFO    | Ready!
2018-12-06 20:43:32,696 - INFO    | Polling started, values read every 10 seconds
nvoAI3               :      -1.17 degreesCelsius
nvoAI4               :      42.33 percent
nvoAI6               :     354.00 kilopascals
nvoAI5               :       1.85 percent
nvoAI1               :      22.05 degreesCelsius
nvoAI2               :      20.84 degreesCelsius
[...]
nciOvrdDO5.State     :          1 (['AUTO', 'ON', 'OFF'])
nvoAlarmPompe        :          1 (['OFF', 'ON'])
nvoAlrmGravePompe    :          1 (['OFF', 'ON'])
nvoTempOccup         :          1 (['OFF', 'ON'])
nciModeOperation     :          2 (['ARRET', 'AUTO', 'CHAUFF', 'REFROID', 'ELECTR'])
nciOvrdDO2.State     :          1 (['AUTO', 'ON', 'OFF'])
nciOvrdDO3.State     :          1 (['AUTO', 'ON', 'OFF'])
nciOvrdDO4.State     :          1 (['AUTO', 'ON', 'OFF'])
nciOvrdDO1.State     :          1 (['AUTO', 'ON', 'OFF'])
nciModeDeshum        :          1 (['Aucune', 'Ventilation', 'Rechauff'])
nciOvrdAO1.State     :          2 (['AUTO', 'MAN', '100', '0'])
nciOvrdAO2.State     :          1 (['AUTO', 'MAN', '100', '0'])
nvoDI7               :   inactive (('Off', 'On'))
nvoDI8               :   inactive (('Off', 'On'))
nvoDI10              :   inactive (('Off', 'On'))
nvoDI9               :   inactive (('Off', 'On'))
nvoDI6               :   inactive (('Off', 'On'))
nvoDI4               :   inactive (('Off', 'On'))

如果您不断遇到问题,请在此处发布:https ://github.com/ChristianTremblay/BAC0/issues

于 2018-12-07T01:47:11.483 回答