ESP32连接到oneNET云平台,传数据到微信小程序

这篇具有很好参考价值的文章主要介绍了ESP32连接到oneNET云平台,传数据到微信小程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

学习物联网的同学们在进行毕业设计时都需要面对一个共同的问题:如何使用传感器获取数据并将其上传至云平台,然后通过微信小程序访问云平台数据。在这个过程中,恰巧在课程设计中接触到了ESP32,发现它内置蓝牙和WiFi模块,这不是天生的上传云平台圣体吗?因此,本文将教导大家如何使用ESP32上传数据至云平台,并通过微信小程序获取数据。阅读本文后,你将能从容应对毕业设计的挑战!

1.创建云平台项目

1.1创建产品 

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

1.2开发产品及设备接入

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

1.3自定义功能

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

1.4创建设备

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

1.5记录下所需的信息

接下来记住自己的设备密钥,产品ID和设备名称(接下来要用)

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

2.编写硬件(ESP32)代码

这里是根据b站的教程敲得

ESP32连接新版OneNET完整教程_1属性上报_哔哩哔哩_bilibili

 2.1生成时间戳

时间戳(Unix timestamp)转换工具 - 在线工具 (tool.lu)

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

将时间戳记录下来

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

2.2使用token v2.0生成token

下载token v2.0

链接:https://pan.baidu.com/s/1opG0aF9jTtQB4zHTQJBJ1Q?pwd=ym09 
提取码:ym09

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

格式如下:

products/Z46g89A65R/devices/test

1744387714

UVFoNlVRSVJmRlR6dHh1SE1QWEhyZktZRndPNWtXWDM=

将token记录下来

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

2.3编写代码 

我使用的是arduino,安装与配置太简单了就不说了,不会的可以去看一下这个教程

2023年最新 ESP32 Arduino 教程(持续更新中)_哔哩哔哩_bilibili

代码如下

#include <Arduino.h>
#include <WiFi.h>
#include <PubSubClient.h>
#include <Ticker.h>

#define LED 2 // LED灯连接到GPIO 2,用LED灯指示设备状态

#define ONENET_TOPIC_PROP_POST "$sys/" product_id "/" device_id "/thing/property/post" // 设备属性上报请求
#define ONENET_TOPIC_PROP_SET "$sys/" product_id "/" device_id "/thing/property/set" // 设备属性设置请求
#define ONENET_TOPIC_PROP_POST_REPLY "$sys/" product_id "/" device_id "/thing/property/post/reply" // 设备属性上报响应
#define ONENET_TOPIC_PROP_SET_REPLY "$sys/" product_id "/" device_id "/thing/property/set_reply" // 设备属性设置响应
#define ONENET_TOPIC_PROP_FORMAT "{\"id\":\"%u\", \"version\":\"1.0\", \"params\":%s}"// 设备属性格式模板


const char* ssid = "WiFi"; // 替换成自己的WiFi名称
const char* password = "12345678"; // 替换成自己的WiFi密码


const char* mqtt_server = "mqtts.heclouds.com"; // MQTT服务器地址
const int mqtt_port = 1883; // MQTT服务器端口

#define product_id "Z46g89A65R" // 替换成自己的产品ID
#define device_id "test" // 替换成自己的设备ID
#define token "version=2018-10-31&res=products%2FZ46g89A65R%2Fdevices%2Ftest&et=1744387714&method=md5&sign=bPWYnd43kJGyYcNZxkgGvQ%3D%3D" // 替换成自己的token

int postMsgId = 0; // 消息ID初始值为0
int temp = 28.0; // 温度
int humi = 60; // 湿度
//这里定义自己要传输的数据

WiFiClient espclient; // 创建一个WiFiClient对象
PubSubClient client(espclient); // 创建一个PubSubClient对象
Ticker ticker;

void LED_Flash(int time);
void WiFiConnect();
void OneNet_Connect();
void OneNet_Prop_Post();


void setup() {
  pinMode(LED, OUTPUT); // LED灯设置为输出模式
  Serial.begin(9600); // 串口初始化,波特率9600,用于输出调试信息
  WiFiConnect(); // 连接WiFi
  ticker.attach(0.01, OneNet_Prop_Post); // 定时器,每10毫秒执行一次OneNetPropPost函数


}

void loop() {
  if (WiFi.status() != WL_CONNECTED) {
    // 如果WiFi连接断开,重新连接WiFi
    WiFiConnect();
  }

  if (!client.connected()) {
    // 如果MQTT连接断开,重新连接OneNet
    OneNet_Connect();
  }


  // 保持MQTT连接
  client.loop();
}


void LED_Flash(int time) {
  digitalWrite(LED, HIGH); // 点亮LED
  delay(time); // 延时time
  digitalWrite(LED, LOW); // 熄灭LED
  delay(time); // 延时time
}

void WiFiConnect() {
  WiFi.begin(ssid, password); // 连接WiFi
  while (WiFi.status() != WL_CONNECTED) { // 等待WiFi连接,WiFi.status()返回当前WiFi连接状态,WL_CONNECTED为连接成功状态
    LED_Flash(500); // LED闪烁,循环等待
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to the WiFi network"); // WiFi连接成功
  Serial.println(WiFi.localIP()); // 输出设备IP地址
  digitalWrite(LED, HIGH); // 点亮LED
}

void OneNet_Connect() {
  client.setServer(mqtt_server, mqtt_port); // 设置MQTT服务器地址和端口
  if (client.connect(device_id, product_id, token)) { // 连接到OneNet
    LED_Flash(500);
    Serial.println("Connected to OneNet!");
  } else { 
    Serial.println("Failed to connect to OneNet!");
  }
  client.subscribe(ONENET_TOPIC_PROP_SET); // 订阅设备属性设置请求
  client.subscribe(ONENET_TOPIC_PROP_POST_REPLY); // 订阅设备属性上报响应

}

void OneNet_Prop_Post() {
  if (client.connected()) {
    char params[256];
    char jsonBuf[256];
    sprintf(params, "{\"temp\": {\"value\": %d}, \"humi\": {\"value\": %d}}", temp, humi);
    //数据请求格式,详情看阿里云的官方文档https://open.iot.10086.cn/doc/v5/fuse/detail/922
    Serial.println(params);
    
    sprintf(jsonBuf, ONENET_TOPIC_PROP_FORMAT, postMsgId++, params);
    Serial.println(jsonBuf);
    
    if (client.publish(ONENET_TOPIC_PROP_POST, jsonBuf)) {
      LED_Flash(500);
      Serial.println("Post property success!");
    } else {
      Serial.println("Post property failed!");
    }
  }
}


串口打印的数据

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

云平台已经接收到数据

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

2.4可能会遇到的问题及解决方式

1.数据在串口上可以打印,但云平台接受不到数据

1.标识符不对,检查标识符

2.特殊的数据类型可能会引发错误,以下是解决方式:

  • 对于 float 类型的数据,步长应设置为 0.1。
  • 对于 bool 类型的数据,应上传 true 和 false,而不是直接上传 0 和 1。

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

3.上传数据的代码需要将数据格式整理成符合官方的OneJSON请求数据格式。这种数据请求格式的特点是“一荣俱荣,一损俱损”,即可能出现单个数据上传错误导致整条数据无法上传的情况。因此,建议逐条注释数据传输的代码,逐条放开并检查,以确定哪个数据出错。更多详情请查阅官方文档:OneNET - 中国移动物联网开放平台

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

2.使用Arduino开发ESP32:项目内存太大,无法烧写程序的问题

使用Arduino开发ESP32:项目内存太大,无法烧写程序的问题_arduino 项目太大了怎么办-CSDN博客

3.头文件报红,找不到库

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

3.编写微信小程序代码

参考文章,但这篇文章代码不完整且代码还有冗余,所以我做了一点修改用树莓派获取传感器数据通过Onenet云平台(物模型)传输至微信小程序(下)_传感器小程序-CSDN博客


3.1点击访问权限

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

3.2查看自己的用户ID,用户Accesskey

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

记录下来

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

3.3使用使用token v2.0生成token

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

记录下生成的token

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

3.4编写代码 

代码如下,在js中的内容

Page({
  data: {
    onenetData: {}, // 初始化 OneNET 数据对象
  },
  onLoad(options) {
    this.fetchOnenetData(); // 页面加载时请求 OneNET 数据
  },
  onReady() {
    // 页面初次渲染完成
  },
  onShow() {
    // 页面显示
  },
  onHide() {
    // 页面隐藏
  },
  onUnload() {
    // 页面卸载
  },
  onPullDownRefresh() {
    // 下拉刷新
  },
  onReachBottom() {
    // 页面上拉触底
  },
  onShareAppMessage() {
    // 分享
  },
  fetchOnenetData() {
    const authInfo = "version=2022-05-01&res=userid%2F355243&et=1744387714&method=sha1&sign=4kG88rXgDyAefNtcnHtPd1HhpDQ%3D";
    wx.request({
      url: 'https://iot-api.heclouds.com/thingmodel/query-device-property?product_id=Z46g89A65R&device_name=test',
      method: "GET",
      header: {
        'Authorization': authInfo
      },
      success: (res) => {
        if (res.data && res.data.data && res.data.data.length >= 2) {
          this.setData({
            onenetData: res.data
          });
        } else {
          console.log("OneNET返回的数据格式不正确");
        }
      },
      fail: (err) => {
        console.log("OneNET数据请求失败");
        console.error(err);
      }
    });
  },
})

注意替换以下区域

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

在wxml中的内容,自己的数据有几个就加几个<text>

<view class="data-values">
    <text>{{onenetData.data[0].value}}</text>
    <text>{{onenetData.data[1].value}}</text>
  </view>

云平台数据

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序

小程序显示

ESP32连接到oneNET云平台,传数据到微信小程序,微信小程序,小程序文章来源地址https://www.toymoban.com/news/detail-852445.html

到了这里,关于ESP32连接到oneNET云平台,传数据到微信小程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OneNET】_01_使用微信小程序通过新版OneNET平台获取STM32设备信息并进行控制

    笔者在这先简单介绍一下自己的整个系统,以好让各位朋友能够快速了解这篇文章对自己是否有帮助。 通过MQTT协议(笔者是直接给ESP01S刷了MQTT的AT固件,这种方法简单方便)将采集到的光照、设备电量和开锁信息上传到OneNET平台(这个过程就是向云平台你所创建设备发布主

    2024年04月24日
    浏览(142)
  • STM32和微信小程序 连接Onenet上传数据、下发指令

    代码通过STM32采集一路ADC、和温湿度上传到云端,通过0.96寸oled做本地显示,可通过小程序控制板载PC13上led亮灭和舵机开门。还有蜂鸣器阈值报警。 首先在开始前需要进行Onenet平台和微信小程序的注册,Onenet的设备注册想必大家都会了,就不再赘述了,简单说一下微信小程序

    2024年02月08日
    浏览(36)
  • STM32+NRF2401+ESP8266采集温度数据发送到oneNET平台

    工作不是搞这个的,只是感兴趣,哈哈,做了一个小实验;记录一下实验过程吧!         使用的是正点原子STM32F103ZET6的主板,主板连接的硬件有DHT11(温度湿度模块) + BH1750(光照度采集模块)+ NRF2401(WIFI模块,主要是发送采集的数据到STMF103C8T6模块上,当然C8T6也连接一个

    2024年02月03日
    浏览(32)
  • 用树莓派获取传感器数据通过Onenet云平台(物模型)传输至微信小程序(上)

           为了传输传感器数据,在网上找了很多方法,但都因为各种各样的问题最终没能成功实现。最终找到这个既简单,又方便实现的方法。步骤有点多,希望大家可以跟着教程,一步步耐心的做下去,愿大家都能成功实现数据传输。代码放在最后啦,下面开始我的教程。

    2024年03月23日
    浏览(32)
  • STM32+ESP8266+DHT11通过MQTT协议连接新版ONENET云平台上传数据

    项目讲解视频 新版 云平台搭建视频演示 单片机代码修改演示视频 APP参数修改 实物演示 前段时间ONENET云平台进行了升级更新,此前平台的多协议接入(包含旧版MQTT、HTTP、EDP、Modbus、TCP透传等)接口已经隐藏,后续应该会下架,为了能够后续继续使用ONENET云平台,就需要学

    2024年02月09日
    浏览(30)
  • 微信小程序向新版OneNet云平台发送get请求

    图1.1 这个是我添加的数据你们可以自行添加自己需要读取的数据 图1.2 输入自己的产品ID以及产品名称 图1.3 右下角有获取到结果就没错,然后打开我们的微信小程序 我们也可以通过ApiPost软件向OneNet云平台发送get请求 要使用wx.request发起GET请求,可以使用以下代码: 在上面的

    2024年04月09日
    浏览(32)
  • 微信小程序POST+新版OneNET云平台设备属性期待值

    上次刚解决完在新版OneNET平台下,微信小程序如何GET设备属性实时数据的问题,接着就遇到了如何利用微信小程序POST设置属性期待值的问题,本来就是想简单控制一下单片机上LED的开关,查了官方API手册: URL:https://iot-api.heclouds.com/thingmodel/set-device-desired-property  按照官方文

    2024年04月25日
    浏览(42)
  • ESP32上实现环境温湿度检测上传数据并通过微信小程序显示

    共包含三个步骤 Arduino端代码  onenet云平台产品准备  微信小程序代码 1. Arduino端代码如下: #include WiFi.h #include \\\"DHT.h\\\" #include \\\"PubSubClient.h\\\" #include \\\"Ticker.h\\\" #define DHTPIN 17      #define DHTTYPE DHT11    DHT dht(DHTPIN, DHTTYPE); int god=0; const char *ssid     = \\\"FAST_CAED9A\\\"; const char *password = \\\"13837

    2024年02月11日
    浏览(37)
  • uniapp分享微信提示由于不支持的分享类型无法分享到微信,App分享为微信小程序方法,由于不支持的分享类型无法分享到微信,由于应用和小程序未绑定在同意微信开放平台账号,无法分享到微信.

    在使用uniapp开发App分享微信,提示 由于不支持的分享类型无法分享到微信 ,就很苦恼,明明已经按照文档,该配置的都配置了,结果兴致勃勃的分享一下,结果提示一个这种错误,记录一下解决方案。 配置关联小程序 登录微信开放平台 https://open.weixin.qq.com/ 点击直达 在 管

    2024年02月09日
    浏览(38)
  • 【开源】ESP32怎样连接NEO6M模块接收GPS数据并显示在oled小屏幕上并可上传数据至Onenet云平台

    esp32连接neo6m在oled上显示定位数据 一.软件部分 安装Arduino 我们可以直接去官网上进行下载 https://www.arduino.cc/en/software 选择第一个 即可开始下载 将Arduino设置为中文,选择File–打开Preferences–language–中文简体 需要安装ESP32库,选择文件–首选项–在其他管理器开发地址写入

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包