整个教程就以上传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客户端的更多相关文章

  1. Arduino IDE for ESP8266教程(0)配置IDE

    淘宝链接 https://detail.tmall.com/item.htm?id=540067174120&spm=a1z09.2.0.0.6f7c6509ujAvQs&_u=71q ...

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

    创建WIFI热点 #include <ESP8266WiFi.h> void setup() { Serial.begin ( 115200 ); Serial.println(" ...

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

    修改ssid和passwd,将程序烧写到8266上,等待串口返回连接成功的消息,连接成功之后可以看到返回有一个ip地址,使用浏览器方位这个ip地址就可以看到这个消息: 连接路由器后,返回IP地址 19 ...

  4. Arduino IDE for ESP8266 教程(一) 局域网 网页查看数据 不控制

    淘宝:https://detail.tmall.com/item.htm?id=536504922008&spm=a1z09.2.0.0.5e160c66c76b3g&_u=e1qf7 ...

  5. Arduino IDE搭建ESP8266开发环境,文件下载过慢解决方法 | ESP-01制作WiFi开关教程,改造宿舍灯

    1. Arduino IDE配置ESP8266环境 参考:https://www.jianshu.com/p/cb0274d612b5 首先从 Arduino 官网 下载最新版本的 Arduino I ...

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

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  7. Arduino IDE 安装esp8266 2.4.rc2的编译环境

    2.4. 版本, 有一个我需要的功能, 串口缓存, 可以修改. Serial.setRxBufferSize(1024); //修改为1024个字节. 安装步骤: 1. 需要FQ. 推荐用" ...

  8. Arduino IDE for ESP8266 项目(4)HTTP客户端+服务端

    Arduio for esp8266  官网API:http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html 很有 ...

  9. Arduino IDE for ESP8266 项目云盒子(2)一键自配置+网页服务器

    https://item.taobao.com/item.htm?spm=a230r.1.14.20.eYblO3&id=521945102409&ns=1&abbucket= ...

随机推荐

  1. 通过webservice(System.Data.OracleClient)调试oracle

    环境:vs2008+webservice+net framework3.5+oracle10g 原因:在项目中运行web程序,默认是使用vs内置web服务器(develop server),而这个内置 ...

  2. c# 键值数据保存XML文件

    /// <summary> /// 键值数据保存XML文件 /// </summary> /// <param name="fileName"> ...

  3. 菜鸟入门【ASP.NET Core】6:配置的热更新、配置的框架设计

    配置的热更新 什么是热更新:这个词听着有点熟悉,但到底是什么呢? 一般来说:创建的项目都无法做到热更新:即项目无需重启,修改配置文件后读取到的信息就是修改配置之后的 我们只需要吧项目中用到的IOpti ...

  4. APP(通信)接口定义

  5. layui 数据表格+分页+搜索+checkbox+缓存选中项数据

    在做数据表格的时候遇到了很多坑, 今天整理一下方便以后使用. 主要功能是使用数据表格, 做分页,做搜索,  还有checkbox,  支持全选. 当选中一些数据的时候, 数据切换页面数据在切换回来后, ...

  6. Vue和React的对比

    今晚我们来搞一搞Vue和React的对比好吧,话不多说今天我们直接开搞可好,各位小老板,开始吧 1. react整体是函数式的思想,把组件设计成纯组件,状态和逻辑通过参数传入, 所以在react中,是 ...

  7. jQuery中bind() live() delegate() on() 的区别

    实例 bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数 $("a").bind("click",function(){aler ...

  8. ComponetOne 2014 v3版本正式发布

    2014年11月18日---ComponentOne Studio Enterprise 2014 v3版全球正式发布.ComponentOne Studio Enterprise是世界知名的Micr ...

  9. Fragment问题集

    最近做一个APP  ,因为在慕课网上学习到了新的方法来做Tab(APP主界面)效果,所以刚学不久久用起来了 用的Fragment实现Tab方法 查询了一下午的安卓资料,关于这个东西是在安卓3.0以后的 ...

  10. JavaScript变量提升的理解

    变量提升 先说三句总结性的话: let 的「创建」过程被提升了,但是初始化没有提升. var 的「创建」和「初始化」都被提升了. function 的「创建」「初始化」和「赋值」都被提升了. 所以,我 ...