栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

5. ESP8266使用PostHttpClient例程上传数据给Web服务器后台

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

5. ESP8266使用PostHttpClient例程上传数据给Web服务器后台

文章目录
    • 硬件环境
      • 1. ESP8266开发板;
    • 软件环境
      • 1. ESP8266HTTPClient->PostHttpClient例程
      • 2. 对工程中的代码进行修改,修改内容为:
      • 3. 所有代码内容:
      • 4. Web服务器(Django)搭建过程
    • 实验过程
      • 1. 软硬件配置过程
      • 2. 实验效果展示

硬件环境 1. ESP8266开发板; 软件环境 1. ESP8266HTTPClient->PostHttpClient例程

打开方式如下:

2. 对工程中的代码进行修改,修改内容为:
  1. STASSID和STAPSK,修改为开发板上所在环境的能上公网的WiFi名称和密码;
  2. SERVER_IP,服务器地址,修改为接收数据的服务器IP地址;
  3. 修改http.begin函数参数的内容,后缀名称根据服务器搭建好的Web目录确定,本文的内容为 :
    http.begin(client, "http://" SERVER_IP "/IOT/add_environments"); //HTTP
  1. 修改http.addHeader内容格式,默认使用application/json格式,但是实验中上传数据后台无法正确接收,后改为application/x-www-form-urlencoded,数据上传成功,修改后内容:
	http.addHeader("Content-Type", "application/x-www-form-urlencoded");
  1. 其余代码均不变;
3. 所有代码内容:

#include 
#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);
}
4. Web服务器(Django)搭建过程
  • 如果服务器系统为windos,可以参照之前博文《树莓派+传感器+公网服务器 组件自己的物联网平台(三)WEB服务器配置》;

  • 如果服务器系统是Ubuntu,可以根据本人的B站视频同步搭建,B站ID为张三编程分享,地址为:https://space.bilibili.com/243861879,该账号会实时更新服务器配置过程。

Web服务器环境搭建过程最为复杂,如果是小白可以根据B站视频的内容一步步来搭建。

实验过程 1. 软硬件配置过程
  1. 连接ESP8266开发板到电脑,使用ArduinoIDE打开示例工程PostHttpClient并修改相关内容;
  2. 烧录程序到ESP8266开发板中;
  3. 打开服务器,按照软件配置中的Web服务器配置,将Django工程配置好,并运行;
2. 实验效果展示

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 -> >>
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982587.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号