driver-box

6666
1小时前发布 /正在检测是否收录...
广告 广告 广告 广告 广告 广告 广告 广告 广告 广告

项目介绍

driver-box 是一款支持泛化协议接入的边缘网关框架, 以插件化的形式融合了 Modbus、Bacnet、HTTP、MQTT 等主流协议,同时也支持基于TCP的各类私有化协议对接。

项目详情

driver-box

Go Version
License
Documentation
Ask DeepWiki

一款支持泛化协议接入的轻量级边缘网关框架,通过插件化和Lua脚本实现灵活的设备接入能力。


📖 简介

driver-box 是一款专为物联网场景设计的边缘网关框架,采用插件化架构融合了 Modbus、BACnet、HTTP、MQTT、WebSocket 等主流工业协议,同时支持基于 TCP 的各类私有协议的无缝对接。

设计理念

通过对各类设备的通信协议和数据交互形式进行抽象,定义了一套标准化的设备接入流程,涵盖各类通信协议的共性逻辑。同时,结合动态 Lua 脚本引擎填补协议差异化的部分,实现了:

  • ✅ 解决驱动工程数量爆炸问题 - 通过配置化和脚本化大幅减少重复开发
  • ✅ 统一接入标准 - 建立规范化的设备接入流程
  • ✅ 降低技术门槛 - 理想情况下仅需编写 JSON 配置文件即可完成设备接入
  • ✅ 灵活扩展能力 - 支持自定义插件和 Lua 脚本应对复杂场景

我们期望 driver-box 能够为 IoT 开发者提供更加高效、舒适的设备接入体验。


🚀 核心特性

💎 轻量高效

  • 极简架构:Go 语言开发,单文件编译,体积控制在 10-20MB
  • 低资源占用:运行内存需求低,满足低规格边缘网关的运行要求
  • 跨平台支持:支持 amd64、arm64、armv7、x86 等多种系统架构
  • 高性能并发:基于 Go 协程实现高效的并发数据处理

🔌 插件化架构

  • 协议插件:内置 Modbus、BACnet、HTTP、MQTT、WebSocket 等主流协议支持
  • 数据导出:支持多种数据导出方式(MQTT、HTTP、LinkEdge 等)
  • 热插拔:支持插件动态加载、卸载和配置热重载
  • 无限扩展:开放插件接口,开发者可轻松扩展协议和功能

📜 Lua 脚本引擎

  • 动态解析:通过 Lua 脚本实现复杂协议的数据解析和处理
  • 业务逻辑:支持在脚本中编写设备特定的业务逻辑
  • 内置库支持:提供丰富的内置 Lua 库(HTTP、JSON、数学计算等)
  • 热更新:支持运行时更新脚本,无需重启服务

🏗️ 架构设计

┌─────────────────────────────────────────────────────────────┐
│                        Export Layer                         │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐│
│  │ LinkEdge │ │   MQTT   │ │ Gateway  │ │ History/Discover ││
│  └──────────┘ └──────────┘ └──────────┘ └──────────────────┘│
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│                        driver-box Core                       │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐│
│  │  Cache   │ │  Shadow  │ │  Event   │ │   Crontab        ││
│  └──────────┘ └──────────┘ └──────────┘ └──────────────────┘│
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│                       Library Layer                         │
│  ┌──────────────────────────────────────────────────────┐   │
│  │  Driver Scripts (Lua) + Protocol Scripts (Lua)       │   │
│  └──────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│                      Plugin Layer                           │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐│
│  │  Modbus  │ │  BACnet  │ │   MQTT   │ │ HTTP/WebSocket   ││
│  └──────────┘ └──────────┘ └──────────┘ └──────────────────┘│
└─────────────────────────────────────────────────────────────┘

目录结构

driver-box/
├── driverbox/          # 核心框架
│   ├── driverbox.go    # 主入口
│   ├── plugin.go       # 插件管理
│   ├── export.go       # 导出管理
│   ├── shadow.go       # 设备影子
│   └── crontab.go      # 定时任务
├── plugins/            # 内置协议插件
│   ├── modbus/         # Modbus 协议
│   ├── bacnet/         # BACnet 协议
│   ├── mqtt/           # MQTT 协议
│   ├── httpclient/     # HTTP 客户端
│   ├── httpserver/     # HTTP 服务端
│   ├── tcpserver/      # TCP 服务端
│   ├── websocket/      # WebSocket 协议
│   └── dlt645/         # DLT645 协议
├── exports/            # 数据导出插件
│   ├── linkedge/       # 场景联动
│   ├── mirror/         # 镜像设备服务
│   ├── discover/       # 设备自动发现
│   └── gateway/        # 分布式网关
├── internal/           # 内部实现
│   ├── core/           # 核心逻辑
│   ├── cache/          # 缓存管理
│   ├── export/         # 内置Export
│   └── shadow/         # 影子服务
├── pkg/                # 公共包
│   ├── config/         # 配置管理
│   ├── event/          # 平台事件定义
│   ├── library/        # 资源库
│   └── crontab/        # 定时任务
├── res/                # 资源目录(运行时)
│   ├── library/
│   │   ├── driver/     # 设备驱动脚本
│   │   ├── protocol/   # 协议解析脚本
│   │   └── model/      # 物模型定义
│   ├── computing/      # 计算任务
│   └── history_data/   # 历史数据
├── pages/              # 文档站点
├── main.go             # 应用入口
├── go.mod              # Go 依赖
└── deploy.sh           # 构建脚本

📦 快速开始

环境要求

  • Go: 1.23 或更高版本
  • 操作系统: Linux / Windows / macOS / Android
  • 架构: amd64 / arm64 / armv7 / arm

安装

1. 下载源码

git clone https://github.com/ibuilding-X/driver-box.git
cd driver-box

2. 加载依赖

# 国内用户推荐使用镜像
go env -w GOPROXY=https://goproxy.cn,direct

# 加载依赖
go mod tidy
go mod vendor

3. 运行

# 直接运行
go run main.go

# 或编译后运行
go build -o driver-box
./driver-box

交叉编译

项目提供了自动化构建脚本,支持多平台交叉编译:

# 执行构建脚本
bash deploy.sh

# 输出目录
_output/
├── driver-box-linux-arm64-v1.0.0.tar.gz
├── driver-box-linux-amd64-v1.0.0.tar.gz
└── ...

配置说明

driver-box 使用 res/ 目录作为配置资源目录,启动时可通过环境变量指定:

# 默认配置路径
export DRIVERBOX_RESOURCE_PATH="./res"

# 自定义配置路径
export DRIVERBOX_RESOURCE_PATH="/opt/driver-box/res"

# 设置日志级别
export LOG_LEVEL="info"
export DRIVERBOX_LOG_PATH="./logs"

🔌 内置插件

协议插件

插件名称协议类型说明
modbusModbus RTU/TCP工业通用协议,支持串口和TCP
bacnetBACnet/IP楼宇自动化标准协议
mqttMQTT物联网轻量级消息协议
httpclientHTTP ClientHTTP 客户端,支持 REST API
httpserverHTTP ServerHTTP 服务端,提供 API 接口
tcpserverTCP ServerTCP 服务端,支持自定义协议
websocketWebSocket实时双向通信协议
dlt645DLT645电能表通信协议

export 插件

插件名称功能说明
linkedge场景联动
mirror设备数据镜像
discover设备自动发现服务
gateway分布式网关

启用插件

在 main.go 中启用需要的插件:

package main

import (
    "os"

    "github.com/ibuilding-x/driver-box/v2/driverbox"
    "github.com/ibuilding-x/driver-box/v2/exports"
    "github.com/ibuilding-x/driver-box/v2/plugins"
)

func main() {
    // 设置日志级别
    _ = os.Setenv("LOG_LEVEL", "info")
    plugins.EnableAll()
    exports.EnableAll()
    driverbox.Start()
    select {}
}

📚 详细开发文档

完整的二次开发文档请参考:


🎯 应用场景

driver-box 适用于多种物联网场景:

场景说明支持设备
智慧楼宇HVAC 系统、照明系统、电梯系统空调机组、照明控制器、电表、水表
智慧工厂生产设备监控、能耗管理PLC、变频器、传感器、执行器
智能家居家用设备联网、场景联动智能门锁、智能家电、环境传感器
智慧门店设备监控、数据分析冷链设备、POS 机、监控摄像头
智慧园区综合设施管理能源系统、安防系统、停车系统

典型案例

  • ✅ 多品牌 VRF 空调接入 - 支持 大金、日立、海尔、美的等品牌,统一数据标准
  • ✅ 能耗管理系统 - 接入各类电表、水表、燃气表,实现能耗监控和分析
  • ✅ 楼宇自控系统 - 集成 BACnet、Modbus 设备,实现统一控制和管理
  • ✅ 工业设备联网 - 将传统工业设备连接到云平台,实现远程监控

🤝 参与贡献

欢迎参与 driver-box 的开发,您的贡献将帮助更多开发者!

贡献流程

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feat/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feat/AmazingFeature)
  5. 提交 Pull Request

代码规范



📞 反馈与支持

获取帮助

联系方式

如有商业合作需求或技术支持,请通过 Issue 或 Discussion 联系我们。


🙏 致谢

感谢以下开源项目的支持:


如果这个项目对您有帮助,请给我们一个 ⭐️ Star!

⬆ 回到顶部

⬇️ 下载地址

喜欢就支持一下吧
点赞 0 分享 赞赏
评论 抢沙发
OωO
取消
广告