• 006-微信小程序和ESP8266连接阿里云物联网平台,并通过云平台实现远程温湿度采集和继电器控制(预注册)


    <p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

    实现的功能

    微信小程序和ESP8266连接阿里云物联网平台,并实现微信小程序和ESP8266之间通信控制.

    前要

    请先学习完上一节!并配置好规则引擎!

    请先学习完上一节!并配置好规则引擎!

    请先学习完上一节!并配置好规则引擎!

    添加设备

    1.上一节我添加了一个名字为 8266LUASDK的产品

    然后在这个产品下注册了名字为Android 和 ESP8266 的设备

    这一节咱再在这个产品下注册个名字为 Mini 的设备

    这个设备作为给微信小程序接入使用

     

     

     4.点击查看

     

    5.打开本节微信小程序源码,并修改上面相应的参数

    如果日志打印有 connect 说明成功接入了阿里云平台

    测试(单片机程序还是使用的上一节的单片机程序)

    1.提醒

    可以直接用开发软件测试,也可以用真机测试

    测试的时候一次只能一个做测试! 否则就会相互挤掉连接.

    如果用手机测试,可以把软件设置为离线.

    2.选择添加自定义设备

    3.输入单片机使用的设备的名字

    4.点击这个设备进入控制页面

    5.控制页面会显示当前单片机采集的温湿度数据,还有开关状态

    6.控制继电器

    源码说明

    我再解释下一个事情:

    阿里云注册的一个设备就作为了一个mqtt客户端,你可以把这个设备作为单片机使用也可以作为APP使用.

    一个设备的信息同一时间只能一个设备去用,如果同时使用,就会挤掉线!!!!

    1.整体通信流程说明(就再叨叨这一遍)

    微信小程序和单片机设备都是作为了阿里云注册的设备接入.

    其实就是阿里云上面注册的两个设备通信.

    这节的微信小程序使用的云端注册的设备名字为 Mini 的设备接入云平台

    发布的主题是:  /{ProductKey}/{DeviceName}/user/update

    即:/a1kalhdMH2Z/Mini/user/update

     

    订阅的主题为:/{ProductKey}/{DeviceName}/user/get

    即:/a1kalhdMH2Z/Mini/user/get

     

    这节的单片机使用的云端注册的设备名字为 ESP8266 的设备接入云平台

    发布的主题是:  /{ProductKey}/{DeviceName}/user/update

    即:/a1kalhdMH2Z/ESP8266/user/update

     

    订阅的主题为:/{ProductKey}/{DeviceName}/user/get

    即:/a1kalhdMH2Z/ESP8266/user/get

     

    微信小程序和单片机设备各自作为阿里云的设备接入阿里云服务器.

    然后微信小程序 添加设备的时候是添加的单片机设备注册的名字

    然后微信小程序发布的消息为:(以控制继电器吸合为例)

    {"TargetDevice":"ESP8266","DeviceName":"Mini","data":"switch","bit":"1","status":"1"}

     

    TargetDevice 字段的值是 ESP8266,是微信小程序添加的设备的名字.

    DeviceName 字段的值是 Mini ,是微信小程序本身设备的名字.

    这条信息发给云平台以后,经过了转发规则

     

    注:(提取数据)  /a1kalhdMH2Z/+/user/update  里面的 + 代表任意字符串

    意思是提取符合主题 /a1kalhdMH2Z/任意/user/update  里面的所有消息

    上面的就提取了  

    {"TargetDevice":"ESP8266","DeviceName":"Mini","data":"switch","bit":"1","status":"1"}

    注:(对数据进行操作)   发布到另一个 Topic    /a1kalhdMH2Z/${TargetDevice}/user/get 

    ${TargetDevice}意思是提取消息里面字段为 TargetDevice 的字段值,然后替换上面的  ${TargetDevice}

    咱的消息是 {"TargetDevice":"ESP8266","DeviceName":"Mini","data":"switch","bit":"1","status":"1"}

    所以最终消息转发给下面的主题(也就是单片机订阅的主题)

    /a1kalhdMH2Z/ESP8266/user/get 

    然后单片机就收到了消息 {"TargetDevice":"ESP8266","DeviceName":"Mini","data":"switch","bit":"1","status":"1"}

    单片机接收到消息以后,提取 "DeviceName":"Mini"

    然后用自己的发布主题发布消息  /a1kalhdMH2Z/ESP8266/user/update

    消息为:

    {"TargetDevice":"Mini","DeviceName":"ESP8266","data":"switch","bit":"1","status":"1"}

     

    TargetDevice 字段的值改为了 Mini

    DeviceName 字段的值为单片机自己的设备名字  ESP8266

     

    消息发给了服务器,然后经过转发规则,同理 ,消息便会转发给了微信小程序

    最后微信小程序 提取消息里面的数据,就完成了通信

     

    2.微信小程序执行流程说明

    1.作为阿里云的一个设备接入云平台

    2.添加一个设备,并把添加的设备的名字存储到数据库

    3.点击跳转到控制页面时把设备名字传递过去

    4.控制页面获取设备名称并组合发送的消息

     

    5.组合自己的自定义主题

    6.发送消息

    7.接收处理消息

    单片机程序说明请看上一节

    单片机程序说明请看上一节

    单片机程序说明请看上一节

    结语

    用户也可以同时打开上一节的手机APP控制设备.

  • 相关阅读:
    js函数的Json写法
    Bootstrap3和Bootstrap4区别
    Unicode编码是什么
    保留字是什么
    范仁义js课程---5、js字面量和变量
    什么是脚本语言
    ECMAScript 版本
    TortoiseGit上传代码到GitHub
    Android Studio快捷键
    Android 适配
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/13888785.html
Copyright © 2020-2023  润新知