前言

本文主要给大家介绍的是关于obix协议在java中的配置和使用,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
什么是 oBIX?
简单来讲,obix是一种 XML 通讯协议,使用Http Request/Post方式进行数据通讯。所有数据通过可读字符进行传送,一个oBIX对象可以有唯一的一个URL识别。
oBIX的实现原理
首先数据储存在Niagara的服务平台上,我们需要做的是从Niagara获取数据,并且储存在InfluxDB中。下面是实现的流程方法。
我们都需要定义哪些类以及变量?
| 类/接口 名 | 用途 |
|---|---|
| Calculator | |
| DiscoverEngine | 搜索工具 |
| FactorInfo | 定义所采集元素的信息 |
| FactorNameDecoderInterface | 元素名称解码接口 |
| FactorNameDecoderObixUrlImpl | |
| NewValueInterface | |
| NewValueInterfaceImpl | |
| ObixClientMgr | |
| ObixClient | |
| ObixFetcher | 循环抓取obix传输的数据 |
1、遍历各个点
2、先遍历各个设备,将相同的typeid的设备存入同一个hashmap中
3、开始执行主程序,先从数据库中查询出项目名称
4、开始搜索!
public class ObixFetcher implements JobInterface{
//这个是接口的抽象方法
public void cycleOnce() {
//从数据库中取出项目信息
List ps = dao.selectByExample(new ProjectExample());
//遍历项目信息,如果项目信息的关键信息不为null
for(Project p : ps){
if(p.getObixBaseAddress() != null && p.getObixUsername() != null
&& p.getObixPassword() != null){
//开启探索工具 (应该还是一个内部类),将关键项目信息传入探索工具,
DiscoverEngine de = new DiscoverEngine(p.getObixBaseAddress(),
p.getObixUsername(), p.getObixPassword());
//从build数据库中将数据取出,存入bulidNameToId(同样还是构造方法)
//从device数据库中将数据取出,存入deviceNumberToId(同样还是构造方法)
de.setNewValueInterface(new NewValueInterfaceImpl(p.getId(), deviceService, deviceDao, deviceTypeDao, buildDao));
//return回来一个FactorInfo
de.setFactorNameDecoderInterface(new FactorNameDecoderObixUrlImpl());
de.run();
}
}
}
}