littlebot
Published on 2025-04-19 / 4 Visits
0

【源码】基于Go语言的轻量级物联网中心服务

项目简介

本项目是一个轻量的 Iot 核心实现,聚焦于 IotHub 的核心功能。它既可以仅通过一个 golang 编译出的二进制程序完成部署,也能搭配不同数据库和消息中间件以提升性能。项目配备了 web 调试管理后台,方便进行调试与熟悉接口。同时,借助“设备影子”抽象,简化了服务端和设备的交互。该项目已在多个生产项目和产品中得到应用,且设计参考主流公有云 IotHub,便于知识迁移和多环境对接。

项目的主要特性和功能

特性

  • 轻量:最简部署仅需一个二进制程序,适用于开发、测试和设备数量少的场景。
  • 简单:专注核心功能,保持简单稳定,具备 web 调试管理后台。
  • 实用:通过“设备影子”简化与物联网设备的交互。
  • 生产可用:已在多个生产项目和产品中使用。
  • 兼容性强:设计参考主流公有云 IotHub,便于知识迁移和多环境对接。

功能

  • 设备管理:Thing 组件用于设备的基本管理,如 CRUD、授权认证。
  • 设备连接:Connector 组件作为设备连接层,支持内置 MQTT Broker 和 EMQX MQTT Broker。
  • 设备影子:Shadow 组件实现设备影子功能,类似主流公有云厂商的设计,减少业务系统和设备交互复杂度。
  • 设备直接方法:支持服务端对设备的方法调用,采用“请求 - 响应”模式。

安装使用步骤

前提条件

假设你已经下载了本项目的源码文件,且系统已安装 Go、Node.js 和 yarn。

运行步骤

  1. 检查 config.yaml 文件中的配置是否符合你的需求。
  2. 运行以下命令启动项目: bash cd web && yarn && yarn build && cd - && go run cmd/main.go
  3. 访问 http://127.0.0.1:9000 打开调试管理后台。
  4. 访问 http://127.0.0.1:9000/docs 查看 API 文档。

构建步骤

构建本地程序

```bash cd web && yarn && yarn build

CGO_ENABLED=1 go build -o iothub cmd/main.go

./iothub ```

构建 Docker 镜像

bash bash build/docker/build.sh

构建 deb 软件包

bash bash build/deb/build.sh

开发参考

  • 代码目录结构说明:项目结构清晰,各模块分工明确,具体结构如下: bash . ├── api # api 配置和 swagger 配置等 ├── auth # 设备认证 ├── shadow # iothub 的核心,含 shadow、direct method 的定义和实现(涉及到消息通信的部分在 connector 中) ├── thing # thing 基本的 CRUD ├── ntp # 设备 ntp 服务 ├── connector # connector 实现 │ └── mqtt │ ├── embed # 内置的 MQTT Broker │ └── emqx # 集成 EMQX MQTT Broker ├── cmd # main 入口代码 ├── web # 调试管理后台 ├── config # 程序配置 ├── db # db 配置 │ ├── mysql │ └── sqlite ├── demos │ └── light # 以路灯控制为示例,展示设备侧和服务端对 iothub 的集成 │ ├── README.md │ ├── device │ └── server ├── build # 构建脚本和配置 │ ├── deb # debian 类系统中用到的 deb 包构建 │ └── docker └── pkg # 业务无关的一些库
  • 集成示例:参考 Light Demo,有完整的设备侧服务端的代码示例。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】