issues
Tips
遇到未解决的问题或者Bug,请提交 Issue
1. 后端报错提示找不到数据库表
Mysql版本不能低于5.7,建议使用5.7版本。Linux中安装数据库,配置大小写敏感,在 /etc/my.cnf 添加 lower_case_table_names=1 重启MYSQL服务。
2. 后端报错提示找不到包
项目JDK使用1.8版本,如果安装了其他高版本,简单处理就直接卸载其他版本,或者自己安装缺少的依赖。
3. 后端运行报错的其他问题
项目依赖Redis和Emqx,确保正确配置Redis连接地址和密码;Emqx正确配置了Http认证地址和Webhook地址,后端正确配置了Emqx的连接地址。
4. 前端安装包的时候报错 npm ERR! code ERESOLVE
npm7.X版本的检查比之前版本严格,可以使用 npm i --legacy-peer-deps
或 npx -p npm@6 npm i --legacy-peer-deps
命令安装。或者安装npm6.X版本。
5. 获取到实时监测数据,设备首页和运行状态不显示监测到的数据
实时监测数据是用来实时查看的,不会存储到数据库,所以对应的监测值没有改变。可以通过设备端定时上报属性(监测数据是属性的一种),存储到数据库;或者系统中设置定时上报属性功能。
7.固定大屏添加方式
- 开源版本切换到商业版本,前端需要重新安装一下包,执行
npm install
- 后台添加大屏展示菜单:系统管理 -> 菜单管理 -> 新增
上级菜单:主类目
菜单类型:目录
菜单图标:monitor-a
菜单名称:大屏展示
是否外链:是
显示排序:5
路由地址:https://iot.fastbee.cn/bigScreen https://iot.fastbee.cn改为自己服务器的地址
显示状态:显示
菜单状态:正常
8.设备激活
设备有 未激活
在线离线 禁用 几种状态,有两种方式可以更改设备状态:- 设备认证,认证成功后状态变更为在线
- 发布设备信息主题,主题消息内容中状态固定为3=在线
# 描述:1.设备上电后发布设备信息; 2.设备接收到设备信息指令后发布设备信息
# rssi 设备信号(信号极好[-55— 0],信号好[-70— -55],信号一般[-85— -70],信号差[-100— -85])
# status 设备状态,固定为3,表示在线
# firmwareVersion 固件版本
# userId 可选,用户的ID,可设置为admin用户ID为1,仅Wifi类设备需要上传用户ID,配网时再分配设备给用户。
# longitude 可选,经度,使用设备定位时需要上传
# latitude 可选,纬度,使用设备定位时需要上传
# summary 可选,摘要,设备的配置信息等,json格式,对象可自定义
{
"rssi": -43,
"firmwareVersion": 1.2,
"status": 3,
"userId": "1",
"longitude": 0,
"latitude": 0,
"summary": {}
}
9.设备配网 / 扫码添加设备
Tips
有两种情况:第一种是系统不存在该设备,配网或扫码后会新建设备到用户账号下;第二种是系统已存在该设备,配网或扫码后是关联设备到用户账号下。
设备配网:通过配网可以把wifi信息配置到设备,以及新建设备到用户账号下。目前H5、微信小程序、安卓和IOS都支持单设备配网,多设备配网只有微信小程序支持。单设备配网时用户手动切换手机wifi为设备热点,然后进行配网。
扫码添加设备:用户通过扫码新建设备到自己账号下。系统中的每个设备都有二维码,在设备详情摘要中查看。二维码固定为下面JSON格式:
# type固定值为1,代表扫码添加设备
# type、deviceNumber、productId 为必填项,productName为可选项
{
"type": 1,
"deviceNumber": "D888666",
"productId": 5,
"productName": "智能插座"
}
10.多租户说明
系统默认包含五种类型账号:超级管理员,管理员、游客、租户、用户,通过角色区分。默认注册的账号为普通用户,可以重新给用户分配角色。
- 超级管理员:admin账号,且只有一个。可以管理系统所有数据。
- 管理员:可以管理系统所有数据,具体权限可自定义。
- 游客:用于项目的演示,相对于管理员,缺少数据删除的权限和部分功能权限。
- 租户:可以查询系统定义的产品分类和通用物模型,以及管理自己的产品、产品分类、通用物模型、产品固件、设备分组、场景联动和产品下的所有设备。
- 用户:管理自己的分组、设备和场景联动,以及其他用户分享给自己的设备。
11.系统账号
# 后台添加用户:默认密码为123456
管理员 admin admin123
游客账号 fastbee 123456
租户T1 fastbee-t1 123456
用户U1 fastbee-u1 123456
12.数据监控账号
# 文件位于 fastbee\springboot\fastbee-admin\src\main\resources\application-druid.yml
# 数据监控的账号密码配置,默认fastbee
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: fastbee
login-password: fastbee
13.服务器配置推荐
推荐4核8G,100G硬盘以上服务器配置,这个配置一般阿里云、腾讯云等云服务器都有对应优惠活动。
14.名词解释
物模型:物模型是产品或设备的数据模型。包括属性、功能和事件。属性指设备的状态、配置和监测数据,例如温湿度;监测数据只能读取,配置和状态可以读取和写入。功能用于执行某项特定任务,例如打开风扇,可读取和写入。事件是设备主动上报给系统,例如温度过高,设备异常等。
设备影子:用于缓存设备的属性和功能。设备离线时可以控制设备,设备上线后系统把离线控制的属性和功能下发给设备,设备作出响应。
场景联动:一种自动化业务逻辑的可视化编程方式。例如设置晚上回家这个场景,门锁一打开,就把电视、饮水机和空调打开。
15.Maven插件配置
# 文件位于 fastbee\springboot\pom.xml
# 配置bootclasspath项,windows使用`;` ,linux使用 `:`
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<compilerArguments>
<!-- rt.jar和jce.jar中间的分隔符,windows为“;”,linux为“:” -->
<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
</plugins>
16.日志文件配置
# 文件位于 fastbee\springboot\fastbee-admin\src\main\resources\lockback.xml
<!-- 日志存放路径 -->
<property name="log.path" value="/logs" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
17.文件上传路径配置
# 文件位于 fastbee\springboot\fastbee-admin\src\main\resources\application.yml
# 文件路径,以uploadPath结尾 示例( Windows配置D:/uploadPath,Linux配置 /var/data/javva/uploadPath)
profile: /uploadPath
18.实时监测没有数据
实时监测消息是用户端和设备直接交互,不会存储数据。
- 用户端发送实时监测信号,包含次数和间隔。设备订阅该实时监测信号。
- 设备根据订阅到的实时监测信号次数和间隔,发布实时监测数据。用户端订阅该监测数据,并实时显示。
19.mqtt客户端认证
服务端、web端、手机端和设备端都是一个mqtt客户端,需要一个账号密码来连接EMQX。系统使用EMQX的HTTP认证插件,约定clientId的起始部分为他的来源,如服务端的clientId以 server-
开头,前端以 web-
开头,移动端的以 phone-
开头,设备端根据加密方式以 S
或 E
开头。
- 服务端根据后端配置的Mqtt账号密码认证
- web端和phone端使用token认证
- 设备端根据产品信息里面的Mqtt账号、密码、密钥和加密方式认证
20.EMQX钩子实现设备上线和下线
- 在物联网中由于硬件或网络原因,设备可能频繁上下线。当设备离线时,用户发送指令,设备是接收不到的,如果启用影子模式该指令会存储到redis中,等到设备上线时执行,下发给设备。
- 使用Emqx作为消息服务器,系统中设备上下线的监控是由EMQX webhook来实现的,当检测到设备上下线时就会调用
http://localhost:8080/iot/tool/mqtt/webhookv5
接口,更新设备上下线状态,上线时如果设备启用影子模式,就把离线后的操作下发给设备。
21. 影子模式和在线模式区别
- 在线模式: 用户端发布属性和功能消息,设备端订阅到消息并作出响应。最后设备发布属性和功能消息,服务端订阅后存储。
- 影子模式: 用户端发布属性和功能消息,后端订阅并存储。设备上线后,后端发布变更的属性和功能消息,设备端订阅并作出响应。