WiFi-ESP8266入门开发(十五)-HTTP客户端
·
注:对于ESP8266开源技术感兴趣的可以加群,我们一起探索交流学习,群号:579932824。群名:ESP8266开源技术交流群。
介绍
HTTP(超文本传输协议)是标准的应用协议,用作客户端和服务器之间的请求 - 响应协议。
HTTP客户端有助于发送HTTP请求并从HTTP服务器接收HTTP响应。
广泛应用于家庭自动化等基于物联网的嵌入式应用,远程分析汽车发动机参数监测等。
NodeMCU是一个开源的物联网平台。这是一个运行在Espressif Systems的ESP8266 Wi-Fi SoC上的固件。它具有可用的物联网应用程序易于构建的无线网络。
例
我们来为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串行监视器窗口,显示从事件处理服务器接收到的最新更新的数据。
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的输出窗口
下面是事件处理服务器的输出窗口。
更多推荐
所有评论(0)