支持和Web服务器通信的物联网网关
2017-06-22
随着物联网的发展,越来越多的设备需要连接到云端。其中的设备有各类仪表、工业设备、采集设备、传感器,这些设备都以串口(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命令通信的物联网网关——包括下发和上发数据——可以大大降低云端程序的开发工作量,该类物联网网关方便了物联网网设备的集成和接入。