文/Edward
服務(wù)器和公網(wǎng)IP
跳出局域網(wǎng)之后的遠(yuǎn)程控制,如果沒(méi)有中間服務(wù)器,那么以太網(wǎng)基本就沒(méi)有用武之地了,所以選用一個(gè)可以接入公網(wǎng)的服務(wù)器就非常有必要了,可以幫助兩個(gè)遠(yuǎn)程設(shè)備之間建立通訊轉(zhuǎn)發(fā)。
公網(wǎng)服務(wù)器的選取方式有三種:
1、購(gòu)買(mǎi)一套服務(wù)器設(shè)備,向網(wǎng)絡(luò)運(yùn)營(yíng)商租用一個(gè)靜態(tài)IP地址,注冊(cè)一個(gè)域名以接入英特網(wǎng)。同時(shí)需自己搭建整個(gè)服務(wù)器的架構(gòu)(如移植操作系統(tǒng),配置端口等)和上層服務(wù)(如移植Apache,安裝數(shù)據(jù)庫(kù),開(kāi)發(fā)請(qǐng)求響應(yīng)后臺(tái)程序等)。
2、租用一套云服務(wù)器ECS((Elastic Compute Service),購(gòu)買(mǎi)完成云服務(wù)器之后,服務(wù)器的基礎(chǔ)架構(gòu)就有了(如操作系統(tǒng),運(yùn)行環(huán)境等),只需要后臺(tái)自己安裝一些服務(wù)即可。如果要支持WebAPI調(diào)用,還需要去購(gòu)買(mǎi)一個(gè)域名。
3、選用第三方提供商的公有云。現(xiàn)在很多運(yùn)營(yíng)商和大公司都提供有公有云供設(shè)備接入,如阿里云,京東微聯(lián),國(guó)美云等。這些公有云都是免費(fèi)或成本低廉的。
上面三種公網(wǎng)服務(wù)器的方案,第一種無(wú)疑是最耗資金和人力的,除了需要考慮帶寬和并發(fā)量之外,安全性也是需要花費(fèi)大價(jià)錢(qián)去維護(hù)的。除了技術(shù)因素之外,場(chǎng)地,能耗等也是一大資金支出。因此目前為止除了銀行,政府,大型互聯(lián)網(wǎng)公司之外很少會(huì)去自己搭建和維護(hù)一個(gè)服務(wù)器群組了。
第二種方案看著雖然價(jià)格低廉,但是如果需要搭建一個(gè)靈活,高效,高并發(fā)的服務(wù)器也需要投入很大的資金和人力。
而選用第三種方案公有云雖然開(kāi)發(fā)的服務(wù)不及第二種方式靈活,但無(wú)疑是最方便和成本低廉的。
公有云
目前大型的公有云有很多,以下列出了幾個(gè)大型公有云接入?yún)f(xié)議的對(duì)比。
這些云平臺(tái)中無(wú)疑是Wing和OneNET平臺(tái)是最適合做公有云開(kāi)發(fā)和測(cè)試的。
OneNET
OneNET定位為PaaS服務(wù),即在物聯(lián)網(wǎng)應(yīng)用和真實(shí)設(shè)備之間搭建高效、穩(wěn)定、安全的應(yīng)用平臺(tái):面向設(shè)備,適配多種網(wǎng)絡(luò)環(huán)境和常見(jiàn)傳輸協(xié)議,提供各類硬件終端的快速接入方案和設(shè)備管理服務(wù);面向應(yīng)用層,提供豐富的API和數(shù)據(jù)分發(fā)能力以滿足各類行業(yè)應(yīng)用系統(tǒng)的開(kāi)發(fā)需求,使物聯(lián)網(wǎng)企業(yè)可以更加專注于自身應(yīng)用的開(kāi)發(fā),而不用將工作重心放在設(shè)備接入層的環(huán)境搭建上,從而縮短物聯(lián)網(wǎng)系統(tǒng)的形成周期,降低企業(yè)研發(fā)、運(yùn)營(yíng)和運(yùn)維成本。
OneNET的資源模型
具體的協(xié)議和接入推薦
這里我們選用MQTT協(xié)議接入設(shè)備。
第一步:申請(qǐng)一個(gè)OneNET的賬號(hào)以及實(shí)名認(rèn)證。https://open.iot.10086.cn
第二步:登錄OneNET平臺(tái),并且進(jìn)入開(kāi)發(fā)者中心。
第三步:進(jìn)入MQTT產(chǎn)品創(chuàng)建連接,注意需要從"多協(xié)議接入入口"進(jìn)入,而不是從"MQTT物聯(lián)網(wǎng)套件(新版)"界面進(jìn)入。
第四步:選擇MQTT(舊版),點(diǎn)擊"添加產(chǎn)品"。
第五步:在右側(cè)彈出的"添加產(chǎn)品"界面,輸入產(chǎn)品的信息后點(diǎn)擊確定。
第六步:產(chǎn)品創(chuàng)建完成之后,在彈出的對(duì)話框上面點(diǎn)擊"立即添加設(shè)備"。
進(jìn)入設(shè)備添加界面之后,我們需要記錄下"產(chǎn)品ID"這一項(xiàng),在后續(xù)的操作中會(huì)應(yīng)用到。
第七步:你以為這個(gè)界面是給你添加設(shè)備的?你錯(cuò)了,你需要切換到設(shè)備界面,才可以去添加設(shè)備。點(diǎn)擊界面左側(cè)的"設(shè)備列表"即可添加設(shè)備了。
第八步:添加你的產(chǎn)品,這里我們一次性添加兩個(gè)產(chǎn)品用于后續(xù)的收發(fā)實(shí)驗(yàn)。
創(chuàng)建設(shè)備時(shí)的設(shè)備名稱和鑒權(quán)信息可以根據(jù)自己的喜好填寫(xiě),但是在實(shí)際應(yīng)用中為了保持鑒權(quán)信息的唯一性,可以使用網(wǎng)卡的MAC地址或者手機(jī)的IMEI信息。填寫(xiě)完成之后,點(diǎn)擊"添加"就可以完成設(shè)備的添加了。
當(dāng)然產(chǎn)品和設(shè)備的創(chuàng)建,都可以使用HTML API的POST和GET方法去實(shí)現(xiàn)。
創(chuàng)建完成之后,我們可以看到設(shè)備列表里的兩個(gè)設(shè)備了。
點(diǎn)擊"詳情"就可以看到每個(gè)設(shè)備的具體信息。
第九步:測(cè)試MQTT。至此,我們可以自己開(kāi)發(fā)代碼,或者使用中移動(dòng)推薦的"MQTTSimulate Device"軟件來(lái)測(cè)試MQTT的消息訂閱和發(fā)布了。
下載連接:https://open.iot.10086.cn/doc/multiprotocol/book/develop/mqtt/device/doc-tool.html
MQTT測(cè)試
"MQTT Simulate Device"軟件下載完成之后,打開(kāi)這個(gè)軟件。
打開(kāi)完成之后,我們可以看到上面有一些信息需要填入,填入后即可連接我們剛剛注冊(cè)好的設(shè)備。首先先來(lái)連接第一個(gè)設(shè)備TestDev1。點(diǎn)擊設(shè)備列表中,TestDev1的"詳情",找到"設(shè)備ID"和"鑒權(quán)信息"。
依次將TestDev1的"設(shè)備ID"和"鑒權(quán)信息"填入調(diào)試軟件的DeviceID和AuthInfo。
接著,點(diǎn)擊控制中心右側(cè)的產(chǎn)品概況,找到我們剛剛記錄下來(lái)的產(chǎn)品ID,將其填入軟件的ProductID中。
為了保證連接不被中斷,后面的KeepAlive我們需要勾選AutoKeepAlive。服務(wù)器IP地址和端口Port是OneNET特有的,不需要修改。填寫(xiě)完成之后,點(diǎn)擊Connect即可完成連接。
連接完成之后,我們就可以在后臺(tái)的"設(shè)備列表"里面看到這個(gè)模擬設(shè)備已經(jīng)在線了。
用同樣的方法創(chuàng)建一個(gè)TestDev2的虛擬設(shè)備。
兩個(gè)設(shè)備都在線了之后,我們就可以創(chuàng)建發(fā)布消息了,在TestDev1的虛擬設(shè)備中創(chuàng)建一個(gè)訂閱消息。
接著在TestDev2中去對(duì)"TestDev2Subpublish"主題進(jìn)行發(fā)布。
接著,我們就可以看到TestDev1的"收到的Topic"里面,看到TestDev2里面發(fā)布的消息了。
了解更多