之前一直想要使用mqtt協(xié)議模擬tcp協(xié)議的實時返回監(jiān)控參數(shù)的功能,經過幾個月的摸索和試驗,終于將同步服務的開發(fā)摸透,僅僅看飛燕平臺的技術文檔是看不懂的,核心文檔鏈接如下:

創(chuàng)新互聯(lián)服務項目包括濟陽網站建設、濟陽網站制作、濟陽網頁制作以及濟陽網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,濟陽網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到濟陽省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
1、什么是rrpc,同步服務如何使用rrpc實現(xiàn)實時返回的效果
;aly_as=odhFNfAc
阿里將同步服務使用rrpc
2、服務的數(shù)據(jù)格式
;aly_as=KNMEpUOP
看完文檔還有不懂的同學們,我給你準備了總結:
1.RRPC有專用的topic,服務端的實現(xiàn),在物的模型服務中有invoke的請求方式和返回結果。
設備端根據(jù)文檔1中的訂閱topic與上報topic。上報的數(shù)據(jù)格式根據(jù)文檔2上報。
例子:
1.按照物的服務調用方法請求
2.設備端訂閱到服務的下發(fā),將msgid從topic上面截取下來此處為1214836938775870464
3.將msgid填充到上報topic結尾,數(shù)據(jù)格式注意param改為data,加上code,其余數(shù)據(jù)對照功能定義中的物模型
4.在調試窗口中找到服務調用菜單
顯示上報成功,注意服務的解析與屬性事件不一樣,通過通用打印只能打印出result ok,要進一步解析data出來再打印。
在本文中,我們將向您展示如何使用阿里云IoT平臺輕松將Android Things連接到您的物聯(lián)網(IoT)網絡,我們將為該項目構造一個示例:功能性甲醛和溫度傳感器。有些人可能不了解Android Things,簡單來說, 它就是讓開發(fā)者可以使用Android開發(fā)工具開發(fā)嵌入式設備 。
項目設備清單
NXP i.MX7D
設備接線圖
在設置硬件之后,是時候在阿里云IoT平臺上配置軟件了。
首先,導航到物聯(lián)網控制臺并激活阿里云IoT。創(chuàng)建高級產品并添加產品屬性定義:
Android Things設備開發(fā)
1、使用Android Studio創(chuàng)建Android Things項目,并授予網絡權限
2、將“eclipse.paho.mqtt”存儲庫添加到gradle
3、通過I2C讀取DHT12數(shù)據(jù)
4、通過UART獲取Ze08CH2O數(shù)據(jù)
5、創(chuàng)建阿里云IoT連接并報告數(shù)據(jù)
設備啟動后,您可以在阿里云IoT控制臺上查看設備的實時數(shù)據(jù), 設備管理 - 運行狀態(tài) 。
此項目在GIT上的地址是:,有興趣的朋友可以試試。
有很多通信模塊只有TCP功能,沒有MQTT功能,比如WIFI,W5500等模塊,還有一些NBIOT模塊,但是又想連接阿里云物聯(lián)網平臺,官方提供了操作系統(tǒng),需要自己移植,很麻煩,比較難看得懂。就在想有沒有一些簡單一定的方法。
心想MQTT是基于TCP的,能否使用TCP轉MQTT?因此就想使用TCP協(xié)議然后轉MQTT協(xié)議連接阿里云物聯(lián)網平臺,經過試驗證明是可以的。
首先我們先分析一下如何登陸接入Onenet平臺。
先從它數(shù)據(jù)格式開始分析。首先我們要從后臺取出三個信息,我們以這個為例。
我們把產品ID,設備名稱,設備秘鑰,簡稱三要素 (具體是什么看你自己的設備)
其實阿里云物聯(lián)網平臺的MQTT協(xié)議用的就是標準的,不過它加入了自己的認證方式。
MQTT協(xié)議需要上傳四個參數(shù),報活時間,clientID,用戶名,密碼。
那么阿里云的就在clientID,用戶名,密碼做了手腳。
clientID比較長,按照一定的格式
用戶名:設備名和秘鑰組成
密碼:使用了加密串進行了加密,有sha1或者MD5加密方式
下面我們來介紹一下
MQTT接入都是發(fā)十六進制的數(shù)據(jù)。
么我們發(fā)送的時候就是這樣子的一串數(shù)據(jù)
0x74 0x00 0x04 0x4d 0x51 0x54 0x54 0x04 0xC0 0078 0033 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67
0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c 0009
0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34 0028 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36
十六進制解釋
數(shù)據(jù)長度:0x74
協(xié)議數(shù)據(jù)長度 0x00 0x04
協(xié)議類型: 0x4d 0x51 0x54 0x54
協(xié)議數(shù)據(jù): 0x04 0xC0
keepAlive數(shù)據(jù):0078
ClientID長度:0033
ClientID: 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67 0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c
用戶名:0009
用戶名: 0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34
密碼長度:0028
密碼: 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36復制代碼上面的就是連接服務器的連接包
下面呢,我們來做個發(fā)布包(上傳數(shù)據(jù)到服務器)
0x30 0x1D 0009 2f7379732f706f7374 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d
十六進制數(shù)據(jù)解釋
數(shù)據(jù)頭:0x30
數(shù)據(jù)長度:0x1D
TopicName數(shù)據(jù)長度:0009
TopicName數(shù)據(jù)內容:2f7379732f706f7374
主體json數(shù)據(jù): 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d復制代碼以上就是連接阿里云的數(shù)據(jù)包格式及發(fā)布數(shù)據(jù)的格式,由于時間問題沒有做訂閱的數(shù)據(jù)包分析,下一次更新訂閱的內容。
容器部署即使用 docker 化部署 golang 應用程序,這是在云服務時代最流行的部署方式,也是最推薦的部署方式。
跨平臺交叉編譯是 golang 的特點之一,可以非常方便地編譯出我們需要的目標服務器平臺的版本,而且是靜態(tài)編譯,非常容易地解決了運行依賴問題。
使用以下指令可以靜態(tài)編譯 Linux 平臺 amd64 架構的可執(zhí)行文件:
生成的 main 便是我們靜態(tài)編譯的,可部署于 Linux amd64 上的可執(zhí)行文件。
我們需要將該可執(zhí)行文件 main 編譯生成 docker 鏡像,以便于分發(fā)及部署。 Golang 的運行環(huán)境推薦使用 alpine 基礎系統(tǒng)鏡像,編譯出的容器鏡像約為 20MB 左右。
一個參考的 Dockerfile 文件如下:
其中,我們的基礎鏡像使用了 loads/alpine:3.8 ,中國國內的用戶推薦使用該基礎鏡像,基礎鏡像的 Dockerfile 地址: ,倉庫地址:
隨后使用 " docker build -t main . " 指令編譯生成名為 main 的 docker 鏡像。
需要注意的是,在某些項目的架構設計中, 靜態(tài)文件 和 配置文件 可能不會隨著鏡像進行編譯發(fā)布,而是分開進行管理和發(fā)布。
例如,使用 MVVM 模式的項目中(例如使用 vue 框架),往往是前后端非常獨立的,因此在鏡像中往往并不會包含 public 目錄。而使用了 配置管理中心 (例如使用 consul / etcd / zookeeper )的項目中,也往往并不需要 config 目錄。
因此對于以上示例的 Dockerfile 的使用,僅作參考,根據(jù)實際情況請進行必要的調整。
使用以下指令可直接運行剛才編譯成的鏡像:
容器的分發(fā)可以使用 docker 官方的平臺: ,國內也可以考慮使用阿里云: 。
在企業(yè)級生產環(huán)境中, docker 容器往往需要結合 kubernetes 或者 docker swarm 容器編排工具一起使用。
容器編排涉及到的內容比較多,感興趣的同學可以參考以下資料:
本文名稱:go語言連接阿里云物聯(lián)網 連接阿里云物聯(lián)網平臺
當前URL:http://chinadenli.net/article18/ddocggp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供全網營銷推廣、品牌網站建設、建站公司、網站策劃、企業(yè)網站制作、移動網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)