【嵌入式裸机开发】智能家居入门7:最新ONENET,MQTT协议接入,最全最新(微信小程序、MQTT协议、ONENET云平台、STM32)

前言

本篇文章介绍最新ONENET云平台的MQTT协议接入方法,在STM32上实现数据上云与服务器下发数据解析,以及微信小程序接入服务器。对于智能家居而言,最重要的就是通信,通信是否稳定是否响应快,这是最重要的,外设的连接与控制这些都是很简单的,网上的一搜直接就有现成的代码,所以本篇博客不会介绍关于外设的使用与控制,主要介绍最新ONENET的接入与消息解析,这个框架搭好以后,其它外设连接那都不是事儿。

硬件准备:
STM32F103C8T6
ESP8266-01S
OLED液晶显示屏或串口调试模块(USB转TTL)
DHT11(可有可无,自己虚构上传数据也可以)
烧录器


一、ONENET云平台创建产品与设备

这部分直接以视频的形式给出:

需要注意的点:
①数据协议:
这里选择的是OneJson,当然也可以选择数据流,但是它们对应的发送数据和接收数据的topic是不一样的,所以如果想省事直接使用本文代码,那就选择OneJson。
在这里插入图片描述

②新版三元组:
按照视频创建完毕后,进入设备管理的设备详情中,可以看到后续会用到的三个参数:
在这里插入图片描述


二、STM32端连接服务器前的准备

①token:
首先计算token,在连接时会用到:
在这里插入图片描述
上图中的clienid和username就是新版三元组中包含的其中两个参数:设备名称、产品ID,password就是使用官方软件计算生成的token。
接下来视频演示如何计算token:

重点提取如下:
在这里插入图片描述
纠错:上图中的时间过小,在后面多加随便一个数字既可:2810295937232。

②STM32端OneJson数据协议对应的发布、订阅topic:
在创建产品时我们选择的数据协议是OneJson,文档中有明确给出OneJson数据协议(物模型)的发布和订阅topic,如果数据协议选择数据流的小伙伴,在文档的这个界面往后翻翻就可以看到对应的。
在这里插入图片描述
在代码中,首先连接服务器,成功之后就可以订阅主题或者发布数据到主题中。
我们不止要知道发布订阅主题,对于上传数据而言还要知道上传的数据格式;对于订阅服务器下发的数据而言,还需要知道数据格式,以便于解析,下面第三点来介绍这些。

③STM32端OneJson数据协议对应的数据格式::
1、设备属性上报OneJSON数据格式:
在这里插入图片描述
图中很容易看出来数据格式中有些可以不用填,本文最终上传的数据格式如下:

{
  "id": "123",
  "params": {
    "temp": {
      "value": 25.00,
    },
    "humi": {
      "value": 70.00,
    }
  }
}

2、设备属性设置OneJSON数据格式(服务器下发数据):
在这里插入图片描述
本文代码中订阅话题之后,若是服务器下发数据,STM32端就会收到,打印出接收到的数据如下:

 +MQTTSUBRECV:0,"$sys/bs2u21MIHC/dht11/thing/property/set",54,{"id":"208","version":"1.0","params":{"fan_ctl":true}}

代码中会对此消息进行解析,就可以将控制命令给解出来进行动作了。

④esp8266-01s烧录新的mqtt固件:
下载固件与烧录软件:通过百度网盘分享的文件:new_onenet_mqtt固件烧录.rar
链接:https://pan.baidu.com/s/1aAEqlCVyUB-9ZoaFU0qf2w?pwd=1yjb 提取码:1yjb

具体烧录过程参考:

猜你喜欢

转载自blog.csdn.net/m0_71523511/article/details/141316931