Tips
遇到未解決的問題或者Bug,請?zhí)峤?Issue
1. 后端報錯提示找不到數(shù)據庫表
Mysql版本不能低于5.7,建議使用5.7版本。Linux中安裝數(shù)據庫,配置大小寫敏感,在 /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
命令安裝?;蛘甙惭bnpm6.X版本。
5. 前端install時候報錯 syscall mkdirnpm ERR
刪除C:\Users{賬戶}\下的.npmrc文件即可。
6. 前端項目打包時提示 Entrypoint size limit 的警告
問題:vue-cli打包項目時警告: entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
解決:直接在vue.config.js文件中配置:
7. 獲取到實時監(jiān)測數(shù)據,設備首頁和運行狀態(tài)不顯示監(jiān)測到的數(shù)據
實時監(jiān)測數(shù)據是用來實時查看的,不會存儲到數(shù)據庫,所以對應的監(jiān)測值沒有改變??梢酝ㄟ^設備端定時上報屬性(監(jiān)測數(shù)據是屬性的一種),存儲到數(shù)據庫;或者系統(tǒng)中設置定時上報屬性功能。
8.固定大屏添加方式
- 開源版本切換到商業(yè)版本,前端需要重新安裝一下包,執(zhí)行
npm install
- 后臺添加大屏展示菜單:系統(tǒng)管理 -> 菜單管理 -> 新增
上級菜單:主類目
菜單類型:目錄
菜單圖標:monitor-a
菜單名稱:大屏展示
是否外鏈:是
顯示排序:5
路由地址:https://iot.m.btsdy.com/bigScreen https://iot.m.btsdy.com改為自己服務器的地址
顯示狀態(tài):顯示
菜單狀態(tài):正常
9.設備激活/設備狀態(tài)
設備有 未激活 在線離線 禁用 幾種狀態(tài),有三種方式可以更改設備狀態(tài):
- 設備認證,認證成功后狀態(tài)變更為在線
- 發(fā)布設備信息主題,主題消息內容中狀態(tài)固定為3=在線
# 描述:1.設備上電后發(fā)布設備信息; 2.設備接收到設備信息指令后發(fā)布設備信息
# rssi 設備信號(信號極好[-55— 0],信號好[-70— -55],信號一般[-85— -70],信號差[-100— -85])
# status 設備狀態(tài),固定為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": {}
}
- 設備斷電或者離線后,狀態(tài)更新為離線。
設備離線需要超過設備端配置的?;?心跳時間的1.5倍
- 例如:設備端配置了10S的
keep-alive
值,則設備的離線時間是10 X 1.5 = 15s - 注意:設備端配置的保活時間要小于系統(tǒng)配置的?;顣r間,系統(tǒng)默認配置70s,則設備端配置的?;顣r間不能大于60S
10.設備配網 / 掃碼添加設備
Tips
有兩種情況:第一種是系統(tǒng)不存在該設備,配網或掃碼后會新建設備到用戶賬號下;第二種是系統(tǒng)已存在該設備,配網或掃碼后是關聯(lián)設備到用戶賬號下。
設備配網:通過配網可以把wifi信息配置到設備,以及新建設備到用戶賬號下。目前H5、微信小程序、安卓和IOS都支持單設備配網,多設備配網只有微信小程序支持。單設備配網時用戶手動切換手機wifi為設備熱點,然后進行配網。
掃碼添加設備:用戶通過掃碼新建設備到自己賬號下。系統(tǒng)中的每個設備都有二維碼,在設備詳情摘要中查看。二維碼固定為下面JSON格式:
# type固定值為1,代表掃碼添加設備
# type、deviceNumber、productId 為必填項,productName為可選項
{
"type": 1,
"deviceNumber": "D888666",
"productId": 5,
"productName": "智能插座"
}
11.多租戶說明
系統(tǒng)默認包含五種類型賬號:超級管理員,管理員、游客、租戶、用戶,通過角色區(qū)分。默認注冊的賬號為普通用戶,可以重新給用戶分配角色。
- 超級管理員:admin賬號,且只有一個??梢怨芾硐到y(tǒng)所有數(shù)據。
- 管理員:可以管理系統(tǒng)所有數(shù)據,具體權限可自定義。
- 游客:用于項目的演示,相對于管理員,缺少數(shù)據刪除的權限和部分功能權限。
- 租戶:可以查詢系統(tǒng)定義的產品分類和通用物模型,以及管理自己的產品、產品分類、通用物模型、產品固件、設備分組、場景聯(lián)動和產品下的所有設備。
- 用戶:管理自己的分組、設備和場景聯(lián)動,以及其他用戶分享給自己的設備。
12.系統(tǒng)賬號
# 后臺添加用戶:默認密碼為123456
管理員 admin admin123
游客賬號 fastbee 123456
租戶T1 fastbee-t1 123456
用戶U1 fastbee-u1 123456
13.數(shù)據監(jiān)控賬號
# 文件位于 fastbee\springboot\fastbee-admin\src\main\resources\application-druid.yml
# 數(shù)據監(jiān)控的賬號密碼配置,默認fastbee
statViewServlet:
enabled: true
# 設置白名單,不填則允許所有訪問
allow:
url-pattern: /druid/*
# 控制臺管理用戶名和密碼
login-username: fastbee
login-password: fastbee
14.服務器配置推薦
推薦4核8G,100G硬盤以上服務器配置,這個配置一般阿里云、騰訊云等云服務器都有對應優(yōu)惠活動。
15.名詞解釋
物模型:物模型是產品或設備的數(shù)據模型。包括屬性、功能和事件。屬性指設備的狀態(tài)、配置和監(jiān)測數(shù)據,例如溫濕度;監(jiān)測數(shù)據只能讀取,配置和狀態(tài)可以讀取和寫入。功能用于執(zhí)行某項特定任務,例如打開風扇,可讀取和寫入。事件是設備主動上報給系統(tǒng),例如溫度過高,設備異常等。
設備影子:用于緩存設備的屬性和功能。設備離線時可以控制設備,設備上線后系統(tǒng)把離線控制的屬性和功能下發(fā)給設備,設備作出響應。
場景聯(lián)動:一種自動化業(yè)務邏輯的可視化編程方式。例如設置晚上回家這個場景,門鎖一打開,就把電視、飲水機和空調打開。
16.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>
17.日志文件配置
# 文件位于 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" />
18.文件上傳路徑配置
# 文件位于 fastbee\springboot\fastbee-admin\src\main\resources\application.yml
# 文件路徑,以uploadPath結尾 示例( Windows配置D:/uploadPath,Linux配置 /var/data/javva/uploadPath)
profile: /uploadPath
19.實時監(jiān)測沒有數(shù)據
實時監(jiān)測消息是用戶端和設備直接交互,不會存儲數(shù)據。
- 用戶端發(fā)送實時監(jiān)測信號,包含次數(shù)和間隔。設備訂閱該實時監(jiān)測信號。
- 設備根據訂閱到的實時監(jiān)測信號次數(shù)和間隔,發(fā)布實時監(jiān)測數(shù)據。用戶端訂閱該監(jiān)測數(shù)據,并實時顯示。
20.mqtt客戶端認證
服務端、web端、手機端和設備端都是一個mqtt客戶端,需要一個賬號密碼來連接EMQX。系統(tǒng)使用EMQX的HTTP認證插件,約定clientId的起始部分為他的來源,如服務端的clientId以 server-
開頭,前端以 web-
開頭,移動端的以 phone-
開頭,設備端根據加密方式以 S
或 E
開頭。
- 服務端根據后端配置的Mqtt賬號密碼認證
- web端和phone端使用token認證
- 設備端根據產品信息里面的Mqtt賬號、密碼、密鑰和加密方式認證
21.EMQX鉤子實現(xiàn)設備上線和下線
- 在物聯(lián)網中由于硬件或網絡原因,設備可能頻繁上下線。當設備離線時,用戶發(fā)送指令,設備是接收不到的,如果啟用影子模式該指令會存儲到redis中,等到設備上線時執(zhí)行,下發(fā)給設備。
- 使用Emqx作為消息服務器,系統(tǒng)中設備上下線的監(jiān)控是由EMQX webhook來實現(xiàn)的,當檢測到設備上下線時就會調用
http://localhost:8080/iot/tool/mqtt/webhookv5
接口,更新設備上下線狀態(tài),上線時如果設備啟用影子模式,就把離線后的操作下發(fā)給設備。
22. 影子模式和在線模式區(qū)別
- 在線模式: 用戶端發(fā)布屬性和功能消息,設備端訂閱到消息并作出響應。最后設備發(fā)布屬性和功能消息,服務端訂閱后存儲。
- 影子模式: 用戶端發(fā)布屬性和功能消息,后端訂閱并存儲。設備上線后,后端發(fā)布變更的屬性和功能消息,設備端訂閱并作出響應。