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