码迷,mamicode.com
首页 > Web开发 > 详细

Arduino IDE for ESP8266教程(三)HTTP客户端

时间:2018-01-14 22:49:38      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:log   delay   最新   客户端   context   ssid   上传   原因   fan   

整个教程就以上传Yeelink数据点为目的制作一个HTTP客户端。

1获取账号 http://www.cnblogs.com/imfanqi/p/4419915.html

技术分享图片

 

2代码教程 http://www.windworkshop.cn/?p=1217

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#define UKey "" // Yeelink提供的U-ApiKey
String ssid = ""; // 需要连接的wifi热点名称
String password = ""; // 需要连接的wifi热点密码
/* 上传数据到服务器。
 * device为设备号,sensor为传感器号,data为上传数据点的值
 * 这里默认上传到最新的数据点上,需要上传到特定点上就得在post内容中单独加入时间戳 
 */
void uploadYeelinkData(String device, String sensor, String data) {
  HTTPClient http;
  const String apiAddress = "/v1.1/device/" + device + "/sensor/" + sensor + "/datapoints";
  http.begin("api.yeelink.net", 80, apiAddress);
  http.addHeader("U-ApiKey",UKey, true);
  int httpCode =  http.POST("{\"value\":" + data + "}");
  Serial.print("code:");
  Serial.println(httpCode);
  if(httpCode == 200) { // 访问成功,取得返回参数
      String payload = http.getString();
      Serial.println(payload);
  } else { // 访问不成功,打印原因
     String payload = http.getString();
     Serial.print("context:");
     Serial.println(payload);
  }
}
/* 从服务器取得数据
 * device为设备号,sensor为传感器号
 */
void readYeelinkData(String device, String sensor) {
  HTTPClient http;
  // 这里使用的api是v1.0的,v1.1的api需要提供U-ApiKey
  const String apiAddress = "/v1.0/device/" + device + "/sensor/" + sensor + "/datapoints";
  http.begin("api.yeelink.net", 80, apiAddress);
  int httpCode =  http.GET(); // 使用GET形式来取得数据
  Serial.print("code:");
  Serial.println(httpCode);
  if(httpCode == 200) { // 访问成功,取得返回参数
      String payload = http.getString();
      Serial.println(payload);
  } else { // 访问不成功,打印原因
     String payload = http.getString();
     Serial.print("context:");
     Serial.println(payload);
  }
}
void setup() {
  Serial.begin ( 115200 );
  int connectCount = 0;
  WiFi.begin ( ssid.c_str(), password.c_str() );
  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 1000 );
    Serial.print ( "." );
    if(connectCount > 30) {
      Serial.println( "Connect fail!" );
      break;
    }
    connectCount += 1;
  }
  if(WiFi.status() == WL_CONNECTED) {
    Serial.println ( "" );
    Serial.print ( "Connected to " );
    Serial.println ( ssid );
    Serial.print ( "IP address: " );
    Serial.println ( WiFi.localIP() );
    connectCount = 0;
  }
  //readYeelinkData("8938", "28887"); // 读取数据点测试
  uploadYeelinkData("8938", "28887", "1"); // 写入数据点测试
}
 
void loop() {
  
}

  

 

Arduino IDE for ESP8266教程(三)HTTP客户端

标签:log   delay   最新   客户端   context   ssid   上传   原因   fan   

原文地址:https://www.cnblogs.com/kekeoutlook/p/8284364.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!