DriverBox V0.2 已发布,修复并发执行脚本问题
DriverBox V0.2 已发布,修复并发执行脚本问题
DriverBox 是一款基于物联网开源框架 Edgex 打造的泛化协议接入服务。
以插件化的形式融合了 Modbus、Bacnet、HTTP、MQTT 等主流协议,同时也支持基于TCP的各类私有化协议对接。我们期望 DriverBox 能够为相关人士提供更加高效、舒适的设备接入体验。
通过对各类设备的通信协议和数据交互形式进行抽象,定义了一套标准流程以涵盖泛化协议的共性处理逻辑,并结合动态解析脚本(Lua、Javascript、Python)填补其中的差异化部分。以此解决设备接入过程中存在的驱动工程数量爆炸;接入标准难以规范化等问题。
版本更新
- 2023-06-12 v0.2
-
修复 HTTP_Server 插件并发执行 lua 脚本报错问题
-
修复 TCP_Server 插件并发执行 lua 脚本报错问题
-
- 2023-04-08 v0.1
-
实现插件列表:HTTPClient、HTTPServer、MQTT、Modbus、TCPServer
-
Lua脚本预加载模块(json、http、driverbox)
-
简介
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业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Easy Retry 六月第二个版本 v1.5.0 版本
分布式系统大行其道的当前,系统数据的准确性和正确性是重大的挑战,基于 CAP 理论,采用柔性事务,保障系统可用性以及数据的最终一致性成为技术共识 为了保障分布式服务的可用性,服务容错性,服务数据一致性 以及服务间掉用的网络问题。依据 "墨菲定律",增加核心流程重试, 数据核对校验成为提高系统鲁棒性常用的技术方案 特性 易用性业务接入成本小。避免依赖研发人员的技术水平,保障重试的稳定性 灵活性能够动态调整配置,启动 / 停止任务,以及终止运行中的重试数据 操作简单分钟上手,支持 WEB 页面对重试数据 CRUD 操作。 数据大盘实时管控系统重试数据 多样化退避策略Cron、固定间隔、等级触发、随机时间触发 容器化部署服务端支持 docker 容器部署 高性能调度平台支持服务端节点动态扩容和缩容 多样化重试类型支持 ONLY_LOCAL、ONLY_REMOTE、LOCAL_REMOTE 多种重试类型 重试数据管理可以做到重试数据不丢失、重试数据一键回放 支持多样化的告警方式邮箱、企业微信、钉钉、飞书 客户端与服务端数据交互图 #系统架构图 分布式系统重试的重要性 在分布式系统中,由于网络延...
- 下一篇
JeecgBoot 低代码平台 3.5.2 版本发布!重磅仪表盘 — 支持在线拖拽设计大屏和门户
项目介绍 JeecgBoot 是一款企业级的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue3,Mybatis-plus,Shiro,JWT 支持微服务。强大的代码生成器让前后端代码一键生成!JeecgBoot 引领低代码开发模式 (OnlineCoding-> 代码生成 -> 手工 MERGE), 帮助解决 Java 项目 70% 的重复工作,让开发更多关注业务。既能快速提高效率,节省成本,同时又不失灵活性! 当前版本:v3.5.2 | 2023-06-12 升级日志 重磅版本升级,集成了敲敲云免费版本的仪表盘设计器,支持可视化拖拽设计大屏和门户、另外修复了 VUE3 版反馈的 issues。 ISSSUE 处理 缓存路由后,页面中富文本组件会出现无法编辑的问题#19 开启 saas 多租户功能后,租户管理员在添加分类字典时,报错#4846 多租户模式下,新增或编辑用户,选择角色一栏,角色选项没有做租户隔离#4844 JeecgBoot v3.5.0 菜单展开合并 BUG#478 jeecgboot-vu...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8