python基于BAC0库进行bacnet IP的读写

python基于BAC0库进行bacnet IP的读写

实现内容:基于BAC0库实现对一台虚拟bacnet设备的扫描、点位读取和点位数据写入。

开发环境

python3.9

pip下载BAC0库

功能实现

python 复制代码
    # 扫描设备
    myIPAddr = '192.168.90.81/24'
    bacnet = BAC0.lite(ip=myIPAddr)
    devices = bacnet.whois()
    print(devices)  # 打印出所有bacnet设备的MAC地址/IP地址和端口号

    # 遍历搜索结果,获取每个设备的IP地址
    # for device in devices:
    #     ip_address = device[0].split('/')[0]
    #     print(ip_address)

    # 读取数据:地址/数据类型/寄存器地址/要读的数据内容(转换为小驼峰)
    ip_addr = (devices[0])[0]
    data_name = bacnet.read(f'{ip_addr} analogInput 25 objectName')
    data_value = bacnet.read(f'{ip_addr} analogInput 25 presentValue')
    data_name1 = bacnet.read(f'{ip_addr} binaryInput 2 objectName')
    data_value1 = bacnet.read(f'{ip_addr} binaryInput 2 presentValue')
    print(data_name, data_value)
    print(data_name1, data_value1)

    # 写入数据
    bacnet.write(f'{ip_addr} analogInput 25 presentValue 45.0 - 1')
    bacnet.write(f'{ip_addr} binaryInput 4 presentValue active - 1')

注意:

1)对于数字量的写入,似乎只能通过active和inactive实现,尝试替换为1/0或者True/False都会报错;

2)代码中规定属性的名称按照小驼峰式命名规则(例:present-value属性,在代码中应写为presentValue)

3)lite参数中的IP表示运行代码的本机IP,并非是BACnet设备或BACnet服务器的IP。

此外,BAC0库似乎有很多未知的bug,使用起来一言难尽

相关推荐
知乎的哥廷根数学学派7 小时前
面向可信机械故障诊断的自适应置信度惩罚深度校准算法(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习·矩阵
且去填词8 小时前
DeepSeek :基于 Schema 推理与自愈机制的智能 ETL
数据仓库·人工智能·python·语言模型·etl·schema·deepseek
人工干智能8 小时前
OpenAI Assistants API 中 client.beta.threads.messages.create方法,兼谈一星*和两星**解包
python·llm
databook8 小时前
当条形图遇上极坐标:径向与圆形条形图的视觉革命
python·数据分析·数据可视化
阿部多瑞 ABU8 小时前
`chenmo` —— 可编程元叙事引擎 V2.3+
linux·人工智能·python·ai写作
acanab8 小时前
VScode python插件
ide·vscode·python
知乎的哥廷根数学学派9 小时前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
WangYaolove131410 小时前
Python基于大数据的电影市场预测分析(源码+文档)
python·django·毕业设计·源码
知乎的哥廷根数学学派10 小时前
基于自适应多尺度小波核编码与注意力增强的脉冲神经网络机械故障诊断(Pytorch)
人工智能·pytorch·python·深度学习·神经网络·机器学习
cnxy18811 小时前
Python爬虫进阶:反爬虫策略与Selenium自动化完整指南
爬虫·python·selenium