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