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 等架构的镜像,可以直接下载镜像并使用。
相关连接
-
DriverBox开源仓库:点击查看
-
DriverBox详细介绍:点击查看
-
DriverBox快速入门:点击查看
还没有评论,来说两句吧...