Go每日一库之185:SagooIOT(轻量级物联网平台)

发布时间 2023-09-29 21:54:14作者: 阿瑞娜

一、开源项目简介

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或是数据库及内部数据进行数据新建模管理,支持规则定义。

五、技术选型

系统架构

每日一库之185:SagooIOT(轻量级物联网平台%29-0

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提供不同协议的接入方式,以及后端的数据处理与转换功能。

来源:https://www.toutiao.com/article/7267933751366271529/?log_from=625c16f9d653c_1692669199455