我是靠谱客的博主 爱笑爆米花,最近开发中收集的这篇文章主要介绍使用http协议和onenet平台,实现ESP12-E(使用ArduinoIDE)到微信小程序的通信总思路Onenet工作ESP12-E,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
总思路
onenet的API开发指南:“平台提供开放的API接口,用户可以通过HTTP/HTTPS调用,进行设备管理,数据查询,设备命令交互等操作,在API的基础上,根据自己的个性化需求搭建上层应用。”
所以只需要让ESP-12E按照onenet的API调用规范上传数据点,小程序按规范查询数据点,即能实现数据从ESP到达小程序。反过来小程序上传、ESP查询数据也一样。ESP12E和小程序作为两个客户端,需要做的就是能够发起HTTP请求(不限于上述两者,只要是能发起HTTP请求的客户端都能加入这个通信)。
上传数据点(POST方法)
查询数据(GET方法)
Onenet工作
创建一个“HTTP”协议的产品,并创建设备,记下设备号。然后随便建立一个数据流模板,我的叫“temp”
ESP12-E
用了ESP8266WiFi这个库,可以提供连接WiFi和进行HTTP访问的API。
只是简单的修改了“示例”内的“ESP8266WiFi”的“WiFiClient”
注释了查询数据的部分(GET)
#include <ESP8266WiFi.h>
const char* ssid = "Medi";//wifi用户名
const char* password = "88888889";
const char* host = "api.heclouds.com";//
void setup() {
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
int value = 0;
void loop() {
delay(5000);
++value;
Serial.print("connecting to ");
Serial.println(host);
// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
// We now create a URI for the request
/*GET
String url = "/devices/你的设备号/datapoints?datastream_id=temp";
*/
//POST的URL
String url = "/devices/你的设备号/datapoints";
Serial.print("Requesting URL: ");
Serial.println(url);
/*
// 发起请求,注意空格!
client.print(String("GET ") + url + " HTTP/1.1rn" +
"Host: " + host + "rn" +
"api-key: lkyLlylsKq00Iv9ZsAwylV7VTp4="+ "rn" +
"Connection: closernrn");
*/
//contentlength必须加,rn算两个字符,Connection: close要不要无所谓
client.print(String("POST ") + url + " HTTP/1.1rn" +
"Host:" + host + "rn" +
"api-key:lkyLlylsKq00Iv9ZsAwylV7VTp4="+ "rn" +
"Content-Length: 60"+"rn" +
"Connection: closernrn"
+"{"datastreams":[{"id":"temp","datapoints":[{"value":6}]}]}"+"rn"
);
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
// Read all the lines of the reply from server and print them to Serial
while(client.available()){
String line = client.readStringUntil('r');
Serial.print(line);
}
Serial.println();
Serial.println("closing connection");
}
WeApp
微信小程序内代码相对简洁了,因为封装程度更高。
Page({
onLoad:function(){
/*上传数据点(POST)
wx.request({
url: 'https://api.heclouds.com/devices/你的设备号/datapoints',
method:"POST",
header:{
"api-key":"lkyLlylsKq00Iv9ZsAwylV7VTp4="
},
data:{
"datastreams": [{
"id": "temp",
"datapoints": [{ "value": 80 }, { "value": 2 }, { "value": 3 }, { "value": 4 }]
}]
},
success(res) {
console.log(res.data)
}
})
*/
//查询数据点(GET)
wx.request({
url: 'https://api.heclouds.com/devices/你的设备号/datapoints?datastream_id=temp',
method: "GET",
header: {
"api-key": "lkyLlylsKq00Iv9ZsAwylV7VTp4="
},
success(res) {
console.log(res.data.data.datastreams[0].datapoints[0])
}
})
}
})
最后
以上就是爱笑爆米花为你收集整理的使用http协议和onenet平台,实现ESP12-E(使用ArduinoIDE)到微信小程序的通信总思路Onenet工作ESP12-E的全部内容,希望文章能够帮你解决使用http协议和onenet平台,实现ESP12-E(使用ArduinoIDE)到微信小程序的通信总思路Onenet工作ESP12-E所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复