客户端向服务器发送数据信息

在之前的课程中,我们曾经学习了如何使用ESP8266来建立网络服务器。在本节课程中,我们一起学习如何让ESP8266开发板以网络客户端的角色向服务器发送HTTP请求,并且获取何处理服务器响应信息。通过这一操作,我们可以实现ESP8266开发板间的物联网数据通信。此时就需要有两个esp8266开发板进行处理一个客户端 一个服务器端

第一个实验 使用ESP8266客户端向ESP8266服务器发送数据 :控制目的 通过http协议 通过客户端的板子按键 控制服务端的LED亮灭 注意,下示例中的服务器端和客户端ESP8266必须连接同一WiFi网络,方可实现数据通讯。

服务器端程序:

– 接收客户端发来的http请求并且解析信息中的数据信息

– 将解析的数据信息通过串口监视器显示供用户查看

将解析的客户端按键状态信息用于控制服务器端板上LED的点亮和熄灭

代码解析: 设置开放板联网信息 可以设置联网后的ip 网关的ip 子网掩码 局域网的DNS IP 除了开发板的IP地址可以自行设置外 网关IP地址一定要根据自己所在的路由环境进行修改使用   

开发板网络环境配置函数 config 配置 可以看见缺少了DNS在此运用时没有用到DNS服务器配置需求 

服务器获取客户端按键状态的变量 前面两个是测试用的 

重点:如何找到网络地址IP win+r 打开命令提示符输入 ipcomfig---------同时 DNS与网关IP地址通常要保持一致。 设置ESP8266-NodeMCU联网后的IP前三位也要一制 而且开发板的ip地址在同一个局域网中的IP地址是唯一的 

客户端程序:

– 客户端通过HTTP协议向服务器发送信息

– 信息中包含客户端按键开关引脚状态用于控制服务器板上LED的点亮和熄灭

– 信息中还包含测试数据以便我们更好的了解如何使用ESP8266发送和接收物联网数据信息 

代码解析 : 首先是客户端发送的目的地也就是 服务器端的IP地址 然后是&号分割的数值信息 float=1.5&int=2&button=0 回想服务器端的获取的三个变量就是如此 float floatValue = server.arg("float").toFloat(); // 获取客户端发送HTTP信息中的浮点数值 通过查询有没有名为float的变量有就将获取到的变量转换为float 并且赋值给 floatValue

然后 通过读取特定引脚的电平变化来判断按键是否按下 重点代码讲解 : 将浮点型变量连接为字符串 并连接形成一个完整的请求URL 信息 此时会将URL放在请求信息之后    错误 分析: 当一直在failed 时就要检查IP配置是否正确 服务器端启动成功 客户端启动成功

服务器端检查测到电平变化 客服端 没有按下式为1 按下时为0    然后1我们结合以前的请求 回忆可知 客户端向服务端获取信息为get 但是此示例中发送信息也用get 所以总结就是在http 请求中get 这些方法其实是不固定的get也能用于发送信息 客户端向服务器请求数据信息

其实·就是·将刚才的实验反过来 就是通过服务器端的按键控制客户端的LED灯

服务器端程序:

– 实时获取服务器端开发板上按钮引脚状态

– 当有客户端向ESP8266服务器的/update发送请求时,将服务器的按键引脚状态通过响应信息回复给客户端

通过 send 请求 发送按键状态 客户端读取之后 判断并点亮LED灯

客户端程序:

– 定时向服务器发送请求,从而获取服务器开发板上按钮状态

– 将服务器端发来的按钮引脚电平状态解析为数字量,并且用该数字量控制板上LED点亮和熄灭

if(client.find("buttonState:")) { buttonState = client.parseInt();} find 函数是查找buttonState 之后的整数就是find函数会让指针偏移 在流stream 有讲解 但是对于少量数据可以stream解析的方式进行 但是stream解析特别特别浪费时间 因此我们开始学习json

文章链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。