• Bancet开源驱动SDK开发包Java版,开箱即用(楼宇自控,智慧楼宇,智能建筑)


    wlinker-driver-bacnet

    开源地址
    https://gitee.com/wlinker/wlinker-driver.git

    介绍

    wlinker.cn物联网IOT各类通用驱动包,如modbus,bacnet等
    此项目主要用于作为sdk被集成,目前实现的协议:

    协议设备发现(批量读取)读取写入
    bacnet支持支持开源版本暂不支持
    modbus开发中…开发中…开发中…
    软件架构

    项目技术栈:maven + java8

    安装教程
    1.打包

    在项目根目录下运行输入 mvn package 进行打包

    在这里插入图片描述

    2.获取驱动jar包

    在实际的驱动子模块的target中可以找个打包完成的jar,此jar包会自动将项目的依赖一起打包,使用时可以直接被其他项目如spring项目(J2EE),J2SE项目依赖,无需再引入common包

    在这里插入图片描述

    使用说明
    1.测试

    在实际的驱动子模块中,有示例的测试代码模拟实际的使用场景

    例如设备发现和单个点位读取

    测试代码

    在这里插入图片描述

    测试结果

    在这里插入图片描述

    2.被 SpringBoot+Maven项目引入
    拷贝jar包至resources目录

    在这里插入图片描述

    在pom.xml中引入本地坐标

    引入坐标之后需要刷新maven才能正常使用

      <dependency>
          <artifactId>wlinker-driverartifactId>
          <groupId>cn.wlinkergroupId>
          <version>1.0.0version>
          <scope>systemscope>
          <systemPath>${basedir}/src/main/resources/wlinker-driver-bacnet-1.0.0.jarsystemPath>
    dependency>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    加入pom.xml打包配置

    不加这个配置springboot项目打包时不会将本地依赖一起打包,运行时会找不到对应的Class

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
                <configuration>
                    <includeSystemScope>trueincludeSystemScope>
                configuration>
            plugin>
        plugins>
    build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    3.接口开发

    以下以设备发现为例

    @RestController
    @RequestMapping("/bacnet")
    @Slf4j
    @Validated
    public class BacnetController {
    
    
        /**
         * @param bacnetLocalDeviceBean
         * @return
         * @throws Exception
         */
        @GetMapping("/discovery")
        public List<BacnetObject> discovery(BacnetLocalDeviceBean bacnetLocalDeviceBean) throws Exception {
            Map<String, Object> stringObjectMap = BeanUtil.beanToMap(bacnetLocalDeviceBean);
            BacnetDriver bacnetDriver = DriverFactory.getDriverByConnInfo(BacnetDriver.class, stringObjectMap);
            Boolean open = bacnetDriver.open();
            if (open) {
                List<BacnetObject> discovery = bacnetDriver.discovery();
                return discovery;
            }
            return null;
        }
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    4.接口调用

    在接口中输入地址和需要的参数即可获取查询结果(PS:192.168.61是应用部署电脑的IP地址,需要和楼控软件在同一个网段)
    在这里插入图片描述

    备注

    服务应用和Bacnet设备需要在不同的机器上,而且需要在相同的网段,否则无法扫描到数据

    SpringBoot应用部署地址

    SpringBoot应用部署在我本地,和虚拟机桥接用的IP地址是192.168.61.1
    在这里插入图片描述

    Bacnet模拟设备地址

    设备模拟软件安装在windows虚拟机上,IP是192.168.61.129

    在这里插入图片描述

    代码运行前必看

    此代码基于Yabe这个可视化工具及其附带的设备模拟器进行编写。

    • Yabe下载地址:liquidtelecom.dl.sourceforge.net/project/yet…

    • Yabe安装后将自动带有模拟器 Bacnet.Room.Simulator.exe。(模拟器文件路径:模拟器在Yabe软件安装路径的/AddOn文件夹下。我的文件路径为:C:\Program Files\Yabe\AddOn\Bacnet.Room.Simulator.exe)

    在这里插入图片描述

    运行Yabe软件附带的 Bacnet.Room.Simulator.exe 软件需要和SpringBoot服务应用在不同的机器上。

    运行代码或模拟器前:需关闭 Yabe、InneaBACnetExplorer Free Edition,BancetScan等所有的浏览设备信息的可视化工具,否则代码里将无法请求到设备

    • tips:该模拟器支持多开(多次打开此模拟器,会启动多个设备id不同的设备)
  • 相关阅读:
    java计算机毕业设计基于安卓Android的校园快药APP-药店管理app(源码+系统+mysql数据库+Lw文档)
    Geode滚动升级手册
    linux用sqlcipher加解密
    基于Java毕业设计养老机构系统源码+系统+mysql+lw文档+部署软件
    架构风格相关内容
    【JavaEE】Java的文件IO
    二十、泛型(5)
    分布式共识算法——Raft算法(图解)
    函数防抖与节流
    springcloud-eureka--集群搭建
  • 原文地址:https://blog.csdn.net/qq_32024669/article/details/127129082