mqtt与硬件交互_一个关于小程序Iot的具体实现(MQTT版)
原標(biāo)題:一個(gè)關(guān)于小程序Iot的具體實(shí)現(xiàn)(MQTT版)
Iot,這個(gè)名詞應(yīng)該很多人都聽過了吧,即大數(shù)據(jù)、Ai等興起后也緊跟著研發(fā)大潮流的到來,即物聯(lián)網(wǎng)。傳統(tǒng)簡單的說就是智能化、程序化的控制硬件設(shè)施,大家最容易想到的應(yīng)該是智能家居,通過一個(gè)App或者遙控進(jìn)行對家具設(shè)置的遠(yuǎn)程控制。而今天要說的是人與物之間的通信控制,且通過互聯(lián)網(wǎng)產(chǎn)品來執(zhí)行人的命令,而機(jī)器進(jìn)行應(yīng)答。
說到小程序控制硬件,大家應(yīng)該立馬想到什么產(chǎn)品呢?某拜、某FO、售貨機(jī)等等,他們的架構(gòu)上會(huì)大致上有一個(gè)共通點(diǎn)就是存在或者類似的云Iot功能。就拿某拜的云架構(gòu)來說就用了Azure IoT 中心、存儲(chǔ)、虛擬機(jī)等服務(wù)。
那么我們可以展望更大的架構(gòu)與實(shí)現(xiàn)、或者希望能配出、實(shí)現(xiàn)出類似的功能也好,但是我們還是要一步一步的實(shí)現(xiàn)一下這個(gè)功能或小產(chǎn)品的功效。
目標(biāo)擬定:用戶控制端是小程序,硬件端我們選用簡單的售貨機(jī)(或快遞柜),我們要實(shí)現(xiàn)的就是針對性的通過小程序命令通知售貨機(jī)對應(yīng)的柜子開鎖關(guān)鎖。
那么我們需要構(gòu)思對應(yīng)的簡易版架構(gòu)還有對接的實(shí)現(xiàn)方式了!
目前傳統(tǒng)且大家熟悉的前后端交互方式應(yīng)該大部分是REST API吧,那么我們在小程序(將它僅僅視為一個(gè)單純的前端展示)與后臺(tái)(這里就是下圖的Iot,我們可以用SpringBoot+Netty構(gòu)建一個(gè)Iot中心)之間的通信就選用API的形式,后臺(tái)開放對應(yīng)的指令接口,由小程序去調(diào)用,這里可能還有一個(gè)業(yè)務(wù)就是:那么服務(wù)器對小程序的主動(dòng)通信還有通知呢?這里就不細(xì)講了,這個(gè)可以當(dāng)作是產(chǎn)品迭代的后期考慮問題,大家也可以考慮下實(shí)現(xiàn)方式。
本文小程序?yàn)镸QTT調(diào)試測試Demo,未做REST API對接,下一篇文章會(huì)著重介紹。
那么Iot中心與售貨機(jī)(快遞柜)的通信呢?可能只做軟件的同學(xué)一般比較少接觸到,我一開始做的時(shí)候也是很懵,不過大致說下就是不同的通信協(xié)議來實(shí)現(xiàn)通信,我們就拿單片機(jī)來說的話,可以了解到它支持多少種通信協(xié)議,比如MQTT或者TCP/IP等等。
這個(gè)版本我們就做MQTT的通信版本,那么流程圖就如下啦。
【圖片】
選擇已有的現(xiàn)成Github資源,本次選用paho.js用來方便MQTT通信
本文將著重講解小程序與MQTT之間的對接通信,暫未出現(xiàn)API調(diào)用
小程序端:你需要一定的小程序開發(fā)基礎(chǔ),我這次選擇了友人的一個(gè)Github項(xiàng)目作為我小程序的Demo
后臺(tái)端:使用SpringBoot+Netty做一個(gè)對接MQTT和小程序的小的Iot中心
MQTT硬件模擬端:我選用了Github權(quán)威的Eclipse的paho,mqtt.java作為模擬
很簡單,你需要實(shí)現(xiàn)的就是核心的后臺(tái)端也是你最擅長的Java端。
當(dāng)你的職位做到一定的程度后,你可能需要做的不是去寫底層詳細(xì)的實(shí)現(xiàn)代碼,而是一個(gè)這樣實(shí)現(xiàn)的模板或者思路與流程,所以我們暫時(shí)先做一個(gè)簡單版的小程序到硬件之間的通信流程。
netty很好,這里我不多說,因BAT大廠對高級的定義一般也是需要了解到Netty的源碼程度等。那么你需要基于SpringBoot去加Netty,自定義對應(yīng)的編解碼內(nèi)容,由于我們使用的paho,所以有它本身的一些格式,大致的思路就是定義協(xié)議規(guī)范,通信這塊其實(shí)相較簡單因?yàn)楹艽笠徊糠謓etty其實(shí)已經(jīng)幫你做好了。
小程序的socket通信是ws的開頭,那么我們的Iot中心也需要有ws的通信通道。
這里我們的通信地址是:ws://localhost:8094/mqtt
并未使用wss,一樣的說法吧,先把簡單的實(shí)現(xiàn)了再想復(fù)雜的。
那么小程序?qū)?yīng)也是連接這個(gè)地址,小程序可以調(diào)式下啟動(dòng)連接,而Mqtt的Java硬件模擬端也是同一個(gè)地址的連接。
對于MQTT而言,小程序需要去訂閱一個(gè)主題,Java模擬端也正對這個(gè)主題去發(fā)送信息,如果兩端都發(fā)送接收正常且都通過了我們的Iot中心,那么我們的這個(gè)小項(xiàng)目就是已經(jīng)成功啦!
責(zé)任編輯:
總結(jié)
以上是生活随笔為你收集整理的mqtt与硬件交互_一个关于小程序Iot的具体实现(MQTT版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: phpcms调用栏目描述_phpcms标
- 下一篇: 可疑文件_Windows 10 Defe