脚本可编程控制器的本地功能已经基本完成,开始实现远程相关功能。
远程系统整体架构如下:
使用ESP8266的SDK实现tcp服务器和tcp客户端。
在tcp服务器的基础上编写http协议解析代码,设计简单的http服务器,处理与浏览器的数据交互,包括内置网页的下载,并使用ajax技术获取状态并保存数据。
使用html、js、css设计网页并下载存储到ESP8266模块的flash中,结合后端c语言的数据处理,实现基于网页的脚本编程、状态查看、参数设置等功能;
云服务器端,购买了一台linux云服务器主机,选择swoole作为TCP/IP通信网关;
Swoole是一个适用于生产环境的PHP异步网络通信引擎,使PHP开发者能够编写高性能异步并发TCP、UDP、Unix Socket、HTTP、WebSocket服务。
在Swoole框架中实现tcp服务器和websocket服务器,其中tcp服务器用于连接控制器和云端,控制器的tcp客户端与云服务器的tcp服务器建立TCP长连接,以便从互联网获取数据可通过TCP连接远程发送给控制器,实现对控制器的远程控制;
远程网页使用websocket客户端与Swoole的websocket服务器建立长连接,实现云服务器与网页之间的远程穿透,从而可以将控制器的状态实时推送到网页显示时间;
websocket服务器和tcp服务器之间的数据通过内存共享,PC机、网页和控制器都有唯一的编号,PC主机、控制器和网页之间的数据报文以这个编号为来源目的地址,tcp服务器和websocket服务器收到数据报文后根据目的地址进行转发,实现PC上的数据传输。 tcp服务器和websocket服务器收到数据报文后,根据目的地址进行转发,从而实现PC工具、网页和控制器之间的数据互联。
采用redis作为内存数据库,可以将控制器的状态数据临时存储在数据库中,实现电话异常报警等功能,而采用mysql作为永久数据库,存储一些配置数据。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3