隨著物聯(lián)網(wǎng)的發(fā)展,越來越多的設(shè)備需要連接到云端。其中的設(shè)備有各類儀表、工業(yè)設(shè)備、采集設(shè)備、傳感器,這些設(shè)備都以串口(RS232、RS485)居多,所以可以通過串口轉(zhuǎn)TCP、串口轉(zhuǎn)Wifi等物聯(lián)網(wǎng)網(wǎng)關(guān),將數(shù)據(jù)傳輸?shù)皆贫恕5歉鞣N設(shè)備和云端服務(wù)器通信的時候由于協(xié)議不同,開發(fā)者需要開發(fā)各類后臺程序以配合數(shù)據(jù)的轉(zhuǎn)化和存儲。
新的“支持和Web服務(wù)器通信的物聯(lián)網(wǎng)”網(wǎng)關(guān)可以直接使用POST、GET命令和Web服務(wù)器通信,用戶只需要編寫php代碼就可以實現(xiàn)數(shù)據(jù)的轉(zhuǎn)化和存儲簡化了物聯(lián)網(wǎng)上位機接口的開發(fā)。
此類物聯(lián)網(wǎng)網(wǎng)關(guān)的最大優(yōu)點是:節(jié)省了開發(fā)復(fù)雜度,網(wǎng)關(guān)可以直接以GET/POST指令和云服務(wù)器直接通信。
原理
下面講一下此類網(wǎng)關(guān)的用法和原理。我們知道,當(dāng)我們在瀏覽器中輸入:以下鏈接的時候?qū)⒁訥ET指令的方式向Web服務(wù)器提交數(shù)據(jù)。
提交的數(shù)據(jù)內(nèi)容為:
該數(shù)據(jù)內(nèi)容將直接發(fā)到Web服務(wù)器的(這里的服務(wù)器IP是192.168.1.180)80端口。web服務(wù)器上運行的php程序就可以正確讀取到data=123456這樣的數(shù)據(jù)。
但是傳統(tǒng)的透傳式物聯(lián)網(wǎng)網(wǎng)關(guān)的問題在于:
1. 各類儀表發(fā)送給物聯(lián)網(wǎng)網(wǎng)關(guān)的數(shù)據(jù)并不是標準的GET指令,所以物聯(lián)網(wǎng)網(wǎng)關(guān)需要進行一個數(shù)據(jù)轉(zhuǎn)化,比如在數(shù)據(jù)的前面增加GET /1.php?data=的數(shù)據(jù),在后面增加HTTP/1.1等數(shù)據(jù)。
2. 各類儀表發(fā)送的數(shù)據(jù)是十六機制數(shù)據(jù),但是web服務(wù)器容易處理字符串string數(shù)據(jù),所以需要將十六進制轉(zhuǎn)化為字符串。
實現(xiàn)方法
卓嵐ZLAN5143、ZLAN8343N等產(chǎn)品可以實現(xiàn)以上功能。使用步驟如下:
1. 在計算機上編寫一個配置文件,內(nèi)容如下,然后下載到物聯(lián)網(wǎng)網(wǎng)關(guān)內(nèi)。
注意這里的$符號就表示串口收到的數(shù)據(jù),物聯(lián)網(wǎng)網(wǎng)關(guān)收到數(shù)據(jù)后將會用串口收到的數(shù)據(jù)替換$,然后將這個配置文件的內(nèi)容上傳給web服務(wù)器,這樣web服務(wù)器就可以按照GET指令的格式接收到串口數(shù)據(jù)。
2. 如果需要先將數(shù)據(jù)格式從十六進制轉(zhuǎn)化為字符串,則用#符號代替$符號來寫配置文件。
從這里我們看到此類網(wǎng)關(guān)不僅實現(xiàn)的是對Web服務(wù)器GET指令的支持,而且可以靈活設(shè)計,它是一種靈活地在串口數(shù)據(jù)前面增加前綴、后面增加后綴的通用方法。
web服務(wù)器下發(fā)
以上的方法只是實現(xiàn)了數(shù)據(jù)從串口到網(wǎng)絡(luò)時,串口hex數(shù)據(jù)轉(zhuǎn)變?yōu)镚ET命令的功能。但是如果Web服務(wù)需要按照GET命令下發(fā)數(shù)據(jù),此時也需要將其中的某部分數(shù)據(jù)轉(zhuǎn)發(fā)到串口。
例如:當(dāng)Web服務(wù)器向物聯(lián)網(wǎng)網(wǎng)關(guān)(IP地址為192.168.0.200)的端口8080發(fā)送GET命令時,GET命令中的有效數(shù)據(jù)(這里是61626364656667)被轉(zhuǎn)化為十六進制數(shù)據(jù)(abcdefg)從網(wǎng)關(guān)的串口輸出,發(fā)給控制器、執(zhí)行器。如下圖所示:
實現(xiàn)的方法是在原來的配置文件第一行增加:NFL: data=# HTTP/1.1,物聯(lián)網(wǎng)網(wǎng)關(guān)在收到任何網(wǎng)絡(luò)數(shù)據(jù)的時候?qū)阉髑熬Ydata=和后綴HTTP/1.1,將中間的部分提取出來,并轉(zhuǎn)化為十六進制從串口輸出。
Web服務(wù)器下發(fā)功能的實現(xiàn),還得益于卓嵐物聯(lián)網(wǎng)在作為TCP客戶端上傳數(shù)據(jù)的時候,也可以作為TCP服務(wù)器接收Web服務(wù)器的下發(fā)連接和數(shù)據(jù)。
總結(jié)
能夠直接和Web服務(wù)器以GET命令通信的物聯(lián)網(wǎng)網(wǎng)關(guān)——包括下發(fā)和上發(fā)數(shù)據(jù)——可以大大降低云端程序的開發(fā)工作量,該類物聯(lián)網(wǎng)網(wǎng)關(guān)方便了物聯(lián)網(wǎng)網(wǎng)設(shè)備的集成和接入。