【最新】微信小程序连接onenet——stm32+esp8266+onenet实现查看温湿度,控制单片机

微信小程序——stm32+esp8266+onenet实现查看温湿度,控制单片机

(最新已验证)stm32 + 新版 onenet +dht11+esp8266/01s + mqtt物联网上报温湿度和控制单片机(保姆级教程)

:↓↓👇 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇  👇  👇  👇  👇  👇  👇  👇  👇 

(最新已验证)stm32 + 新版 onenet +dht11+esp8266/01s + mqtt物联网上报温湿度和控制单片机(保姆级教程)icon-default.png?t=O83Ahttps://blog.csdn.net/Wang2869902214/article/details/142501323

注       👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆

注:代码和文章内容创作不易,使用或分享代码时请标注来源

读者们也可以加入STM32链接OneNET的群聊,交流一些遇到的问题也可以互相探讨:

                资料代码自助下载            Q:983362248

效果展示:

微信小程序stm32+esp8266+onenet显示温湿度和控制单片机

下图为微信小程序演示图 :

 详细功能描述:

1.查看数据:能够显示单片机上传到OneNET MQTT 设备的数据

2.下发数据:能够使用OneNET的属性设置,下发数据去控制单片机执行对应的操作

微信小程序中使用OneNET API的Token

注意:这里的Token2.0软件生成后的的Token与前面单片机代码中AT指令的Token不一样,不要混淆了

下载Token2.0 

 放在百度云盘中一直说我链接违规,OneNET官方下载区这个软件也找不到了,很奇怪,所以需要资料的读者们,可以评论区留言联系方式,

或者在交流群中, 资料代码自助下载    Q:983362248

Token2.0工具使用方法

①:userid/{用户id},用户id可以在OneNET的【用户中心】->【访问权限】中获取

②:截止时间戳,填写一个几年后的时间戳即可

③:填入用户AccessKey,可以在OneNET的【用户中心】->【访问权限】中获取

④:选择 sha1  

⑤:填入 2022-05-01  【格式一致】

最后点击右边的生成,最后会得到微信小程序用的Token

代码详细描述:

信息设置

  // 页面初始数据  
  data: {  
    onenetData: [],       // 用来存储设备属性值的数组  
    deviceStatus: [],     // 用来存储设备状态信息的数组  
  },  
  config: {  
    //生成authInfo教程地址:https://blog.csdn.net/Wang2869902214/article/details/134910701,看完记得点个赞噢!
    authInfo: "version=2022-05-01&res=userid************245&met*****************n=Jh9mxJLncSY8CUNh*******HXVkJXk%3D",  
    productId: "Yq****hrM6p",  //产品id
    deviceName: "C***",       //设备名称
    apiBaseUrl: "https://iot-api.heclouds.com",  
    startTime: 0,  
    endTime: 0,  
    limit: 1  
  },  

 介绍如何在微信小程序调用OneNET的API(GET请求)

                这里以获取设备最新状态为例(获取温湿度)

// 获取mqtt设备最新属性值  
  fetchOnenetData() {  
    const { apiBaseUrl, productId, deviceName, authInfo } = this.config;  
    wx.request({  
      url: `${apiBaseUrl}/thingmodel/query-device-property?product_id=${productId}&device_name=${deviceName}`,  
      method: "GET",  
      header: {  
        'Authorization': authInfo  
      },  
      success: (res) => {  
        // 更新设备属性值数据  
        this.setData({  
          onenetData: res.data  
        });  
      },  
      fail: (err) => {  
        console.log("OneNET数据请求失败");  
        console.error(err); // 处理请求失败的情况  
      }  
    });  
  },  

执行成功后会将数据放入【onenetData】中,如下图所示:

之后就可以利用这个数据去实现你想要的功能了

介绍如何在微信小程序调用OneNET的API(POST请求)

// 设置设备属性值  
setOnenetData(CommandValue) {  
  const { apiBaseUrl, productId, deviceName, authInfo } = this.config;  
  wx.request({  
    url: `${apiBaseUrl}/thingmodel/set-device-property`,  
    method: 'POST',  
    header: {  
      'Authorization': authInfo,  
    },  
    data: {  
      "product_id": productId,  
      "device_name": deviceName,  
      "params": {  
        "cmd": CommandValue  
      }  
    },  
    success: (res) => {  
      console.log("设备状态信息");  
      console.log('成功接收数据:', res.data); // 打印接收到的数据  
  
      // 检查响应是否成功  
      if (res.data && res.data.code === 0 && res.data.data && res.data.data.code === 200) {  
        // 显示成功提示框  
        wx.showToast({  
          title: '操作成功', // 提示的文字内容  
          icon: 'none', // 图标类型,默认是'none'  
          duration: 500 // 提示框自动隐藏的时间,单位是毫秒  
        });  
      } else {  
        // 可选:如果需要,也可以在这里处理非成功的情况  
        console.log('操作未成功,具体信息:', res.data);  
      }  
    },  
    fail: (err) => {  
      console.log("设备状态信息请求失败");  
      console.log('请求失败:', err); // 打印错误信息  
  
      // 可选:显示失败提示框  
      wx.showToast({  
        title: '操作失败',  
        icon: 'none',  
        duration: 1000  
      });  
    }  
  });  
},  

这里的POST API相当于是OneNET API调试中的属性设置,用来下发数据:

例如下方的代码,就是调用上方的POST请求代码去实现属性设置,从而单片机接收到数据去执行对应的操作,这里还包含了回应措施

应用场景如下:

如果你需要控制开关灯,你要如何确定单片机执行了你的操作呢,在文章最开头的链接中,里面包含了单片机的代码,如果单片机接收到了微信小程序的数据后,如果能提取出指令,那么就会回应微信小程序,代表单片机收到数据了,如下图所示,如果单片机返回了正确的code,就会显示操作成功:

代码:
 

success: (res) => {  
      console.log("设备状态信息");  
      console.log('成功接收数据:', res.data); // 打印接收到的数据  
  
      // 检查响应是否成功  
      if (res.data && res.data.code === 0 && res.data.data && res.data.data.code === 200) {  
        // 显示成功提示框  
        wx.showToast({  
          title: '操作成功', // 提示的文字内容  
          icon: 'none', // 图标类型,默认是'none'  
          duration: 500 // 提示框自动隐藏的时间,单位是毫秒  
        });  
      } else {  
        // 可选:如果需要,也可以在这里处理非成功的情况  
        console.log('操作未成功,具体信息:', res.data);  
      }  
    },  
    fail: (err) => {  
      console.log("设备状态信息请求失败");  
      console.log('请求失败:', err); // 打印错误信息  
  
      // 可选:显示失败提示框  
      wx.showToast({  
        title: '操作失败',  
        icon: 'none',  
        duration: 1000  
      });  
    }  
  });  

如下图所示: 

  // 开灯逻辑的实现  
  toggleLightOn() {  
    console.log('开灯');  
    this.setOnenetData(10021); // 开灯时设置属性  
  },  
  
  // 关灯逻辑的实现  
  toggleLightOff() {  
    console.log('关灯');  
    this.setOnenetData(10020); // 关灯时设置
  }

附加:

类似上方的GET或者POST请求代码还可以实现更多的功能,具体可以参考下面的图片中,自行浏览其用法,其他的用法与上方的差别不大,只需更改具体的url参数即可

获取到的数据使用方法 

这里使用{{onenetData.data[1].value}},下标需要根据你的实际数据来确定下标数

  <!-- 设备属性值展示,根据属性类型使用不同的单位 -->
  <view class="data-values">
    <!-- 显示可调电阻,单位为百分比(%) -->
    <text style="font-size: 50rpx; margin-bottom: 280rpx;">{{onenetData.data[2].value}} ℃</text>
    <!-- 显示温度值,颜色根据计算结果变化,单位为摄氏度(℃) -->
    <text style="font-size: 50rpx; ">{{onenetData.data[1].value}} %</text>
  </view>

例如:

 

如果需要湿度的value值,以上图数据为例:
 湿度值:{{onenetData.data[1].value}}

手机预览:

如果是直接使用博主提供的微信小程序文件,需要更改微信小程序的AppId

然后手机预览微信小程序后,需要在手机微信小程序中右上角点击三个点,然后进入【开发调试】

再重新进入微信小程序即可

文章结尾

如需获取资料,请点赞收藏后,评论区留下联系方式,博主看到后第一时间发送代码!

读者们也可以加入STM32链接OneNET的群聊,交流一些遇到的问题也可以互相探讨:

                资料代码自助下载            Q:983362248

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/887348.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

unreal engine5制作动作类游戏时,我们使用刀剑等武器攻击怪物或敌方单位时,发现攻击特效、伤害等没有触发

UE5系列文章目录 文章目录 UE5系列文章目录前言一、问题分析二、解决方法1. 添加项目设置碰撞检测通道2.玩家角色碰撞设置3.怪物角色碰撞预设 最终效果 前言 在使用unreal engine5制作动作类游戏时&#xff0c;我们使用刀剑等武器攻击怪物或敌方单位时&#xff0c;发现攻击特效…

(17)MATLAB使用伽马(gamma)分布生成Nakagami-m分布的方法1

文章目录 前言一、使用伽马分布生成Nakagami分布随机变量的方法一二、MATLAB仿真代码后续 前言 MATLAB在R2013a版本中引入Nakagami分布对象&#xff0c;可以用来生成Nakagami随机变量。但是在更早的MATLAB版本中&#xff0c;并没有可以直接生成 Nakagami分布的随机变量的内置的…

51单片机系列-按键检测原理

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 独立按键是检测低电平的。 下面我们来看一张对应的电路原理图&#xff1a; 在这张图当中&#xff0c;P1&#xff0c;P2&#xff0c;P3内部都上拉了电阻&#xff0c;但是P0没有&am…

一款基于.NET开发的简易高效的文件转换器

前言 今天大姚给大家分享一款基于.NET开发的免费&#xff08;GPL-3.0 license&#xff09;、简易、高效的文件转换器&#xff0c;允许用户通过Windows资源管理器的上下文菜单来转换和压缩一个或多个文件&#xff1a;FileConverter。 使用技术栈 ffmpeg&#xff1a;作为文件转换…

知识图谱入门——10:使用 spaCy 进行命名实体识别(NER)的进阶应用:基于词袋的实体识别与知识抽取

在构建知识图谱的过程中&#xff0c;如何准确地识别和提取实体是关键。spaCy 提供了强大的命名实体识别&#xff08;NER&#xff09;功能&#xff0c;我们可以结合自定义规则和工具来实现更精准的实体抽取。本文将详细探讨如何在 spaCy 中实现自定义实体抽取&#xff0c;包括使…

【Nacos 架构 原理】服务发现模块之Nacos注册中心服务数据模型

文章目录 服务&#xff08;Service&#xff09;和服务实例&#xff08;Instance&#xff09;定义服务服务元数据定义实例实例元数据持久化属性 集群定义集群 生命周期服务的生命周期实例的生命周期集群的生命周期元数据的生命周期 服务&#xff08;Service&#xff09;和服务实…

[Meachines] [Easy] Sea WonderCMS-XSS-RCE+System Monitor 命令注入

信息收集 IP AddressOpening Ports10.10.11.28TCP:22&#xff0c;80 $ nmap -p- 10.10.11.28 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 e3:54:…

计算机视觉——图像修复综述篇

目录 1. Deterministic Image Inpainting 判别器图像修复 1.1. sigle-shot framework (1) Generators (2) training objects / Loss Functions 1.2. two-stage framework 2. Stochastic Image Inpainting 随机图像修复 2.1. VAE-based methods 2.2. GAN-based methods …

第 21 章 一条记录的多幅面孔——事务的隔离级别与 MVCC

21.1 事前准备 CREATE TABLE hero ( number INT, NAME VARCHAR ( 100 ), country VARCHAR ( 100 ), PRIMARY KEY ( number ) ) ENGINE INNODB CHARSET utf8;INSERT INTO hero VALUES ( 1, 刘备, 蜀 );21.2 事务隔离级别 在保证事务隔离性的前提下&#xff0c;使用不同的隔…

RTX4060+ubuntu22.04+cuda11.8.0+cuDNN8.6.0 如何根据显卡型号和系统配置cuda和cuDNN所需的安装环境

文章目录 &#x1f315;电脑原配置&#x1f315;安装cuda和cuDNN前的环境选择&#x1f319;cuDNN与CUDA tookit和nvidia driver的对应关系&#x1f319;cuda版本选择⭐查看自己的nvidia driver版本和最大支持的CUDA版本⭐最小支持版本 &#x1f319;查看11.8.0版本的cuda和ubun…

Redis:hash类型

Redis&#xff1a;hash类型 hash命令设置与读取HSETHGETHMGETHSETNX 哈希操作HEXISTSHDELHKEYSHVALSHGETALLHLENHINCRBYHINCRBYFLOAT 内部编码ziplisthashtable 目前主流的编程语言中&#xff0c;几乎都提供了哈希表相关的容器&#xff0c;Redis自然也会支持对应的内容&#xf…

数据结构之树(4)

摘要&#xff1a;本篇主要讲哈夫曼树、并查集、二叉排序树、平衡二叉树等&#xff0c;非常非常非常重要&#xff01;&#xff01;&#xff01; 一、哈夫曼树 基于霍夫曼树&#xff0c;利用霍夫曼编码进行通信可以大大提高信道利用率&#xff0c;缩短信息传输时间&#xff0c;…

OpenCV透视变换

#透视变换 import cv2 import numpy as np import matplotlib.pyplot as pltimg cv2.imread(coins.jpg,1)imgInfo img.shape height imgInfo[0] width imgInfo[1] #src 4->dst 4 (左上角 左下角 右上角 右下角) matSrc np.float32([[200,100],[200,400],[600,100],[wid…

Linux:进程间通信之信号量

system V的进程间通信除了共享内存&#xff0c;还有消息队列和信号量 IPC&#xff08;进程间通信的简称&#xff09; 消息队列 消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法 每个数据块都被认为是有一个类型&#xff0c;接收者进程接收的数据块可以有不同…

Ray_Tracing_The_Next_Week下

5image Texture Mapping 图像纹理映射 我们之前虽然在交点信息新增了uv属性&#xff0c;但其实并没有使用&#xff0c;而是通过p交点笛卡尔坐标确定瓷砖纹理或者大理石噪声纹理的值 现在通过uv坐标读取图片&#xff0c;通过std_image库stbi_load&#xff08;path&#xff09;…

Kubernetes云原生存储解决方案之 Rook Ceph实践探究

Kubernetes云原生存储解决方案之 Rook Ceph实践探究 除了手动部署独立的 Ceph 集群并配置与Kubernetes进行对接外&#xff0c;Rook Ceph 支持直接在 Kubernetes 集群上部署 Ceph 集群。 通过Rook Ceph云原生存储编排平台&#xff0c;使得 Kubernetes 集群中启用高可用的 Ceph…

【记录】Excel|Excel 打印成 PDF 页数太多怎么办

【记录】Excel&#xff5c;解决 Excel 打印成 PDF 页数过多的问题 文章目录 【记录】Excel&#xff5c;解决 Excel 打印成 PDF 页数过多的问题方法一&#xff1a;调整页边距WPS OfficeMicrosoft Excel 方法二&#xff1a;优化页面布局调整列宽和行高使用“页面布局”视图合并单…

蓝牙定位的MATLAB仿真程序(基于信号强度,平面内的定位,四个蓝牙基站)

这段代码通过RSSI信号强度实现了蓝牙定位,展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。它涵盖了信号衰减模型、距离计算和最小二乘法估计等基本概念。通过图形化输出,用户可以直观地看到真实位置与估计位置的关系。 文章目录 蓝牙定位原理蓝牙定位的原理优缺…

实验5 累加器实验

实验5 累加器实验 6.1实验目的 1、理解累加器的概念和作用。 2、连接运算器、存储器和累加器&#xff0c;熟悉计算机的数据通路。 3、掌握使用微命令执行各种操作的方法。 6.2实验要求 1、做好实验预习&#xff0c;读懂实验电路图&#xff0c;熟悉实验元器件的功能特性和使用…

网络基础 【HTTP】

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux初窥门径⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a; &#x1f4bb;操作环境&#xff1a; CentOS 7.6 华为云远程服务器 &#x1f339;关注我&#x1faf5;带你学习更多Linux知识…