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