- 硬件环境
- 1. ESP8266开发板;
- 软件环境
- 1. ESP8266HTTPClient->PostHttpClient例程
- 2. 对工程中的代码进行修改,修改内容为:
- 3. 所有代码内容:
- 4. Web服务器(Django)搭建过程
- 实验过程
- 1. 软硬件配置过程
- 2. 实验效果展示
打开方式如下:
2. 对工程中的代码进行修改,修改内容为:- STASSID和STAPSK,修改为开发板上所在环境的能上公网的WiFi名称和密码;
- SERVER_IP,服务器地址,修改为接收数据的服务器IP地址;
- 修改http.begin函数参数的内容,后缀名称根据服务器搭建好的Web目录确定,本文的内容为 :
http.begin(client, "http://" SERVER_IP "/IOT/add_environments"); //HTTP
- 修改http.addHeader内容格式,默认使用application/json格式,但是实验中上传数据后台无法正确接收,后改为application/x-www-form-urlencoded,数据上传成功,修改后内容:
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
- 其余代码均不变;
#include4. Web服务器(Django)搭建过程#include //#define SERVER_IP "10.0.1.7:9080" // PC address with emulation on host #define SERVER_IP "192.168.1.42" #ifndef STASSID #define STASSID "your-ssid" #define STAPSK "your-password" #endif void setup() { Serial.begin(115200); Serial.println(); Serial.println(); Serial.println(); WiFi.begin(STASSID, STAPSK); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected! IP address: "); Serial.println(WiFi.localIP()); } void loop() { // wait for WiFi connection if ((WiFi.status() == WL_CONNECTED)) { WiFiClient client; HTTPClient http; Serial.print("[HTTP] begin...n"); // configure traged server and url http.begin(client, "http://" SERVER_IP "/IOT/add_environments"); //HTTP http.addHeader("Content-Type", "application/x-www-form-urlencoded"); Serial.print("[HTTP] POST...n"); // start connection and send HTTP header and body int httpCode = http.POST("temperatures=30&humidity=72&pressure=111"); // httpCode will be negative on error if (httpCode > 0) { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] POST... code: %dn", httpCode); // file found at server if (httpCode == HTTP_CODE_OK) { const String& payload = http.getString(); Serial.println("received payload:n<<"); Serial.println(payload); Serial.println(">>"); } } else { Serial.printf("[HTTP] POST... failed, error: %sn", http.errorToString(httpCode).c_str()); } http.end(); } delay(10000); }
-
如果服务器系统为windos,可以参照之前博文《树莓派+传感器+公网服务器 组件自己的物联网平台(三)WEB服务器配置》;
-
如果服务器系统是Ubuntu,可以根据本人的B站视频同步搭建,B站ID为张三编程分享,地址为:https://space.bilibili.com/243861879,该账号会实时更新服务器配置过程。
Web服务器环境搭建过程最为复杂,如果是小白可以根据B站视频的内容一步步来搭建。
实验过程 1. 软硬件配置过程- 连接ESP8266开发板到电脑,使用ArduinoIDE打开示例工程PostHttpClient并修改相关内容;
- 烧录程序到ESP8266开发板中;
- 打开服务器,按照软件配置中的Web服务器配置,将Django工程配置好,并运行;
Web服务器运行过程打印信息:
服务器MySQL数据库内容变化:
ESP8266开发板串口实时打印信息:
22:21:06.709 -> Connected! IP address: 192.168.10.238
22:21:06.709 -> [HTTP] begin...
22:21:06.709 -> [HTTP] POST...
22:21:07.025 -> [HTTP] POST... code: 200
22:21:07.025 -> received payload:
22:21:07.025 -> <<
22:21:07.025 -> {"status": 200, "data": {"temperatures": "30", "humidity": "72", "pressure": "111", "dateTime": "2022-06-21T14:21:08.183Z"}}
22:21:07.025 -> >>
22:21:17.030 -> [HTTP] begin...
22:21:17.030 -> [HTTP] POST...
22:21:17.390 -> [HTTP] POST... code: 200
22:21:17.390 -> received payload:
22:21:17.390 -> <<
22:21:17.390 -> {"status": 200, "data": {"temperatures": "30", "humidity": "72", "pressure": "111", "dateTime": "2022-06-21T14:21:18.483Z"}}
22:21:17.390 -> >>



