[开源]基于Golang开发的轻量级的物联网平台,加速物联网开发交付
![[开源]基于Golang开发的轻量级的物联网平台,加速物联网开发交付](https://yy123.ink/api/img/1782579206417-30udte.jpg)
一、开源项目简介
Sagoo IOT
SagooIOT是一个基于golang开发的轻量级的物联网平台。支持跨平台的物联网接入及管理方案,平台实现了物联网开发相关的基础功能,基于该功能可以快速的搭建起一整套的IOT相关的业务系统。
二、开源协议
使用Apache-2.0开源协议
三、界面展示
演示图
演示图















四、功能概述
- SagooIOT 系统优势 -
SagooIOT提供了支持私有化或容器化形式的部署,用户可以将其轻松部署在单机、集群或容器服务环境中,并且支持横向扩展,以满足不同规模的业务需求。使用SagooIOT能够获得出色的性能表现,提供优异的IOT服务能力。
百万级
数据并发
系统可分布式部署,支持百万级数据并发。
千万级
设备接入
设备网关水平扩容,支持千万级设备接入。
亿万级
数据采集
TDengine时序数据库,支持上亿数据采集点
低延迟
数据通讯
高性能网络组件,非阻塞网络编程,具有极低的通讯延迟。
特征
- 高生产率:几分钟即可搭建一个后台管理系统
- 模块化:单应用多系统的模式,将一个完整的应用拆分为多个系统,后续扩展更加便捷,增加代码复用性。
- 认证机制:采用gtoken的用户状态认证及casbin的权限认证
- 路由模式:得利于goframe2.0提供了规范化的路由注册方式,无需注解自动生成api文档
- 面向接口开发
- 支持物模型,多产品、多设备接入管理。
- 屏蔽网络协议的复杂性,适配多种接入协议(TCP,MQTT,UDP,CoAP,HTTP,GRPC,RPC等),灵活接入不同厂家的不同设备。
- 支持跨平台运行,可快速实现边缘计算功能,实现离线自动预警,自动执行等相关功能。
- 支持跨终端展示,可以通过PC,手机,平板等进行设备状态的监控和数据展示
- 独特的插件系统,支持跨语言接入,可以通过C/C++,Python编写的插件进行快速接入。
- 插件系统支持热插拔,支持Modbus tcp,modbus rtu,modbus ascii,iec61850,opc等数据采集协议
内置功能
- 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
- 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
- 岗位管理:配置系统用户所属担任职务。
- 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
- 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
- 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
- 参数管理:对系统动态配置常用参数。
- 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
- 登录日志:系统登录日志记录查询包含登录异常。
- 在线用户:当前系统中活跃用户状态监控。
- 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
- 代码生成:前后端代码的生成。
- 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
- 文件上传,缓存标签等。
- 产品管理:对设备类产品进行统一管理
- 设备管理:对设备进行接入与数据配置管理
- 数据中心:对第三方api或是数据库及内部数据进行数据新建模管理,支持规则定义。
五、技术选型
系统架构

SagooIOT是一个基于golang开发的开源的企业级物联网基础开发平台。负责设备管理和协议数据管理,支持跨平台的物联网接入及管理方案,平台实现了物联网开发相关的基础功能,基于该功能可以快速的搭建起一整套的IOT相关的业务系统。旨在通过可复用的组件,减少开发工作,简化和加速物联网开发交付。适配多种接入协议(TCP,MQTT,UDP,CoAP,HTTP,GRPC,RPC等)。
- 基于全新Go Frame 2.0+Vue3+Element Plus开发的全栈前后端分离的管理系统
- 前端采用vue-next-admin 、Vue、Element UI。
技术栈
- GoFrame
- Vue3
- Swagger
- Jwt
- Element plus
- MySql
- Redis
- TDengine
基础环境安装
- Redis 7.0.4
- TDengine 3.0.1.5
- EMQX 5.0.9-el8
- Nginx 1.22.0
- rule-engine
详细安装过程,请查看开源项目官网文档。
部署说明
该程序可以独立部署,直接执行使用,也可以与nginx或是apache联合使用。
硬件要求
最低配置
CPU
1核心
内存
1GB
硬盘
40G
推荐配置
CPU
2核+
内存
4GB+
硬盘
40GB+
支持平台
SagooIOT采用Golang开发,拥有良好的跨平台特性。支持的平台如下:
aix/ppc64 android/386 android/amd64 android/arm android/arm64 darwin/amd64 darwin/arm64 dragonfly/amd64 freebsd/386 freebsd/amd64 freebsd/arm freebsd/arm64 illumos/amd64 js/wasm linux/386 linux/amd64 linux/arm linux/arm64 linux/mips linux/mips64 linux/mips64le linux/mipsle linux/ppc64 linux/ppc64le linux/riscv64 linux/s390x netbsd/386 netbsd/amd64 netbsd/arm netbsd/arm64 openbsd/386 openbsd/amd64 openbsd/arm openbsd/arm64 plan9/386 plan9/amd64 plan9/arm solaris/amd64 windows/386 windows/amd64 windows/arm
设备接入协议
设备成功连网后,还需要采用特定协议与云平台进行数据交互。下面简要介绍几种常用的设备接入协议,以及选用时的注意事项。
MQTT
MQTT是一种轻量级的发布订阅式消息协议,工作在TCP协议上。它需要设备与云平台建立持久TCP连接,并完成身份验证后,可以进行数据通信。
MQTT协议具有以下显著优势:
支持实时控制
MQTT通过与云平台的长连接,可以实现实时的命令下发和控制。设备可以即时收到控制指令,实现智能家居、农业监控等场景的实时控制。
便于监测设备状态
长连接也便于监测设备在线状态。虽然由于网络问题,设备连接可能会出现断开,但MQTT本身的心跳机制可以很好地检测状态。
安全级别灵活
MQTT支持不同的安全认证机制。对于资源受限的设备,可以使用简单的用户名密码加密。对安全要求高的场景,可以使用TLS证书机制,保证数据安全。
数据流量小
MQTT使用二进制格式,相比文本协议,可以大幅减少无效负载。这对诸如NB-IoT等低带宽网络来说非常有利。MQTT是一个高效、灵活、安全的物联网消息协议。它非常适合需要实时控制和监测的场景,是物联网的首选接入协议。
HTTP
HTTP 协议运行在TCP之上,对开发者非常友好。设备可以通过HTTP向云平台发送数据。
HTTP方式简单实用,如果设备资源允许,可以使用HTTPs实现安全传输。但HTTP不如MQTT实时,无法进行命令控制。单纯的数据采集场景可以选择HTTP。
CoAP
CoAP是一种精简的REST风格协议,运行在UDP上,更适合低功耗设备使用。
CoAP除了更轻量之外,与HTTP使用方式高度相似。如果设备资源有限,可以考虑使用CoAP。
TCP
SagooIOT也支持基于TCP的自定义协议接入。比如很多DTU设备采用TCP透传方式。
TCP方式可以高度定制,但需要自主开发通信格式解析。也可以在云平台进行格式转换,以适应不同设备。
设备可根据资源情况、实时性需求、安全需求等,选择MQTT、HTTP、CoAP或TCP接入协议。
无论采用何种协议,都需要进行格式解析、身份验证等处理。SagooIOT提供不同协议的接入方式,以及后端的数据处理与转换功能。
来源:SagooIOT 官网文档