注:对于ESP8266开源技术感兴趣的可以加群,我们一起探索交流学习,群号:579932824。群名:ESP8266开源技术交流群。

介绍

HTTP(超文本传输​​协议)是标准的应用协议,用作客户端和服务器之间的请求 - 响应协议。

HTTP客户端有助于发送HTTP请求并从HTTP服务器接收HTTP响应。

广泛应用于家庭自动化等基于物联网的嵌入式应用,远程分析汽车发动机参数监测等。

NodeMCU是一个开源的物联网平台。这是一个运行在Espressif Systems的ESP8266 Wi-Fi SoC上的固件。它具有可用的物联网应用程序易于构建的无线网络。

NodeMCU HTTP客户端

我们来为NodeMCU编写一个基于C / C ++的Arduino程序作为HTTP Client,然后获取或推送数据到thingspeak服务器。

在这里,我们使用Thingspeak服务器来进行HTTP Client演示。

Thingspeak是一个开放的IOT平台,任何人都可以从他们的传感器设备可视化和分析实时数据。另外,我们还可以用事件处理中的Matlab代码对远程设备发布的数据进行数据分析。要了解更多有关事情的信息,请参阅链接 

https://thingspeak.com/pages/learn_more

只需注册并创建channel.We有以下的频道,并在Thingspeak写数据发送和接收的关键。

  • 频道ID = 309236
  • 密钥= 1EYZIS5OCRJSKZHG

注意:   不要忘记在你的事件通道上勾选频道设置选项中的公开区域。

Arduino Sketch的HTTP客户端获取

#include <ESP8266WiFi.h>

/*Put your SSID & Password*/
const char* ssid = "ssid";		// Enter SSID here
const char* password = "password";	//Enter Password here

const char* server = "api.thingspeak.com";

/* Set GET link with channel ID */
const char* _getLink = "http://api.thingspeak.com/channels/309236/feeds/last.txt";

WiFiClient client;

void setup() {
  Serial.begin(9600);
  delay(1000);

  Serial.println("Connecting to ");
  Serial.println(ssid);

  //connect to your local wi-fi network
  WiFi.begin(ssid, password);

  //check wi-fi is connected to wi-fi network
  while (WiFi.status() != WL_CONNECTED) {
	delay(500);
	Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
}

void loop() 
{
  if (client.connect(server,80))     // "184.106.153.149" or api.thingspeak.com
  { 
    String getStr = _getLink;

    client.print("GET "+getStr+"\n");
    client.print("HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n\n\n");

    while(client.available()){
	char c = client.read();
	Serial.print(c);
    }
    Serial.println("");
  }
  client.stop();
  Serial.println("Waiting…");
  delay(10000);
}

HTTP获取的输出窗口

下面是Arduino串行监视器窗口,显示从事件处理服务器接收到的最新更新的数据。

thingspeak http get

 

Arduino Sketch for HTTP Client Post

#include <ESP8266WiFi.h>

String apiKey = "1EYZIS5OCRJSKZHG";	// replace with your channel’s thingspeak API key,

/*Put your SSID & Password*/
const char* ssid = "ssid";		// Enter SSID here
const char* password = "password";	// Enter Password here

const char* server = "api.thingspeak.com";
int Sample;

WiFiClient client;

void setup() {
  Serial.begin(9600);
  delay(1000);

  Serial.println("Connecting to ");
  Serial.println(ssid);

  //connect to your local wi-fi network
  WiFi.begin(ssid, password);

  //check wi-fi is connected to wi-fi network
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
}

void loop() 
{
  if (client.connect(server,80))     // "184.106.153.149" or api.thingspeak.com
  { 
    String postStr = apiKey;
    postStr +="&field1=";
    postStr += String(Sample++);
    postStr += "\r\n\r\n";

    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);
  }
  client.stop();

  Serial.println("Waiting…");       // thingspeak needs minimum 15 sec delay between updates

  delay(20000);
}

HTTP Post的输出窗口

下面是事件处理服务器的输出窗口。

thingspeak http post

 


 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐