DriverBox V0.3 已发布
DriverBox V0.3 已发布
DriverBox 是一款基于物联网开源框架 Edgex 打造的泛化协议接入服务。
以插件化的形式融合了 Modbus、Bacnet、HTTP、MQTT 等主流协议,同时也支持基于TCP的各类私有化协议对接。我们期望 DriverBox 能够为相关人士提供更加高效、舒适的设备接入体验。
通过对各类设备的通信协议和数据交互形式进行抽象,定义了一套标准流程以涵盖泛化协议的共性处理逻辑,并结合动态解析脚本(Lua、Javascript、Python)填补其中的差异化部分。以此解决设备接入过程中存在的驱动工程数量爆炸;接入标准难以规范化等问题。
版本更新
- 2023-07-06 v0.3
-
修复 HTTP_Client、mqtt 插件并发执行 lua 脚本问题
-
添加 config/update 接口,通过接口动态更新核心配置文件
-
简介
DriverBox 是使用 Go(Golang)编写的边缘设备接入框架。通过配置接入设备,不需要写代码就可以接入绝大多数设备。 同时,DriverBox 还提供了功能扩展,可以通过动态脚本(Lua)来实现非标准协议的适配和接入,大大提高了边缘设备的接入速度。
DriverBox 还完美对接 EdgeX 框架 (opens new window),模型和设备数据完全兼容 EdgeX,使用 EdgeX 的消息总线作为数据存储层,进行北向数据的传输。
目前 DriverBox 通过插件的形式去实现边缘各种标准通信协议,以此来支持更多设备的接入。 目前实现的协议插件有:Modbus、HTTP(Server / Client)、MQTT、BACNET、TCP(Server)......
系统架构
详情请参阅:直达链接
系统架构
整体上分为4层架构:接口层(interface)、核心层(core)、解析层(parser)和插件层(plugin),以下将会分别阐述每一层的具体实现和作用。
接口层(interface)
接口层(interface)为上层应用提供统一的操作接口来实现设备点位级别的读写操作。
核心层(core)
核心层(core)主要包含了:配置(config)、任务(task)、影子(shadow)、通知(notice)这些模块。以下将分别阐述这些模块的内容。
解析层(parser)
解析层(parser)负责对解析脚本的加载和调用工作。
在解析层中,解析脚本可以是不用的编程语言进行编写的,如Lua、JavaScript、Python等脚本语言(目前仅支持Lua)。
每个脚本被存放在每个插件的配置目录,与配置文件同级。 解析脚本中的内容可以动态修改并生效,从而提高调试效率。
针对不同的接入协议,解析脚本的入参结构可能会有不同,这是由各个插件的实现来决定的。
插件层(plugin)
插件层(plugin)包含3个接口实现:驱动插件(plugin)、适配器(adapter)和连接器(connector)。
-
驱动插件(plugin)
驱动插件(plugin)接口定义了插件的初始化、连接器和适配器的获取以及插件销毁的流程。初始化过程中,驱动插件根据配置文件中的协议信息决定连接器和适配器的初始化以及对连接池的管理。
-
连接器(connector)
连接器(connector)是系统与设备的通讯连接。初始化过程中,驱动插件根据配置文件中的协议信息初始化每一个连接器。该接口定义了Send和Release方法,分别用于数据的南向传输以及连接器的释放动作。
-
适配器(adapter)
适配器(adapter)与设备无关,一共包含了2个方法:decode()与encode()。适配器的主要任务是将上层统一的数据结构与对应协议的数据结构进行相互转化。
总体上来说,连接器和适配器从属于驱动插件。适配器承担了对不同协议的适配工作,连接器负责数据传输。南向数据通过encode方法转化成协议的合法结构在通过对应的连接器进行下发,而北向数据在接收到之后经过decode方法转化为同一的数据结构交付给上层应用。
平台支持
由于 DriverBox 是通过 docker buildx
进行构建,理论在各种系统架构上均可正常运行。 我们已预编译了 AMD、ARM 等架构的镜像,可以直接下载镜像并使用。
相关连接

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
EasyGoAdmin 敏捷开发框架 GoFrame+Layui 版本 v1.3.0 发布
v1.3.0更新内容: 1、重新菜单模块和菜单表数据; 2、划分权限功能,不同账号根据角色权限获取不同的菜单; 3、修复用户已反馈的BUG; 一款 Go 语言基于 GoFrame、Layui、MySQL 等框架精心打造的一款模块化、高性能、企业级的敏捷开发框架,本着简化开发、提升开发效率的初衷触发,框架自研了一套个性化的组件,实现了可插拔的组件式开发方式:单图上传、多图上传、下拉选择、开关按钮、单选按钮、多选按钮、图片裁剪等等一系列个性化、轻量级的组件,是一款真正意义上实现组件化开发的敏捷开发框架。 软件信息 软件名称:EasyGoAdmin 敏捷开发框架 GoFrame+Layui 版本 官网网址:https://www.easygoadmin.vip 文档网址:http://docs.goframe.layui.easygoadmin.vip 演示地址:http://manage.goframe.layui.easygoadmin.vip 版本说明 版本名称 版本说明 版本地址 GoFrame+Layui 混编版 采用 GoFrame、Layui 等框架研发 https://gi...
- 下一篇
fastmybatis 2.8.1 发布,支持JPA Query Method查询
fastmybatis 2.8.1 发布,本次更新内如下: 新增JPA Query Method查询 2.8.1 开始新增JPA Query Method查询,只需要在接口中定义方法就能进行查询,无须编写SQL语句。 原理:根据方法名称中的关键字自动推导出SQL语 目前实现了大部分功能,参考: JPA Query Method除了Distinct不支持,其它已全部支持 在Mapper中定义一个方法,以 findBy 开头 /** * … where x.lastname = ?1 and x.firstname = ?2 * @param lastname * @param firstname * @return */ List<Student> findByLastnameAndFirstname(String lastname, String firstname); 在 Mapper中定义这个方法,就可以直接使用了,无须编写 XML。 使用: @Test public void findByLastnameAndFirstname() { Li...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7