项目简介
简介
driver-box 是一款支持泛化协议接入的边缘网关框架, 以插件化的形式融合了 Modbus、Bacnet、HTTP、MQTT 等主流协议,同时也支持基于TCP的各类私有化协议对接。
我们期望 driver-box 能够为相关人士提供更加高效、舒适的设备接入体验。
通过对各类设备的通信协议和数据交互形式进行抽象,定义了一套标准流程以涵盖各类通信协议的共性逻辑,并结合动态解析脚本(Lua)填补其中的差异化部分。
以此解决设备接入过程中存在的驱动工程数量爆炸;接入标准难以规范化等问题。
特性
免费开源
采用商业友好的 Apache-2.0 开源协议,使其成为 IoT 生态圈的极佳选择。
架构
以 Golang 为主要开发语言,可编译出适配 amd64、arm64、armv7、x86 等系统架构的可执行程序。
存储空间和运行内存控制在十几MB,满足低规格网关的运行需求。
采用高度统一的配置化方式对接各类通讯设备。理想情况下只需编写一个 JSON 文件便可完成设备接入,亦可结合 lua 脚本实现复杂设备的数据加工。
通过精心的架构设计,三方用户可无限扩展边缘网关的设备通讯能力和应用服务能力。
API
driver-box 没有提供配套的 UI 界面,但开放了大量实用 RestAPI。用户可以自由设计网关 UI,定制出极致用户体验的边缘产品。
应用场景
driver-box 适用于多种场景,包括智能家居、智慧楼宇、智慧工厂、智慧门店。它促进了设备数据的采集与场景融合,实现了万物皆可连、万物皆可互联、万物皆可智联。
名词解释
插件(Plugin)
在 driver-box 中,「插件」这个词专指:通讯插件,例如:Http插件、Modbus插件、Bacnet插件。
插件是 driver-box 提供了一项开放性能力,如若内置的插件不满足需求,用户可参考《通讯插件开发》实现一款自定义插件并集成至 driver-box。
Export
Export,一时找不到合适的中文名词来表示这个单词在 driver-box 中的用途。
它也是 driver-box 提供的一项开放性能力,用于处理 driver-box 向上层传递的设备数据和事件。
以此,我们可以实现类似场景联动、边缘计算、数据上云等一系列高级能力。而这些能力的组织与融合,便形成了完整的边缘引擎产品。
资产库
资产库是 driver-box 框架提供的一种资源管理能力。通过持续沉淀和复用资产库中的已有资源,逐渐提升项目工程实施效率。
资产库存储于res/library/
目录。
Directorydriver-box
Directoryres
Directorylibrary
- index.json 资产库索引文件,便于快速定位资源
Directorydriver/ 设备层驱动库
- …
Directorymirror_tpl/ 镜像模块库
- …
Directorymodel/ 物模型库
- …
Directoryprotocol/ 通信协议层驱动库
- …
虚拟设备
虚拟设备是 driver-box 框架提供的一种设备通讯方式模拟能力。 使用户可在无需对接真实设备的情况下,进行本地设备配置和调试。
开启虚拟设备模式,只需将 connections 中的 virtual
配置项设置为 true
。
现以支持以下几种通讯插件:
- Bacnet
- Modbus
Event
Event 是 driver-box 框架提供的一种事件通知能力。