如何将以下POST请求转换为ESP8266 AT命令格式



我有一个正在运行的本地网站,它接受HTML表单数据。

字段为:

温度湿度

服务器成功接收数据,并吐出一个用新条目更新的图。

使用浏览器工具,我能够捕获实际的POST请求,如下所示:

http://127.0.0.1:5000/add_data

温度=25.4&湿度=52.2

内容长度:30

现在,我想从使用手动输入的人机界面浏览器迁移到使用AT命令的ESP01设备。

根据ESP AT命令文档,POST请求使用以下命令执行:

AT+HTTPCPOST=

查找下面的链接以获取该命令的完整描述。

我似乎无法让这个POST请求工作。ESP01设备立即返回一个"0";错误";没有任何延迟的消息,就好像它甚至没有尝试发送请求一样,表明语法可能是错误的。

在许多变体中,以下是我最好的尝试:

AT+HTTPCPOST=";http://MYIPADDR:5000/add_data",30,2,";温度:25.4〃"湿度:52.2〃;

用我的IP地址替换了上面的MYIPADDR。

如何将post请求转换为ESP01 AT命令格式?执行这样的请求是否需要任何先决条件?

我确实将ESP01设备连接到了WiFi网络。

以下是POST AT命令描述的链接:

https://docs.espressif.com/projects/esp-at/en/release-v2.2.0.0_esp8266/AT_Command_Set/HTTP_AT_Commands.html#cmd-httpcpost

文档中写道:

AT+HTTPCPOST=url,length[,<http_req_header_cnt>][,&lt响应:

OK

符号>表示AT已准备好接收串行数据,您现在可以输入数据。当消息长度要求满足由参数确定的条件时,传输开始。…

参数

:HTTP网址:到POST的HTTP数据长度。最大长度等于系统可分配的堆大小。<http_req_header_cnt>:<http_req_header>参数。[<http_req_header>]:可以向服务器

您正在发送:

AT+HTTPCPOST="http://MYIPADDR:5000/add_data",30,2,"Temperature: 25.4","Humidity: 52.2"

长度是30。问题是,长度之后的所有内容都是HTTP头字段;您需要发送正文中的变量。所以命令是:

AT+HTTPCPOST="http://MYIPADDR:5000/add_data",30

随后在下一行上在ESP-01之后发送>字符:

Temperature=25.4&Humidity=52.2

因为您传递了30作为正文长度,所以ESP-01将在AT命令结束后读取正好30个字符,并将该数据作为post正文发送。如果数据的大小发生变化(例如,温度可能是2.2,所以少了一位数(,您需要发送新的长度,而不是30。

最新更新