ThingsCloud云平臺(tái)與微信小程序設(shè)計(jì)
本文主要是介紹ThingsCloud云平臺(tái)的搭建及微信小程序與app的使用。
當(dāng)前文章是作為一個(gè)通用案例,介紹如何快速使用 ThingsCloud云平臺(tái) 以及 利用 ThingsCloud云平臺(tái)平臺(tái)的框架快速設(shè)計(jì)手機(jī)APP和微信小程序。 可以快速讓硬件接入,實(shí)現(xiàn)硬件上云,完成物聯(lián)網(wǎng)項(xiàng)目的開發(fā)。
之前寫了很多文章,關(guān)于阿里云
、騰訊云
、OneNet
、華為云IOT
教程等等。 這些云平臺(tái)之間都可以任意替換,他們都支持標(biāo)準(zhǔn)的MQTT協(xié)議,硬件設(shè)備都可以接入任何的云平臺(tái)。只需要改MQTT參數(shù)以及上傳的JSON格式即可。
如果你之前使用的其他云:阿里云
、騰訊云
、OneNet
、華為云IOT
?想接入ThingsCloud云平臺(tái)
?只需要照著之前云平臺(tái)里創(chuàng)建的屬性在ThingsCloud云平臺(tái)
?重新創(chuàng)建一遍即可, 本身大同小異,沒(méi)有多大的區(qū)別。
這篇文章以智能飲水機(jī)為例,講解如何給智能飲水機(jī)項(xiàng)目設(shè)計(jì)一個(gè) 微信小程序,讓硬件上云。
硬件的功能:
1.1 ThingsCloud平臺(tái)介紹
官網(wǎng):https://www.thingscloud.xyz/
ThingsCloud 是一個(gè)專注于?物聯(lián)網(wǎng)(IoT)設(shè)備連接、管理和應(yīng)用開發(fā)?的一站式平臺(tái),旨在幫助企業(yè)快速構(gòu)建和部署物聯(lián)網(wǎng)解決方案。
(1)核心功能
1.設(shè)備接入與管理
-
-
- ? 支持多種協(xié)議(MQTT、HTTP、CoAP等),兼容不同品牌和類型的物聯(lián)網(wǎng)設(shè)備。? 提供設(shè)備生命周期管理(注冊(cè)、配置、監(jiān)控、OTA升級(jí)等)。? 跨廠商設(shè)備統(tǒng)一接入,降低異構(gòu)系統(tǒng)整合難度。
-
2.?數(shù)據(jù)采集與處理
-
-
- ? 實(shí)時(shí)采集設(shè)備數(shù)據(jù)(如傳感器數(shù)據(jù)、狀態(tài)信息)。? 內(nèi)置規(guī)則引擎,支持?jǐn)?shù)據(jù)過(guò)濾、轉(zhuǎn)換、報(bào)警觸發(fā)等。? 可對(duì)接第三方云服務(wù)或本地數(shù)據(jù)庫(kù)(如MySQL、InfluxDB)。
-
3.?可視化與監(jiān)控
-
-
- ? 拖拽式儀表盤,自定義數(shù)據(jù)看板(如圖表、地圖、控件)。? 實(shí)時(shí)監(jiān)控設(shè)備狀態(tài),異常告警通過(guò)郵件/短信/Webhook通知。
-
4.?低代碼開發(fā)
5.?安全與權(quán)限
-
- ? 設(shè)備認(rèn)證(證書、密鑰)、數(shù)據(jù)加密(TLS/SSL)。? 多租戶支持,細(xì)粒度權(quán)限控制(用戶、角色、項(xiàng)目)。
(2)典型應(yīng)用場(chǎng)景
??工業(yè)物聯(lián)網(wǎng)(IIoT):設(shè)備遠(yuǎn)程監(jiān)控、預(yù)測(cè)性維護(hù)。
??智能家居/樓宇:集中管理照明、安防、能耗設(shè)備。
??智慧農(nóng)業(yè):環(huán)境傳感器數(shù)據(jù)采集與自動(dòng)化控制。
??能源管理:實(shí)時(shí)監(jiān)測(cè)電力、水、燃?xì)獾认摹?/p>
(3)優(yōu)勢(shì)特點(diǎn)
開箱即用:減少底層開發(fā),聚焦業(yè)務(wù)場(chǎng)景。
彈性擴(kuò)展:支持海量設(shè)備接入和高并發(fā)數(shù)據(jù)處理。
成本優(yōu)化:按需付費(fèi)模式,降低中小型企業(yè)部署門檻。
開放生態(tài):與主流云服務(wù)(AWS、阿里云)及硬件兼容。
ThingsCloud 平臺(tái)的資源模型通常采用分層架構(gòu)設(shè)計(jì),涵蓋設(shè)備、數(shù)據(jù)、應(yīng)用等核心要素。以下是其資源模型的?圖形化表示?及分層說(shuō)明:
資源模型圖
接入
設(shè)備ID/證書
采集
轉(zhuǎn)發(fā)
觸發(fā)動(dòng)作
物理設(shè)備ThingsCloud 平臺(tái)核心資源層設(shè)備管理數(shù)據(jù)管道規(guī)則引擎設(shè)備1..N時(shí)序數(shù)據(jù)庫(kù)外部系統(tǒng)告警/自動(dòng)化應(yīng)用層可視化儀表盤API/SDK第三方集成
1.2 登錄云平臺(tái)
(1)注冊(cè)賬戶
官網(wǎng):https://www.thingscloud.xyz/
進(jìn)來(lái)用郵箱注冊(cè),并在對(duì)應(yīng)的郵箱中點(diǎn)擊激活賬號(hào)。
地址:https://console.thingscloud.xyz/signup
注冊(cè)之后需到對(duì)應(yīng)的郵箱中激活賬號(hào)。
(2)登錄控制臺(tái)
1.3 產(chǎn)品開發(fā)
產(chǎn)品開發(fā)主要步驟為:創(chuàng)建項(xiàng)目--創(chuàng)建設(shè)備--創(chuàng)建設(shè)備類型--添加關(guān)聯(lián)設(shè)備--添加設(shè)備功能。
下面依次進(jìn)行。
(1)創(chuàng)建項(xiàng)目
免費(fèi)版
-
- ?包含較少的設(shè)備數(shù)和消息量,以及部分高級(jí)功能的限制,但完全不影響您對(duì)物聯(lián)網(wǎng)平臺(tái)基本功能的評(píng)估和體驗(yàn),以及硬件原型的開發(fā),或少量設(shè)備的個(gè)人使用。
一個(gè)用戶賬號(hào)下只可以創(chuàng)建一個(gè)免費(fèi)版項(xiàng)目。
此處注意留意自己的選區(qū),后面只有選擇對(duì)應(yīng)的區(qū)才能看到所創(chuàng)的項(xiàng)目。
(2)項(xiàng)目創(chuàng)建完成
(3)創(chuàng)建設(shè)備
在 ThingsCloud 中,設(shè)備代表了您的物理設(shè)備在云平臺(tái)對(duì)應(yīng)的一個(gè)實(shí)體,這個(gè)物理設(shè)備可以是一個(gè)光照傳感器或智能開關(guān),也可以是一個(gè)智能水表或網(wǎng)關(guān)。 創(chuàng)建設(shè)備非常簡(jiǎn)單,只需要給設(shè)備起一個(gè)名稱即可。當(dāng)然隨后您也可以修改設(shè)備名稱,或者使用 API 批量給設(shè)備更新名稱。
目前免費(fèi)版的只能創(chuàng)建3個(gè)設(shè)備,每日發(fā)消息量1000條,用戶數(shù)為3個(gè)。
所有設(shè)備--創(chuàng)建設(shè)備。
根據(jù)自己產(chǎn)品信息填寫:
(4)設(shè)備創(chuàng)建完成
創(chuàng)建完成。
(5)創(chuàng)建設(shè)備類型
(6)設(shè)備類型創(chuàng)建成功
(7)添加設(shè)備
(8)選擇設(shè)備
添加自己之前創(chuàng)建的設(shè)備
(9)關(guān)聯(lián)設(shè)備添加成功
1.4 添加功能
文檔介紹:https://www.thingscloud.xyz/docs/guide/device-type/function-define.html
功能定義是通過(guò)建立一套模型,來(lái)描述不同設(shè)備的能力,包括設(shè)備的屬性、事件和命令,從而為設(shè)備接入和應(yīng)用開發(fā)建立一套成熟的規(guī)范。功能定義對(duì)設(shè)備類型中的所有設(shè)備都有效。功能定義更像是給設(shè)備定義了一個(gè)類,其中約定了有哪些成員變量,以及變量的數(shù)據(jù)類型,另外還約定了一些特殊的方法。
屬性一般是設(shè)備自身具備的某種狀態(tài),比如溫度值、開關(guān)狀態(tài)、配置參數(shù)。 屬性可以由設(shè)備上報(bào)到云平臺(tái),或從云平臺(tái)下發(fā)到設(shè)備。云平臺(tái)會(huì)自動(dòng)保存屬性的當(dāng)前值和歷史值。
可通過(guò)添加標(biāo)準(zhǔn)功能,也可以通過(guò)添加屬性編輯功能定義。
屬性名稱:給屬性起一個(gè)簡(jiǎn)潔、明確且具有描述性的名稱,支持中文。屬性名稱不出現(xiàn)在屬性消息中。在一些設(shè)備面板界面的屬性當(dāng)前值和時(shí)序圖表中,屬性名稱會(huì)自動(dòng)代替屬性標(biāo)識(shí)符,便于瀏覽。示例:溫度、土壤濕度
屬性標(biāo)識(shí)符:只能包含:英文大小寫字母、數(shù)字、下劃線、橫線。如發(fā)布主題消息用json格式,必須與屬性字段名一致。示例:temperature
屬性類型:用來(lái)定義屬性在物理設(shè)備和云平臺(tái)之間的流動(dòng)方向,使得設(shè)備和云平臺(tái)的通信更加規(guī)范化。通過(guò)對(duì)屬性定義屬性類型,云平臺(tái)會(huì)自動(dòng)檢查屬性消息是否符合定義,并過(guò)濾掉不符合定義的屬性消息。示例:設(shè)備上報(bào),設(shè)備云端共享
數(shù)據(jù)類型:云平臺(tái)會(huì)自動(dòng)驗(yàn)證屬性的數(shù)據(jù)類型是否合法,對(duì)于不符合數(shù)據(jù)類型或不在設(shè)定范圍內(nèi)的情況,會(huì)自動(dòng)忽略處理。示例:數(shù)值,布爾
(1)明確項(xiàng)目所有屬性
該項(xiàng)目用到的所有屬性:
屬性名稱 | 屬性標(biāo)識(shí)符 | 屬性類型 | 數(shù)據(jù)類型 | 擴(kuò)展選項(xiàng) |
出水量 | angle | 設(shè)備云端共享 | 數(shù)值 | 數(shù)值范圍:100-1000 初始值:100 步長(zhǎng):10 單位:ml |
剩余水量 | water_level | 設(shè)備上報(bào) | 數(shù)值 | 數(shù)值范圍:0-100 初始值:0 步長(zhǎng):1 單位:% |
水溫 | DS18B20 | 設(shè)備上報(bào) | 數(shù)值 | 數(shù)值范圍:0-100 初始值:0 步長(zhǎng):1 單位:℃ |
水溫設(shè)置 | DS18B20_MAX | 設(shè)備云端共享 | 數(shù)值 | 數(shù)值范圍:0-100 初始值:0 步長(zhǎng):1 單位:℃ |
水質(zhì)質(zhì)量 | water_data | 設(shè)備上報(bào) | 數(shù)值 | 數(shù)值范圍:0-100 初始值:0 步長(zhǎng):1 單位:% |
出水控制 | water_ctrl | 設(shè)備云端共享 | Switch (開關(guān)量) | 0 - 關(guān) 1 - 開 |
自動(dòng)模式 | mode | 設(shè)備云端共享 | Switch (開關(guān)量) | 0 - 手動(dòng)模式 1 - 自動(dòng)模式 |
加熱控制 | heat | 設(shè)備云端共享 | Switch (開關(guān)量) | 0 - 關(guān) 1 - 開 |
水源過(guò)濾 | water_filter | 設(shè)備云端共享 | Switch (開關(guān)量) | 0 - 關(guān) 1 - 開 |
(2)添加出水量
可用添加標(biāo)準(zhǔn)功能,也可以通過(guò)添加屬性增加。
點(diǎn)擊確定之后,可在屬性下方看到添加的標(biāo)準(zhǔn)功能。
(3)添加剩余水量
添加成功
(4)添加水溫
添加成功。
(5)添加水溫設(shè)置
添加成功。
(6)添加水質(zhì)質(zhì)量
添加成功。
(7)添加出水控制
添加成功。
(8)添加自動(dòng)模式
添加完成。
(9)添加加熱控制
添加完成。
(10)添加水源過(guò)濾
添加完成。
根據(jù)項(xiàng)目實(shí)際添加功能完成。
1.5 設(shè)備登錄
(1)MQTT協(xié)議
MQTT 全稱是 Message Queuing Telemetry Transport,它是一種基于消息隊(duì)列的輕量級(jí)應(yīng)用層通信協(xié)議,實(shí)現(xiàn)了消息發(fā)布和訂閱。設(shè)備可以作為客戶端的形式通過(guò)它來(lái)發(fā)布和接收消息,實(shí)現(xiàn)數(shù)據(jù)上報(bào)和實(shí)時(shí)控制。
MQTT 是一種簡(jiǎn)單的消息傳遞協(xié)議,設(shè)計(jì)用于具有低帶寬的受限設(shè)備。因此,它是物聯(lián)網(wǎng)設(shè)備接入的完美解決方案。
當(dāng)前設(shè)備是采用MQTT協(xié)議與ThingsCloud服務(wù)器進(jìn)行通信。
MQTT物聯(lián)網(wǎng)套件產(chǎn)品架構(gòu)如下圖所示:
(2)查看設(shè)備證書與MQTT接入點(diǎn)信息
所有設(shè)備--設(shè)備--連接
點(diǎn)擊連接
接入地址說(shuō)明:https://www.thingscloud.xyz/docs/guide/connect-device/mqtt.html
在幫助文檔頁(yè)面,介紹了MQTT接入的地址和端口號(hào)。 當(dāng)前設(shè)備是單片機(jī),端口采用1883非加密端口。
(3)身份認(rèn)證總結(jié)
MQTT主機(jī):sh-3-mqtt.iot-api.com
固定的端口號(hào):?1883
username: AccessToken ? ??//點(diǎn)擊以上的復(fù)制然后粘貼出來(lái)
password: ProjectKey ? ??//點(diǎn)擊以上的復(fù)制然后粘貼出來(lái)
clientId: ? ? ? ? ? ? ? ? ?//空或任意 ? ?不對(duì) clientId 做任何限制,可隨意填寫。
需要注意的是,ThingsCloud 對(duì)同一個(gè)設(shè)備身份信息只支持一個(gè) MQTT 連接,也就是說(shuō),如果在兩個(gè)或多個(gè)物理設(shè)備中,使用同樣的 username/password 身份信息連接平臺(tái),即便 clientId 使用不同的字符串,平臺(tái)仍然將這些連接視為同一個(gè)設(shè)備,這會(huì)導(dǎo)致后一個(gè)設(shè)備連接成功后會(huì)頂?shù)糁暗脑O(shè)備連接。
(4)主題訂閱
主題訂閱是設(shè)備訂閱平臺(tái)的消息,如果設(shè)備想知道平臺(tái)下發(fā)的消息,就需要訂閱主題。
幫助文檔: https://www.thingscloud.xyz/docs/guide/connect-device/mqtt.html
需要訂閱什么數(shù)據(jù),設(shè)備端按照下面的主題格式填寫訂閱即可。
在設(shè)備端訂閱如下主題
attributes/push
(5)發(fā)布主題
發(fā)布主題: 就是設(shè)備向平臺(tái)上傳數(shù)據(jù)。
幫助文檔地址:https://www.thingscloud.xyz/docs/guide/connect-device/mqtt.html#mqtt-%E4%B8%BB%E9%A2%98%E4%B8%80%E8%A7%88
文檔里介紹了數(shù)據(jù)點(diǎn)上傳的格式:
設(shè)備上報(bào)屬性值
attributes
根據(jù)當(dāng)前設(shè)備,總結(jié)的消息格式如下:
發(fā)布主題: attributes
發(fā)布消息:
{"angle":?110,"water_level":?34,"DS18B20":?60,"DS18B20_MAX":?80,"water_data":?60,"water_ctrl":?0,"mode":?0,"heat":?0,"water_filter":?0}//這里的屬性字段就是自己之前填寫的屬性標(biāo)識(shí)符?
特別要注意開關(guān)狀態(tài)的值如果標(biāo)明用true和false,必須用true和false,而不能用1或0,而反之可以,
再者值必須與之前設(shè)置的范圍一致,否則消息會(huì)上報(bào)失敗。
數(shù)據(jù)點(diǎn)是標(biāo)準(zhǔn)的JSON結(jié)構(gòu):
?{
??"angle":?110, ? ? ? ? ?
??"water_level":?34, ? ? ? ? ??
??"DS18B20":?60, ? ??
??"DS18B20_MAX":?80, ? ? ? ? ? ? ? ?
??"water_data":?60, ? ? ? ? ?
??"water_ctrl":?0, ? ? ? ? ?
??"mode":?0, ? ? ? ??
??"heat":?0, ? ? ? ? ?
??"water_filter":?0
}
(6)MQTT登錄參數(shù)總結(jié)
MQTT協(xié)議登錄時(shí),需要輸入4個(gè)參數(shù): MQTT-主機(jī),MQTT-端口,MQTT-用戶名,MQTT-密碼。
MQTT 主機(jī):sh-3-mqtt.iot-api.com
MQTT 端口:1883
MQTT客戶端ID:為空即可
Username:wwdhfp9pqzvwfgc9
Password:****** ??//此處作打碼處理
? ??
訂閱主題: ?attributes/push
發(fā)布主題:attributes
發(fā)布消息:
{"angle":110,"water_level":34,"DS18B20":?60,"DS18B20_MAX":?80,"water_data":?60,"water_ctrl":?0,"mode":?1,"heat":?0,"water_filter":?0}
(7)MQTT工具登錄測(cè)試
前面已經(jīng)介紹了MQTT協(xié)議登錄需要用到的參數(shù),以及訂閱主題、發(fā)布主題的格式,接下來(lái)我們通過(guò)MQTT工具模擬設(shè)備登錄ThingsCloud平臺(tái),完成數(shù)據(jù)交互測(cè)試。
簡(jiǎn)單來(lái)說(shuō): 就是用軟件來(lái)模擬實(shí)際的硬件,登錄ThingsCloud平臺(tái),上傳數(shù)據(jù),走一下這個(gè)流程。
接下來(lái)根據(jù)軟件的輸入框提示,輸入對(duì)應(yīng)的參數(shù),然后登錄設(shè)備,訂閱主題,發(fā)布主題即可完成一個(gè)流程的測(cè)試。
(8)登錄控制臺(tái)查看設(shè)備
在設(shè)備列表頁(yè)面,可以看到設(shè)備已經(jīng)在線了。
在設(shè)備的當(dāng)前屬性頁(yè)面可以看到上傳的數(shù)據(jù)。
1.6 創(chuàng)建應(yīng)用
(1)創(chuàng)建用戶應(yīng)用
(2)創(chuàng)建通用版
(3)用戶應(yīng)用創(chuàng)建成功
(4)保存APPID
AppID:76548517
1.7 配置應(yīng)用UI
設(shè)備--設(shè)備類型-點(diǎn)擊已創(chuàng)建的設(shè)備--應(yīng)用配置--打開編輯器
(1)打開應(yīng)用配置
(2)打開編輯器
進(jìn)入編輯器界面,根據(jù)自己喜好添加
(3)添加組件
(4)選擇屬性
可同時(shí)選擇單個(gè)或多個(gè)屬性
(5)選擇水溫、水質(zhì)質(zhì)量、剩余水量設(shè)置屬性
添加成功。
右邊設(shè)置屬性。
(6)添加出水量、水溫設(shè)置組件
選擇屬性
根據(jù)情況設(shè)置屬性。
(7)添加開關(guān)控制組件
根據(jù)自己喜好,點(diǎn)擊設(shè)置屬性修改。
修改成功。
(8)點(diǎn)擊樣式編輯修改樣式
(9)UI界面設(shè)計(jì)完成
根據(jù)自己的喜好修改樣式編輯后保存。
1.8 創(chuàng)建用戶
(1)創(chuàng)建新用戶
應(yīng)用---用戶--新建用戶
(2)用戶創(chuàng)建成功
保存一下登錄名及密碼
后面登錄查看app需使用。
(3)用戶名及密碼
用戶名:DS **** ??
密碼:**** ? //賬號(hào)密碼為登錄app及小程序的憑證,故隱藏。
(4)關(guān)聯(lián)設(shè)備
應(yīng)用---用戶---點(diǎn)擊用戶名稱
添加關(guān)聯(lián)設(shè)備
(5)用戶關(guān)聯(lián)設(shè)備添加成功
1.9 微信小程序及手機(jī)app調(diào)試
(1)搜索微信小程序ThingsX
(2)登錄小程序
賬號(hào)、密碼為1.8章節(jié)創(chuàng)建的用戶名與設(shè)置的密碼,APPID為1.6章節(jié)創(chuàng)建應(yīng)用時(shí)保存的APPID.
(3)查看對(duì)應(yīng)設(shè)備
當(dāng)前設(shè)備為離線狀態(tài),所顯示數(shù)據(jù)為歷史數(shù)據(jù)。
(4)MQTT調(diào)試助手調(diào)試
(5)查看控制臺(tái)
(6)查看微信小程序
現(xiàn)在已經(jīng)能實(shí)時(shí)看到MQTT調(diào)試助手模擬上傳的數(shù)據(jù)。
至此,微信小程序搭建完成。
(7)使用ThingsX app
文檔介紹地址:https://www.thingscloud.xyz/docs/guide/customer-app/common-app.html#下載-android-app
安卓與蘋果app下載地址:https://www.thingscloud.xyz/app/thingsx
拷貝到手機(jī)安裝-登錄
查看app界面
手機(jī)app與微信小程序的使用不一樣,不再?gòu)?fù)述。
后續(xù)也可以根據(jù)自己的實(shí)際需要修改云平臺(tái)以及UI界面,微信小程序與app會(huì)同步修改。