隨著物聯(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ù)皆贫?。但是各種設(shè)備和云端服務(wù)器通信的時(shí)候由于協(xié)議不同,開發(fā)者需要開發(fā)各類后臺(tái)程序以配合數(shù)據(jù)的轉(zhuǎn)化和存儲(chǔ)。
新的“支持和Web服務(wù)器通信的物聯(lián)網(wǎng)”網(wǎng)關(guān)可以直接使用POST、GET命令和Web服務(wù)器通信,用戶只需要編寫php代碼就可以實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)化和存儲(chǔ)簡(jiǎn)化了物聯(lián)網(wǎng)上位機(jī)接口的開發(fā)。
此類物聯(lián)網(wǎng)網(wǎng)關(guān)的最大優(yōu)點(diǎn)是:節(jié)省了開發(fā)復(fù)雜度,網(wǎng)關(guān)可以直接以GET/POST指令和云服務(wù)器直接通信。
原理
下面講一下此類網(wǎng)關(guān)的用法和原理。我們知道,當(dāng)我們?cè)跒g覽器中輸入:以下鏈接的時(shí)候?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ù)器上運(yùn)行的php程序就可以正確讀取到data=123456這樣的數(shù)據(jù)。
但是傳統(tǒng)的透?jìng)魇轿锫?lián)網(wǎng)網(wǎng)關(guān)的問題在于:
1. 各類儀表發(fā)送給物聯(lián)網(wǎng)網(wǎng)關(guān)的數(shù)據(jù)并不是標(biāo)準(zhǔn)的GET指令,所以物聯(lián)網(wǎng)網(wǎng)關(guān)需要進(jìn)行一個(gè)數(shù)據(jù)轉(zhuǎn)化,比如在數(shù)據(jù)的前面增加GET /1.php?data=的數(shù)據(jù),在后面增加HTTP/1.1等數(shù)據(jù)。
2. 各類儀表發(fā)送的數(shù)據(jù)是十六機(jī)制數(shù)據(jù),但是web服務(wù)器容易處理字符串string數(shù)據(jù),所以需要將十六進(jìn)制轉(zhuǎn)化為字符串。
實(shí)現(xiàn)方法
卓嵐ZLAN5143、ZLAN8343N等產(chǎn)品可以實(shí)現(xiàn)以上功能。使用步驟如下:
1. 在計(jì)算機(jī)上編寫一個(gè)配置文件,內(nèi)容如下,然后下載到物聯(lián)網(wǎng)網(wǎng)關(guān)內(nèi)。
注意這里的$符號(hào)就表示串口收到的數(shù)據(jù),物聯(lián)網(wǎng)網(wǎng)關(guān)收到數(shù)據(jù)后將會(huì)用串口收到的數(shù)據(jù)替換$,然后將這個(gè)配置文件的內(nèi)容上傳給web服務(wù)器,這樣web服務(wù)器就可以按照GET指令的格式接收到串口數(shù)據(jù)。
2. 如果需要先將數(shù)據(jù)格式從十六進(jìn)制轉(zhuǎn)化為字符串,則用#符號(hào)代替$符號(hào)來寫配置文件。
從這里我們看到此類網(wǎng)關(guān)不僅實(shí)現(xiàn)的是對(duì)Web服務(wù)器GET指令的支持,而且可以靈活設(shè)計(jì),它是一種靈活地在串口數(shù)據(jù)前面增加前綴、后面增加后綴的通用方法。
web服務(wù)器下發(fā)
以上的方法只是實(shí)現(xiàn)了數(shù)據(jù)從串口到網(wǎng)絡(luò)時(shí),串口hex數(shù)據(jù)轉(zhuǎn)變?yōu)镚ET命令的功能。但是如果Web服務(wù)需要按照GET命令下發(fā)數(shù)據(jù),此時(shí)也需要將其中的某部分?jǐn)?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命令時(shí),GET命令中的有效數(shù)據(jù)(這里是61626364656667)被轉(zhuǎn)化為十六進(jìn)制數(shù)據(jù)(abcdefg)從網(wǎng)關(guān)的串口輸出,發(fā)給控制器、執(zhí)行器。如下圖所示:
實(shí)現(xiàn)的方法是在原來的配置文件第一行增加:NFL: data=# HTTP/1.1,物聯(lián)網(wǎng)網(wǎng)關(guān)在收到任何網(wǎng)絡(luò)數(shù)據(jù)的時(shí)候?qū)?huì)搜索前綴data=和后綴HTTP/1.1,將中間的部分提取出來,并轉(zhuǎn)化為十六進(jìn)制從串口輸出。
Web服務(wù)器下發(fā)功能的實(shí)現(xiàn),還得益于卓嵐物聯(lián)網(wǎng)在作為TCP客戶端上傳數(shù)據(jù)的時(shí)候,也可以作為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è)備的集成和接入。