esp8266通讯与控制的思考

一、场景

定时将小灯的开关状态上传给公网服务器。公网服务器充当服务端角色,接收ESP8266发送的信息(将小灯或温度传感器信息记录到MySql数据库中),并根据需要生成JSON指令来控制小灯或温度器的开关状态(1表示高电平,0表示低电平)。最后,公网服务器将控制小灯的JSON信息发送给ESP8266,ESP8266接收并解析指令,以此来控制小灯或温度器的引脚输出高低电平,实现对元件的远程控制。

 

二、esp8266充当的角色

在这个场景中,ESP8266充当客户端角色,因为它是主动连接公网服务器并向其发送信息。公网服务器充当服务端角色,因为它接收来自ESP8266的请求,并返回控制小灯的指令(JSON信息)。

 

2.1 步骤

ESP8266作为客户端,定时向公网服务器发送小灯的状态信息。你需要在ESP8266上编写程序,设置定时器或延时发送HTTP请求,将小灯开关状态上传给公网服务器。

公网服务器作为服务端,接收ESP8266发送过来的小灯状态信息,并根据需要生成相应的JSON指令,控制小灯的开关状态。

公网服务器将控制小灯的JSON信息发送给ESP8266。ESP8266接收到服务器返回的JSON信息后,解析其中的指令,根据指令控制小灯的引脚输出高低电平,从而实现对小灯的远程控制。

 

2.2说明 

整个过程中,ESP8266起到了客户端的作用,主动向公网服务器发送信息;公网服务器起到了服务端的作用,接收ESP8266发送的信息并返回控制指令。通过这种方式,你可以实现ESP8266与公网服务器之间的双向通信,实现远程控制小灯的功能。

 

三、客户端方面探究实现

3.1 问题

esp8266要一直发送状态请求吗? 不然公网服务器不能得知esp8266的地址信息?

 

3.2 思考

ESP8266可以采用一种称为"长连接"或"长轮询"的方式来实现,而不是一直发送状态请求。通过建立一个长时间保持连接的通道,ESP8266可以保持与公网服务器的通信,并随时准备接收服务器发送的指令。

 

具体实现方式如下:

 

ESP8266首次连接到公网服务器时,发送自身的地址信息给服务器,以便服务器知道如何回复指令。

ESP8266发送完状态信息后,不断监听服务器是否有指令要发送。这可以通过定时向服务器发送心跳包或保持TCP连接来实现,确保连接不会断开。

当公网服务器需要发送控制指令时,直接通过已建立的连接发送给ESP8266,ESP8266接收并执行相应操作。

通过这种方式,ESP8266可以与公网服务器保持持续的通信,实现双向传输数据的需求,同时避免了频繁发送请求的开销和服务器无法获取ESP8266地址信息的问题。

 

四、服务端方面探究实现

4.1 问题

服务器要如何发送响应给esp8266,并且长连接一直存在。

 

4.2 思考

实现服务器向ESP8266发送响应并且保持长连接一直存在,可以采用以下方法:

  1. 使用WebSocket协议:WebSocket是一种在单个TCP连接上进行全双工通信的协议,适合长连接场景。ESP8266可以与服务器建立WebSocket连接,服务器可以随时向ESP8266发送消息,而不需要ESP8266不断发送请求。

  2. 保持HTTP长连接:在HTTP/1.1中支持长连接,即在同一个TCP连接上可以进行多次请求和响应。当ESP8266发送完状态信息后,可以保持连接打开,等待服务器的响应。服务器在有指令需要发送时,可以直接在当前连接上发送响应给ESP8266。

  3. 定时心跳包:为了保持长连接的稳定性,可以定时发送心跳包来防止连接超时断开。ESP8266可以定时发送一个特殊的数据包给服务器,服务器收到后简单回复确认,以维持连接的活跃状态。

 
通过以上方式,服务器可以在需要时向ESP8266发送响应信息,并且保持长连接一直存在,实现双向通信的需求。
 
 
五、连接时限问题
 
长连接的时限通常取决于网络环境、服务器配置以及协议规定等因素。一般来说,长连接的时限没有一个固定的硬性规定,但是在实际应用中需要考虑以下几个因素:
 
 
 
1-网络因素:网络不稳定或者网络设备设置了较短的超时时间可能会导致长连接被中断。在移动网络环境下,连接可能会更容易中断。
 
2-服务器配置:服务器端可能会设置超时时间来控制长连接的断开,以释放资源或确保连接的有效性。
 
3-协议规定:某些协议可能规定了长连接的最大时限,需要根据具体协议规范来设定。
 
4-应用需求:根据具体的应用场景和需求,可以自行设置长连接的时限,通常可以根据心跳包等机制来维持连接。
 
总的来说,长连接的时限可以根据具体情况来灵活设置,需要综合考虑网络稳定性、服务器配置、协议规定和应用需求等因素来确定合适的时限。
  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值