一飞开源,介绍创意、新奇、有趣、实用的开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!
一、开源项目简介
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 官网文档
六、源码地址
访问一飞开源:https://code.exmay.com/