当前位置: 首页 > news >正文

【智能家居入门之微信小程序控制下位机】(STM32、ONENET云平台、微信小程序、HTTP协议)

实现微信小程序控制单片机外设动作

    • 一、使用ONENET可视化组件控制单片机外设动作
    • 二、使用微信小程序控制单片机外设动作
    • 三、总结

本篇博客话接上文: https://blog.csdn.net/m0_71523511/article/details/135892908
上一篇博客实现了微信小程序接收单片机上传的数据,本篇博客实现微信小程序控制单片机外设动作,这样两篇博客合起来就成了完整的最简单智能家居。项目源码也在上一篇博客中。

一、使用ONENET可视化组件控制单片机外设动作

首先进入多协议接入界面,选择之前创建好的产品
在这里插入图片描述
点击添加数据流模板
在这里插入图片描述
添加成功之后点击设备列表里的数据流,就可以看到多了一个数据流
在这里插入图片描述
接下来进入可视化项目
在这里插入图片描述

在这里插入图片描述
然后点击编辑进入编辑界面
这里由于我的免费体验时间到了,所以直接用b站up主的图片:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
保存之后点击预览,此时就可以点击按钮了,在设备管理中的数据流中可以看到ledbtn数据流变化:
在这里插入图片描述
这样设置完成之后就可以进入keil编辑代码了,下面是主函数中接收指令的代码:

ledbtn = esp8266_get_data("ledbtn");//不断获取云平台下发打开或关闭LED指令if(ledbtn == 1){LED0 = 0;}else{LED0 = 1;}

二、使用微信小程序控制单片机外设动作

在上一节微信小程序代码的基础上添加按键来实现本节功能:
①index.wxss文件
将图片和字体大小改小:

/**index.wxss**/
.userinfo {display: flex;flex-direction: column;align-items: center;color: rgb(141, 10, 10);font-size: 15px;
}.img {width: 100rpx;height: 100rpx;
}.usermotto {margin-top: 200px;
}

②index.wxml文件
最后加上这两行代码,添加按键:

<button type="primary" style="margin-top: 20px;" bindtap="kai">开灯</button>
<button type="warn" bindtap="guan">关灯</button>

③index.js文件
onload函数前加上两函数:

  kai:function(){let data={"datastreams": [  {"id": "ledbtn","datapoints":[{"value": 1}]},//led是数据流的名称,value是要传上去的数值]	}//按钮发送命令控制硬件wx.request({url:'https://api.heclouds.com/devices/1038269453/datapoints',header: {'content-type': 'application/json','api-key':'wfsF4bCGtQIQmW=3wTsPnrdjuFA='},method: 'POST',data: JSON.stringify(data),//data数据转换成JSON格式success(res){console.log("成功",res.data)},fail(res){console.log("失败",res)}})},guan:function(){let data={"datastreams": [  
{"id": "ledbtn","datapoints":[{"value": 0}]},
//led是数据流的名称,value是要传上去的数值]	
}//按钮发送命令控制硬件wx.request({url:'https://api.heclouds.com/devices/1038269453/datapoints',header: {'content-type': 'application/json','api-key':'wfsF4bCGtQIQmW=3wTsPnrdjuFA='},method: 'POST',data: JSON.stringify(data),//data数据转换成JSON格式success(res){console.log("成功",res.data)},fail(res){console.log("失败",res)}})
},

这里注意设备id和api-key记得换。
在这里插入图片描述

三、总结

经过实测,这个发送数据给云平台不知道什么原因总是发送失败,这样会导致小程序下发数据时无法收到,因为程序卡死在重发数据给云平台的逻辑里,这个项目的代码实现比较鸡肋,延迟太大,之后会继续给出基于MQTT协议的智能家居和使用freertos的智能家居项目。
总的来说这个项目用于环境监测是没问题的,但是无法实时准确的使用上位机控制下位机。

http://www.lryc.cn/news/290362.html

相关文章:

  • 07.领域驱动设计:了解3种常见微服务架构模型的对比和分析
  • 设计模式——模板方法模式(Template Method Pattern)
  • 07. STP的基本配置
  • oracle分区范围修改与数据迁移处理
  • 回归预测 | Matlab实现CPO-LSSVM【24年新算法】冠豪猪优化最小二乘支持向量机多变量回归预测
  • SeaTunnel Web安装 一把成
  • 对话泛能网程路:能源产业互联网,行至中程
  • Doris简介及单机部署(超详细)
  • Pytest 识别case规则
  • gorm+mysql查询/修改json列相关操作汇总
  • CMake-Cookbook 第0章 配置环境
  • 优质硬盘检测工具SMART Utility,保障您的Mac数据安全
  • Spring: alibaba代码规范校验工具checkstyle
  • c++线程thread示例
  • Compose | UI组件(十一) | Spacer - 留白
  • PyTorch的nn.Module类的详细介绍
  • python使用activemq库ActiveMQClient类的连接activemq并订阅、发送和接收消息
  • 【Flutter 面试题】Dart是什么?Dart和Flutter有什么关系?
  • 前后台分离跨域交互
  • React16源码: React中处理LegacyContext相关的源码实现
  • Boost.Test资源及示例
  • 数据结构二叉树
  • JavaScript继承与原型链
  • SouthLeetCode-打卡24年01月第4周
  • Linux——磁盘和文件系统(一)
  • EasyCVR视频智能监管系统方案设计与应用
  • Ubuntu搭建国标平台wvp-GB28181-pro
  • LC 2808. 使循环数组所有元素相等的最少秒数
  • Qt|大小端数据转换
  • 禅道添加自定义字段