【STM32 x ESP8266】连接阿里云 MQTT 服务器(报文连接)
具体如何在阿里云创建一个 MQTT 服务器我就不写出来了,可以去百度一下(主要是我忘了,不好演示)。
有关 MQTT 报文的一些标识在我前面的一篇文章中讲过,感兴趣的可以去看看(有关代码部分讲解的内容也在那里,这里就不细讲了,主要讲如何连接的)
插一嘴,如果有同学找不到可以创建阿里云 MQTT 服务器的地方,检查一下是不是地区没选到华东2(上海)。
一、获取阿里云 MQTT 服务器连接参数
下面的连接方法是参照阿里云的手册进行连接的,有兴趣的同学可以同时看看。
1、创建好一个产品后在创建两个设备(后面演示要用到)
2、先随便进入一个设备中,这里选择的是 test 设备。点击查看DeviceSecret。
3、将三元组的内容分别复制到 mqtt_config.h 文件的这个位置下。
4、点击查看 MQTT 连接参数,只需复制 mqttHostUrl 即可。
5、密码使用阿里云提供的密码生成工具。下载解压完成后,点击 sign.html,填写对应设备信息,点击生成即可。将生成的密码复制到 Password 中。
至此,该示例代码就可以连接上阿里云 MQTT 服务器了。
二、认识阿里云 MQTT 服务器上的主题
有关阿里云的主题介绍在阿里云官方手册中有介绍,感兴趣的同学可以去了解一下。
这些主题可以在产品的 Topic 类列表中查看。
三、如何在阿里云 MQTT 服务器上显示数据
1、点击产品的功能定义。点击编辑草稿。
2、点击添加自定义功能。这里是打算显示温度的一个变化情况。添加完成之后记得点击发布上线!
3、通过查阅官方手册,得知需要向 Topic:/sys/${productKey}/${deviceName}/thing/event/property/post
发送 JSON 格式的数据。该手册中有说明 JSON 格式数据有哪些内容可以添加。还举出了一个例子,其中最重要的就是 params 参数了,该字段中的子参数名字就是前面填写的标识符 temp。
4、在示例代码中,向服务器发送了一个温度值为 6 的消息。
5、运行代码后,在 test 设备的物模型数据中即可观察到温度的值。
四、如何做到两个设备之间的通信
在通常情况下,我们比较常用的需求还是像其他 MQTT 服务器那样一个设备发布了一个携带信息的主题 A 后,订阅该主题 A 的另一个设备就能收到该消息,但在阿里云 MQTT 服务器中却不能这样子,往往是发送给主题 A 的消息却没有发送给订阅了 A 的设备。
如果要实现此功能,就要借助阿里云的另一个功能:云产品流转。
1、要实现该功能,首先要准备两个设备,前面已经创建了一个 test 设备,现在再创建一个 mqtt 设备。并自定义两个主题。
2、在规则引擎中点击云产品流转,切换到旧版。
3、点击创建规则。
4、进入到刚创建好的规则下。点击编写 SQL。
该 SQL 语句的作用是:监控产品 阿里mqtt 中名字为 mqtt 这台设备的发布的主题 /h18lpJMiSVO/mqtt/user/123
,然后把里面发布的消息全部提取出来。
① *代表提取所有消息
② 选择自定义的主题
③ 选择 阿里mqtt 产品中设备
④ 选择名字为 mqtt 的这台设备
⑤ 选择这台设备发布的主题(/h18lpJMiSVO/mqtt/user/123
)
大白话:
监控名字为 mqtt 的设备发布的主题 /h18lpJMiSVO/mqtt/user/123
假设设备发布的消息是:{"data": 123}
执行上面的配置就把这个 {"data": 123}
提取了出来(注:发送的格式一定要是 JSON 格式的数据,并且格式要正确)
5、现在将消息提取出来了,还需要让服务器再转发到另一个设备:test 中。在转发数据中点击添加操作。
就是把上面配置 SQL 以后提取的数据 {"data": 123}
转发到/h18lpJMiSVO/test/user/abc
这个主题上
① 选择自定义
② 选择自己创建的一个产品
③ 选择名字为 test 的这台设备
④ 选择要转发到这台设备订阅的某个主题
6、启动规则
7、使用 MQTT.fx 登录 mqtt 设备(MQTT.fx连接文档)
这里我用的是阿里云比较新版本的计算密码的网页,对于连接 MQTT.fx 来说会更快一些。
8、在 MQTT.fx 上向 /h18lpJMiSVO/mqtt/user/123
主题发送数据 {"data":123}
,在板子上订阅 /h18lpJMiSVO/test/user/abc
主题。
9、关于这个数据转发的内容还有其他好玩的,感兴趣的可以去观摩一下这位大佬写的文章,数据转发部分在文章的后半部分。
【STM32 x ESP8266】连接阿里云 MQTT 服务器(报文连接)相关推荐
- 单片机AT指令操作GA6-B短信模块连接阿里云MQTT服务器(双向通信)
0. 前言 网上这种东西不太多,我也是看了不少资料弄出来了,觉得应该写点东西出来. 我用的板子不是arduino,用的是stm32,开发工具是Arduino IDE,因为Arduino IDE集成了较 ...
- 【单片机笔记】STM32+ESP8266通过AT指令WIFI连接阿里云MQTT服务器
上一篇使用USB转串口的方式通过ESP8266wifi模块的方式成功连接上了阿里云,现在就要通过单片机来替换电脑上位机了,这样单片机自动的去调用并发送串口数据更加方便,也更加符合一个产品的开发.板载的 ...
- 移远BC35-G配置网络连接阿里云MQTT发送数据
移远BC35/BC26/BC28配置网络连接阿里云MQTT发送数据(一)精.防踩坑 硬件准备 接线部分 软件准备 烧录固件 QFlash 4.17烧录 阿里云准备 测试准备(AT指令) 连接阿里云 第 ...
- ESP8266连接阿里云--MQTT协议
ESP8266连接阿里云–MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(Publish/Subscr ...
- 阿里云MQTT服务器搭建与测试(全图文,非常详细)
阿里云MQTT服务器搭建与测试 一. MQTT概念 二. 阿里云MQTT服务器搭建 1 阿里云平台注册及认证 2 添加平台 2 创建产品与设备 获取MQTT连接相关信息 三.MQTT.fx测试 1 M ...
- SecureCRT连接阿里云ECS服务器,经常掉线的解决方案
SecureCRT连接阿里云ECS服务器,经常掉线的解决方案 参考文章: (1)SecureCRT连接阿里云ECS服务器,经常掉线的解决方案 (2)https://www.cnblogs.com/db ...
- 【阿里云ECS使用FTP】使用FileZilla连接阿里云Windows服务器
使用FileZilla连接阿里云Windows服务器 1.工具 ECS服务器安装FileZilla Server,服务端官网下载地址 本地电脑安装FileZilla Client,客户端官网下载地址 ...
- 使用VScode连接阿里云远程服务器
使用VScode连接阿里云远程服务器: 文章目录 准备工作 添加新的连接 开始连接 准备工作 下载vscode 安装中文插件 安装ssh插件 添加新的连接 在阿里云找到服务器的ip地址 将地址复制进配 ...
- 本地电脑如何远程连接阿里云WINDOWS服务器
一.前言 要想本地电脑远程连接阿里云WINDOWS服务器,需要做以下准备工作: (1).购买阿里云WINDOWS服务器.(我购买的是阿里云WINDOWS SERVER 2019服务器,内存8G) (2 ...
最新文章
- 【好文】带你用Python开发个机器学习软件!
- ASP.NET 配置文件加密
- 后端程序员必备:书写高质量SQL的30条建议
- JVM 分析工具和查看命令,超详细
- use regular expression instead of ABAP function module to parse attachment
- css文字排列 - 代码篇
- 计算机硬盘出现过哪些问题,出现这几种征兆, 说明您的电脑机械硬盘可能就有问题了!...
- AIM Tech Round 5C. Rectangles 思维
- poi之Excel下载之详细设置
- Ubuntu 20.04 无连接图标无网络问题
- Shader学习7——法线贴图
- Java并发框架——AQS阻塞队列管理(三)——CLH锁改造
- java 读取url获取的xml
- 校园共享单车停放问题的调研
- echarts在中国地图上绘制各省指标
- RK3588平台开发系列讲解(PWM篇)PWM及backlight的使用方法
- 码,主码,主属性,非主属性,平凡函数依赖,完全依赖等词解释
- 大数据人工智能领域从菜鸟到高手晋级指南
- ffmpeg设置视频帧率
- Android查看、修改KeyAlias
热门文章
- Python 列表的方法
- css设置背景颜色/背景图像/背景图像平铺/背景图像位置/背景图像固定显示/综合设置元素背景的方法(学习笔记)
- python使用opencv实现人脸检测
- 计算机硬盘写入量,如何查询固态硬盘SSD的总写入量?
- Uav开发杂记-4-无人机开发的C-C++
- 青蛙的约会(POJ 1061 扩展欧几里德算法)
- 动态内存分配(详解)
- Ubuntu 18.04 修改中国时区
- Oracle-基本SQL语句
- 方舟生存显示都是外国服务器,方舟生存进化:在新服的国人,都是如何跟外国人交流的?...