niagara mysql_使用Python通过oBIX协议访问Niagara数据的示例

本文介绍了如何使用Python的oBIX库连接到Niagara系统,进行数据的读写和控制。首先在Niagara配置oBIX协议,创建用户和测试点。接着,通过pip安装oBIX库,展示读取、写入点值,获取点信息,读取历史和报警数据,以及监控点变化的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oBIX 全称是 Open Building Information Exchange,它是基于 RESTful Web Service 的接口的标准,用于构建控制系统。oBIX是在专为楼宇自动化设计的框架内,使用XML和URI在设备网络上读写数据的。

因项目需要使用 Python 对 Niagara 软件中的数据进行读写和控制,所以写了一个该协议的Python版本包,发布在这里:https://pypi.org/project/oBIX/

使用 pip 安装使用即可:

pip install oBIX

本文主要介绍使用 Python 通过 oBIX 协议对 Niagara 软件中的点进行读、写操作。

一、准备工作

1. 在 Niagara 软件中配置好 oBIX 协议,确保已经可以正常访问;

(1)Palette 搜 oBIX, 添加一个 ObixNetwork 到 Drivers中

(2)Palette 搜 baja, 将 AuthenticationSchemes/WebServicesSchemes/的 HTTPBasicScheme 拖拽到 Services/AuthenticationService/Authentication Schemes/

(3)UserServices 右键 View, AX User Manager下新建一个用户,配置如下:

* 用户名:oBIX

* 密码:oBIX.12345

* Authentication Schemes Name 选:HTTPBasicScheme

* Admin 权限

2. Niagara 中新建一个数值类型的可读写的点,命名为:temp1,完整路径是:/config/AHU/temp1/,后面以此为例进行访问

3. 安装python的oBIX包:pip install oBIX

二、快速开始

from oBIX.common import Point, DataType

from oBIX import Client

if __name__ == '__main__':

# ip, userName, password

# 可选项:

# port: 端口号,如:8080

# https: 是否使用 https,默认:True

client = Client("127.0.0.1", "oBIX", "oBIX.12345")

# 点的路径

point_path = "/config/AHU/temp1/"

# 读取一个点的值

point_value = client.read_point_value(point_path)

print("point value is {0}".format(point_value))

三、基本实例

3.1 读取点

# 点的路径

point_path = "/config/AHU/temp1/"

# 读取一个点的值

point_value = client.read_point_value(point_path)

print("point value is {0}".format(point_value))

# 读取一个点实例

# 然后就能获取到这个点所包含的常用属性

# 例如:name, val, status, display, href, in1, in2 ... in16, fallback, out

point_obj = client.read_point(point_path)

print("name is {0}".format(point_obj.name))

print("fallback is {0}".format(point_obj.fallback))

print("in10 is {0}".format(point_obj.in10))

# 也可以使用下面代码直接获取

point_in10_value = client.read_point_slot(point_path, "in10")

print("in10 is {0}".format(point_in10_value))

3.2 写入点

# 点的路径

point_path = "/config/AHU/temp1/"

# set 一个点的值

client.write_point(point_path, 15.2, DataType.real)

# set point auto

client.set_point_auto(point_path, DataType.real)

# override a point

client.override_point(point_path, 14, DataType.real)

# emergency override a point

client.emergency_override_point(point_path, 15, DataType.real)

# set a point emergency auto

client.set_point_emergency_auto(point_path, DataType.real)

四、高级应用

4.1 读取历史数据

# 起始时间

start_time = datetime.now(tz=timezone(timedelta(hours=8))) - timedelta(minutes=10)

# 结束时间

end_time = datetime.now(tz=timezone(timedelta(hours=8)))

# 读取该断时间内的历史数据

history = client.read_history("Station01", "OutDoorTemp", start_time, end_time)

# 取起始时间往后指定个数的历史数据

limit_num = 1

history = client.read_history("Station01", "OutDoorTemp", start_time=start_time, limit=limit_num)

4.2 读取报警数据

# 起始时间

start_time = datetime.now(tz=timezone(timedelta(hours=8))) - timedelta(minutes=10)

# 结束时间

end_time = datetime.now(tz=timezone(timedelta(hours=8)))

# 读取该段时间内的报警数据

alarms = client.read_alarms("Station01", "OutDoorTemp", start_time, end_time)

# 取起始时间往后指定个数的报警数据

limit_num = 1

alarms = client.read_alarms("Station01", "OutDoorTemp", start_time=start_time, limit=limit_num)

4.3 监控点的数据变化

监控点的数据变化时 oBIX 协议的一部分。添加想要监控的点,然后当 Niagara 中点的值发生变化后,会自动触发相应的函数。

from oBIX.common import Point, DataType

from oBIX import Client

def init_watch():

global client, point_path

# 添加监控

point_path_list = [point_path] # 这里可以是多个点

result = client.add_watch_points(point_path_list)

client.watch_changed_handler.on_change += on_watch_changed

# Niagara 里改点的值发生变化时,会自动触发改函数

def on_watch_changed(points: [Point]):

for point in points:

val = point.val

print(f"on_watch_changed: {val}")

if __name__ == '__main__':

# ip, userName, password

# 可选项:

# port: 端口号,如:8080

# https: 是否使用 https,默认:True

client = Client("127.0.0.1", "oBIX", "oBIX.12345")

# 点的路径

point_path = "/config/AHU/temp1/"

init_watch()

client.start_watch()

while True:

i = 0

4.4 导出所有点的信息

如果一个项目中有大量的目录和点,手动挨个去写比较麻烦,所以这里提供了一个导出点信息的函数。将点的信息保存文件后,再直接从文件中读取点的信息就会方便很多。

# 导出所有点的信息

export_result = client.export_points()

# folder_path [optional]: 想要导出的目录,如: "/config/xxx/",默认会导出所有点的信息

# export_file_name [optional]: 导出文件的名称,默认: "all_points.json"

# export_type [optional]:

# 0: JSON格式,嵌套格式并保留目录信息

# 1: JSON格式, 只保留点的信息,不保留目录信息

# 2: 字符串列表格式, 只输出点的路径信息

export_result = client.export_points(folder_path="/config/AHU/", export_file_name="output.json", export_type=1)

以上就是使用Python通过oBIX协议访问Niagara数据的示例的详细内容,更多关于Python通过oBIX协议访问Niagara数据的资料请关注脚本之家其它相关文章!

NiagaraAX开发者向导-docDeveloperPDF NiagaraAX-3.1 Devdloper Guide 中文版 目录结构: 目 录 目 录 ...............目 录 ......1 Niagara 概览 .................4 整体概要 ..................... 4 Niagara: ............ 4 背景....... 4 Java 4 混合集成系统 ..... 4 非专业程序员的编程 ........................... 4 嵌入式系统 ......... 4 分布式系统 ......... 5 组件软件 ..................... 5 结构 ........6 概述....... 6 程序(Programs) ................... 6 通讯协议(Protocols) ........................ 7 平台(Platforms) ................... 7 站点(Stations) ........ 7 守护进程(Daemon) ................... .. 8 工作台(Workbench) ................... . 8 FOX 通讯协议 ............. 9 接口软件栈(API Stack) .......................... 10 API 相关信息 ............. 11 概览..... 11 稳定性(Statbility) ................... ... 11 Baja 是什么 ............... 11 标准与实现 ............... 11 Javax.baja 与 com.tridium ........................ 12 模块(Modules) ....... 13 概览..... 13 版本号. 13 清单(Manifest) .... 13 对象模型 ..................... 16 Niagara 类型 ............. 16 BObject 16 BInterface .................. 16 BObject 语义 ............. 16 建立 BObject 对象 .... 17 组件模型(Component Model) .................. 18 介绍..... 18 插槽(Slots) ........... 18 NiagaraAX-3.1 开发者向导 作者:Tridium 公司 翻译:YC 2 / 52 BValue . 19 建立 BValue .............. 19 建立 Simple 子类对象(Building Simples) . 20 概览..... 20 示例..... 20 建立枚举类型(Buildiing Enums) .............. 23 概览..... 23 示例..... 23 建立 Complex 对象(Building Complexes) . 25 BStructs 与 BComponents ........................ 25 建立 BComplex 子类对象 .......................... 25 内省模式 ................... 25 静态属性(Property) ................... 26 规则 ................... 26 语义 ................... 26 示例 ................... 26 静态活动(Action) ...... 27 规则 ................... 27 语义 ................... 27 示例: ............... 28 静态主题(Topic) .. 28 规则 ................... 28 语义 ................... 28 示例: ............... 28 动态插槽 ................... 29 注册(Registry) ........ 30 概览..... 30 API ....... 30 代理(Agent) ......... 30 Defs ..... 31 Spy ....... 31 命名(Naming) ........ 32 概览..... 32 API ....... 32 分解(parsing) ....... 33 常见“格式”(Common Schemes) ......... 33 IP: ................... 33 Fox: ................. 33 Moudle: .......... 34 Slot: ................ 34 h: .................... 34 Service: ........... 34 Spy: ................. 34 Bql: ................. 34 NiagaraAX-3.1 开发者向导 作者:Tridium 公司 翻译:YC 3 / 52 链接(Links) ............. 35 概览..... 35 连接(Links) ........... 35 链接检查(Link Check) ............................ 35 直接链接和间接链接 ................... .. 36 链接激活(Activation) ............................ 36 执行(Execution) ..... 37 概览..... 37 运行状态(Running state) ...................... 37 链接(Links) ........... 37 定时器(Timer) ..... 37 异步动作(AsyncAction) ......................... 38 系统时间变更(System Clock Changes) . 38 站点(Station) ......... 39 概览..... 39 启动..... 39 远程编程(Remote Programming) .......... 40 概览..... 40 原理..... 41 代理对象的功能 ....... 41 代理对象的状态 ....... 42 订阅(Subscription)................... .. 43 Leasing(租赁) ....... 43 分组调用(Batch Call) ............................. 44 分组解析(Batch Resolve) .............. 44 分组订阅(Batch Subscribe) ........... 44 事务(Transactions) ........................ 44 调试(Debugging) . 45 工作台(Workbench) ................... .. 48 概览..... 48 布局(Layout) ........ 48 浏览器式的导航 ....... 49 WbPlugins ................. 49 WbView 类 ................ 49 WbFieldEditor 类 ...... 50 WbSideBar 类 ............ 51 WbTool 类 ................. 51 WbProfiles 类 ............ 51 ..........1 Niagara 概览 .................4 整体概要 ..................... 4 Niagara: ............ 4 背景....... 4 Java 4 混合集成系统 ..... 4 非专业程序员的编程 ........................... 4 嵌入式系统 ......... 4 分布式系统 ......... 5 组件软件 ..................... 5 结构 ........6 概述....... 6 程序(Programs) ................... 6 通讯协议(Protocols) ........................ 7 平台(Platforms) ................... 7 站点(Stations) ........ 7 守护进程(Daemon) ................... .. 8 工作台(Workbench) ................... . 8 FOX 通讯协议 ............. 9 接口软件栈(API Stack) .......................... 10 API 相关信息 ............. 11 概览..... 11 稳定性(Statbility) ................... ... 11 Baja 是什么 ............... 11 标准与实现 ............... 11 Javax.baja 与 com.tridium ........................ 12 模块(Modules) ....... 13 概览..... 13 版本号. 13 清单(Manifest) .... 13 对象模型 ..................... 16 Niagara 类型 ............. 16 BObject 16 BInterface .................. 16 BObject 语义 ............. 16 建立 BObject 对象 .... 17 组件模型(Component Model) .................. 18 介绍..... 18 插槽(Slots) ........... 18 NiagaraAX-3.1 开发者向导 作者:Tridium 公司 翻译:YC 2 / 52 BValue . 19 建立 BValue .............. 19 建立 Simple 子类对象(Building Simples) . 20 概览..... 20 示例..... 20 建立枚举类型(Buildiing Enums) .............. 23 概览..... 23 示例..... 23 建立 Complex 对象(Building Complexes) . 25 BStructs 与 BComponents ........................ 25 建立 BComplex 子类对象 .......................... 25 内省模式 ................... 25 静态属性(Property) ................... 26 规则 ................... 26 语义 ................... 26 示例 ................... 26 静态活动(Action) ................... ... 27 规则 ................... 27 语义 ................... 27 示例: ............... 28 静态主题(Topic) .. 28 规则 ................... 28 语义 ................... 28 示例: ............... 28 动态插槽 ................... 29 注册(Registry) ........ 30 概览..... 30 API ....... 30 代理(Agent) ......... 30 Defs ..... 31 Spy ....... 31 命名(Naming) ........ 32 概览..... 32 API ....... 32 分解(parsing) ....... 33 常见“格式”(Common Schemes) ......... 33 IP: ................... 33 Fox: ................. 33 Moudle: .......... 34 Slot: ................ 34 h: .................... 34 Service: ........... 34 Spy: ................. 34 Bql: ................. 34 NiagaraAX-3.1 开发者向导 作者:Tridium 公司 翻译:YC 3 / 52 链接(Links) ............. 35 概览..... 35 连接(Links) ........... 35 链接检查(Link Check) ............................ 35 直接链接和间接链接 ................... .. 36 链接激活(Activation) ............................ 36 执行(Execution) ..... 37 概览..... 37 运行状态(Running state) ...................... 37 链接(Links) ........... 37 定时器(Timer) ..... 37 异步动作(AsyncAction) ......................... 38 系统时间变更(System Clock Changes) . 38 站点(Station) ......... 39 概览..... 39 启动..... 39 远程编程(Remote Programming) .......... 40 概览..... 40 原理..... 41 代理对象的功能 ....... 41 代理对象的状态 ....... 42 订阅(Subscription)................... .. 43 Leasing(租赁) ....... 43 分组调用(Batch Call) ............................. 44 分组解析(Batch Resolve) .............. 44 分组订阅(Batch Subscribe) ........... 44 事务(Transactions) ........................ 44 调试(Debugging) . 45 工作台(Workbench) ................... .. 48 概览..... 48 布局(Layout) ........ 48 浏览器式的导航 ....... 49 WbPlugins ................. 49 WbView 类 ................ 49 WbFieldEditor 类 ...... 50 WbSideBar 类 ............ 51 WbTool 类 ................. 51 WbProfiles 类 ............ 51
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值