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

整个教程就以上传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() {

}

  

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

时间: 2024-11-08 22:48:31

Arduino IDE for ESP8266教程(三)HTTP客户端的相关文章

Arduino IDE for ESP8266教程(二) 创建WIFI AP模式

创建WIFI热点 #include <ESP8266WiFi.h> void setup() { Serial.begin ( 115200 ); Serial.println(""); // 设置内网 IPAddress softLocal(192,168,128,1); // 1 设置内网WIFI IP地址 IPAddress softGateway(192,168,128,1); IPAddress softSubnet(255,255,255,0); WiFi.so

Arduino IDE for ESP8266教程(四)网页控制灯 简单页面

修改ssid和passwd,将程序烧写到8266上,等待串口返回连接成功的消息,连接成功之后可以看到返回有一个ip地址,使用浏览器方位这个ip地址就可以看到这个消息: 连接路由器后,返回IP地址 192.168.1.104 手机连上同个路由器,输入192.168.1.104,得到(下图为示意图,IP地址更换即可) 这就是handleMain中返回给浏览器的String了. 然后可以访问控制引脚的地址: 分别访问这两个地址可以看到板载的led点亮和熄灭.这个就是绑定了/pin的功能起的作用了.注意

ESP8266开发之旅 进阶篇② 闲聊Arduino IDE For ESP8266烧录配置

1.前言 ????在学习ESP8266开发的过程中,很多初学开发者很容易出现以下几种问题: 编译代码提示缺少ESP8266WiFi库(原因之一就是选择了非ESP8266板子编译,比如Arduino UNO): ESP8266烧录失败(原因之一就是配置了错误的烧录选项,比如目标板是NodeMcu但是选择了其他板子): ESP8266烧录成功,但是显示串口乱码(原因之一也是配置了错误的烧录选项,配置错误的FlashMode): ????归根到底,就是初学者不理解各个编译选项的含义,很容易选择错误的配

Arduino IDE for ESP8266 项目云盒子 (1)AP直接模式

手机直接连接esp8266辐射的WIFI,通信. #include <ESP8266WiFi.h>   const char *ssid = "Charlie Testing AP"; const char *password = "12345678"; WiFiServer server(80); void setup() {   Serial.begin(115200);   Serial.println();     Serial.print(&q

Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器

一.硬件准备 USB转ESP8266两块.DHT11温度湿度传感器.ESP8266-01/ESP8266-01一块(如果学习的话多买几块,ESP-01/ESP-01S的区别) USB转ESP8266 说明:为什么要买两块 二.软件准备 Arduino.EMQX(这是mqtt服务器可以部署在本地也可以放在远程服务器上).MQTTBox(mqtt客户端程序).如果是Window系统的话 安装相关USB驱动程序. 三.安装EMQX 下面介绍的方法是部署在远程服务器上. MQTT服务器配置方法 四.安装

Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE

Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE Windows平台下安装Arduino IDE Windows操作系统下可以使用安装向导和压缩包形式安装.下面详细讲解这两种方式. 1.Arduino IDE Windows安装向导方式 Windows安装向导方式安装和绝大多数Windows应用程序安装类似,只需要直接运行下载的.exe文件即可.例如1.6.0版本的安装向导方式的文件名为arduino-1.6.0-windows.exe.直接双击该文件即可开始安装.

如何用arduino来测试ESP8266 WIFI模块(wifi普及预热中)

ESP8266是一款非常廉价的WIFI串口解决方案模块,以目前的超低价格受到各方关注,本强最近也在给它开发arduino库,来方便大家使用,不过捏,我们也需要了解下他的AT指令的操作方法.  首先,ocrobot的ESP8266使用的指令集手册在这里:http://www.ocrobot.com/doku.php?id=zh:ocrobot:modules:seed:at大家可以参考,打印或者怎么地.反正到时候经常会用到 AT指令是串口通讯中常用的一种操作指令.大家应该都很熟悉,GPS.短信猫等

使用USBASP给Arduino烧写bootloader教程

源:使用UsbAsp给UNO烧写bootloader ATMEGA16U2.ATMEGA328P固件烧写教程 arduino板由于操作不发导致固件损坏,或者想更新固件怎么办?今天给大家介绍一下如何使用UsbAsp烧写bootloader.个人认为,此种方法比使用TinyIsp要方便并且成本更低. 首先确保手上有一个USBASP下载器,某宝上一搜一大堆,下面以TSROBOT的兼容型UNO板,分别介绍mega16u2的固件和mega328p的固件烧写. _______________________

(转)使用eclipse Arduino IDE开发 AVR程序

小白写程序都是用eclipse的,所以学习Arduino时自然就想用eclipse,因为俺懒,这样省事.网上找了些帖子看看,感觉开发环境都比较麻烦,这样不符合俺这种懒人的风格,所以我弄了个简单点的. 第一步:下载各种东西1.JDK,这个去oracle官网下就好了(其实百度下载更快)http://download.oracle.com/otn-pub/java/jdk/8u20-b26/jdk-8u20-windows-x64.exe.2.eclipseArduinoIDE,http://ecli