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,使用起来一言难尽

相关推荐
ZC跨境爬虫8 小时前
Scrapy分布式爬虫(单机模拟多节点):豆瓣Top250项目设置与数据流全解析
分布式·爬虫·python·scrapy
sg_knight8 小时前
设计模式实战:命令模式(Command)
python·设计模式·命令模式
石榴树下的七彩鱼8 小时前
图片修复 API 接入实战:网站如何自动去除图片水印(Python / PHP / C# 示例)
图像处理·后端·python·c#·php·api·图片去水印
Polar__Star9 小时前
C#怎么操作Chart图表控件 C#如何用WinForms Chart控件绑定数据绘制统计图表【控件】
jvm·数据库·python
2401_897190559 小时前
CSS如何制作数字滚动效果_利用transform位移数字
jvm·数据库·python
2301_8135995510 小时前
HTML图片怎么用UnoCSS对齐_UnoCSS原子化CSS图片对齐实战
jvm·数据库·python
m0_3776182310 小时前
c++怎么在不加载整个大文件的情况下获取其SHA256校验值【进阶】
jvm·数据库·python
LN花开富贵10 小时前
【ROS】鱼香ROS2学习笔记二
linux·笔记·python·学习·嵌入式
qq_1898070310 小时前
CSS如何实现纯CSS树状目录结构_利用-checked与递归思维构建交互节点
jvm·数据库·python
Micr06710 小时前
利用Werkzeug-Debug实现本地权限提升
python·web安全·网络安全