Skip to content

项目介绍

aiots是一款物联网开发框架,旨在简化物联网应用的开发和部署,还提供了一系列的物联网设备管理和数据处理功能,帮助开发者快速构建稳定、高效的物联网应用。本质上aiots是一款物联网软网关,南向方面它提供了一序列的物联网协议支持,比如MQTT、PLC、MODBUS、DLT645、OPCUA、DTU(MODBUS)、自定义驱动等,北向方面它提供了http开放平台、指令集、mqtt数据转发、rabbit mq推送等功能。同时iboot自身还提供了一序列的设备管理功能,比如设备注册、设备上下线、数据上报、数据采集、数据清洗、数据转发、设备告警、协议调试等功能。

aiots 分为开源版本商业版本,两者在功能范围与技术栈上有所不同:

开源版本

基于 Spring Boot2 的物联网开发框架,包含设备接入、协议驱动、数据采集等核心基础能力。

  • 前端基于 vue3 + vite3 开发,ui 库使用 antdv4+
  • 服务: ubuntu18.04+、mysql8.0+、nginx1.18+
  • 后端主分支基于 jdk1.8 开发,主要依赖 springboot2、mybatis-plus、sa-token、iotucy、netty、easypoi、sms4j 等

商业版本

在开源版基础上提供更完整的功能(脚本引擎、场景联动、大屏组态、北向接入等)与更新的技术栈,以当前项目为准

  • 后端:JDK 21 + Spring Boot 3.5.10
  • 前端:vue3 + vite5,ui 库使用 antdv-next(Ant Design Vue Next),大屏组态基于 meta2d(le5le)
  • 服务: ubuntu20.04+、mysql8.0+、nginx1.18+、tdengine3.4.2+
  • 核心依赖:iotucy(iot) 3.4.1、MyBatis-Plus 3.5.7、Sa-Token 1.39.0、Netty、Hutool 5.8.37、FastJSON2 2.0.57、SMS4J 3.3.4、EasyPOI 4.3.0、Knife4j 4.5.0、LangChain4j 1.0.0-beta3、JustAuth 1.16.5 等

商业版另提供基于 jdk1.8-11 / Spring Boot 2.7.x 的默认分支,当前项目使用的是 JDK21 + Spring Boot3 分支。

语言和框架

开发前需要先安装 idea 开发工具、git 版本管理、node18+、mysql8.0+,并根据所用版本准备对应的 JDK:

  • 开源版:jdk1.8+、maven3.6+
  • 商业版(当前项目):jdk21、maven3.6+、

快速开发

  • 拉取项目(可以通过命令行或开发工具拉取)
bash
# 拉取基于vue3的前端项目
git clone https://gitee.com/iteaj/ivzone.git
# 拉取基于springboot2的后端项目
git clone https://gitee.com/iteaj/iboot.git
  • 安装依赖
  1. 安装前端依赖(确保node18+已安装)
bash
# 打开控制台或者开发工具控制台然后进入前端目录后输入以下命令并执行
npm install
# 启动前端项目
npm run dev
  1. 安装后端依赖(确保jdk1.8/17+、maven3.6+已安装),通过idea导入aiots项目后等待idea下载maven依赖
  • 修改配置
  1. 创建mysql数据库aiots并且导入iboot.sql数据库文件(在docs/sql目录下), 如果patch.sql文件存在脚本内容则一并导入, 然后修改mysql的sql_mode配置并重启mysql, 具体修改方式如下:
conf
# window系统下进入mysql安装目录下修改my.ini, 如果没有自行创建一个
# linux系统下执行命令: 
vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 然后在[mysqld]块下面添加
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 注: 正式环境安装部署时同样需要做此修改
  1. 修改application-dev.properties文件中的数据库连接信息
properties
# 用户名、密码、数据库名根据自己的实际情况修改
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
spring.datasource.url=jdbc:p6spy:mysql://127.0.0.1:3306/iboot?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
  1. 启动项目(通过idea的启动按钮启动)
  2. 浏览器访问 http://localhost:5173

安装部署

  1. 确保服务器已经安装mysql8.0+、jdk1.8+、nginx1.18+并配置好环境变量, 然后导入iboot.sql数据库文件(在docs/sql目录下)
  2. 前端项目打包
code
//1. 修改prod.config.js文件,将里面的http参数改成自己公网的域名或者ip
http: new Http({
    httpUrl: "http://iot.iteaj.com/api", // 换成自己的域名(注意http或https)
    websocketUrl: 'ws://iot.iteaj.com'   // 换成自己的域名(注意ws或wss)
});
//2. 执行命令
npm run build
//3. 将打包完成后的目录dist进行zip压缩
//4. 上传压缩文件到服务器指定目录并解压
  1. 后端项目打包
properties
# 修改application.properties文件,将配置spring.profiles.active的值改成prod
spring.profiles.active=prod
# 执行打包命令 
mvn clean package
# 上传bootstrap/target目录下已打包好的bootstrap.jar到服务器
  1. 配置nginx
conf
# 1.修改/etc/nginx/nginx.conf配置文件
http {
    ...省略
    # 加入以下配置
    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }
}
# 2.复制 docs/nginx/iot.conf或iot-https.conf文件到/etc/nginx/conf.d目录下
# 3.然后修改iot.conf或iot-https.conf配置文件中的server_name和root等参数
server {
    location / {
         # 前端文件解压路径
    	root /home/iotucy/dist;
	    index index.html;
    }
    location /api {
        # application-prod.properties文件里面配置的http端口
    	proxy_pass http://127.0.0.1:8085;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    location /ws {
        # application-iot.yml文件里面prod环境配置的websocket端口
    	proxy_pass http://127.0.0.1:8087; 
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_read_timeout 3600s;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
    # 乐吾乐大屏适配
    location /view/ {
        proxy_pass http://127.0.0.1:9085/api/view/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
  1. 启动项目
bash
# 进入bootstrap.jar所在目录
cd /path/to/bootstrap.jar
# 使用命令行启动
nohup java -jar bootstrap.jar &
# 使用脚本启动: 上传docs/deploy.sh脚本到服务器和bootstrap.jar同一目录下, 然后执行以下命令
# 增加脚本执行权限
chmod +x deploy.sh
# 启动项目
sh deploy.sh start
# 停止项目
sh deploy.sh stop

AI 开发(商业)

商业版把平台从设计、开发到使用的完整知识都沉淀成了 AI 开发技能,覆盖后端、管理端、移动端、驱动等所有模块。做二次开发时,AI 可以直接依据这些技能生成符合平台规范的代码——不用翻文档、不用记模板。

更具体的技能可到项目 docs/ai 目录下查看。各模块对应的开发技能如下:

技能适用模块能做什么
aiots-dev全栈 / 后端全功能开发流程协调 + 后端 CRUD/插件/IoT·Core 模块开发,统一 API 契约
admin管理端Vue3 + Ant Design Vue 管理端页面、组件配置、接口对接、权限与菜单
app移动端uni-app x + UTS 移动端页面、类型定义、后端接口对接
cool ui移动端 UICool UI 组件库选型与页面布局(配合 app 技能使用)
driver设备驱动PLC/Modbus/MQTT/OPC UA/自定义协议驱动开发,实现 DeviceProtocolSupplier SPI
playwright-cli自动化测试浏览器自动化、端到端测试,覆盖开发完成后的验证环节

这些技能配套速查文档、代码模板和开发流程规范,AI 依据它们生成的代码会严格遵循平台的目录结构、注解、继承关系与接口契约。