首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从bacnet设备读取点值错误

从bacnet设备读取点值错误
EN

Stack Overflow用户
提问于 2018-11-27 01:17:27
回答 1查看 871关注 0票数 0
代码语言:javascript
复制
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 - INFO 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 - INFO注册为简单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 - INFO设备1610219:device1610219构建点列表2018-11-26 17:45:57,674 - INFO准备就绪!2018-11-26 17:45:57,676 - INFO轮询开始,值每10秒读取一次异常线程rpm_poll:回溯(最近一次调用):文件"C:\Program (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\threading.py",第916行,在文件"C:_website\BacTest\venv\lib\site-packages\BAC0\tasks\TaskManager.py",第45行,在运行self.process()文件"C:_website\BacTest\venv\lib\site-packages\BAC0\tasks\TaskManager.py",第52行,在process self.task() File "C:_website\BacTest\venv\lib\site-packages\BAC0\tasks\Poll.py",第77行中,在任务self.device.read_multiple(list(self.device.points_name),points_per_request=25)文件"C:_website\BacTest\venv\lib\site-packages\BAC0\core\devices\mixins\read_mixin.py",第452行中,在read_multiple self.read_single(each,points_per_request=1,discover_request=discover_request)文件"C:_website\BacTest\venv\lib\site-packages\BAC0\core\devices\mixins\read_mixin.py",第459行中,在"C:_website\BacTest\venv\lib\site-packages\BAC0\core\io\Read.py",read_single返回self.properties.network.read(请求)文件的第87行,在read args_split,arr_index=arr_index,vendor_id=vendor_id,bacoid=bacoid中,文件self.properties.network.read行310,在build_rp_request addr,obj_type,obj_inst中,prop_id = args:4 ValueError:没有足够的值来解包(预期4,got 2)

设备1610219/ai_2:2时30分noUnits设备1610219/zone_temp: 45.00 degreesFahrenheit设备1610219/ai_6: 75.00 degreesFahrenheit设备1610219/ai_11: 1.00 65535设备1610219/ai_10:-53.30 degreesFahrenheit device1610219/ai_1 : 0.00 noUnits

进程已完成,退出代码为0

EN

回答 1

Stack Overflow用户

发布于 2018-12-07 01:47:11

我做了一些尝试复制你的错误的测试,我认为你可能在和一个奇怪的设备战斗。

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

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

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

当设备在内部轮询它的点列表时,它将使用一个ReadPropertyMultiple,它将同时读取大量的点和属性。它更有效率。

比如(玩格式.):

代码语言:javascript
复制
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))

(结果摘录)

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53491437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档