vany5921 发表于 2019-8-26 10:20:54

当M5StickC 遇上UIFLOW系列(五)MQTT

M5StickC支持MQTT服务,通过UIFlow内建的模块我们可以快速的堆叠出MQTT应用,接下来看一个简单实例来快速上手。下面的内容使用了一个CloudMQTT的免费服务器,大家可以到这里https://customer.cloudmqtt.com/login申请免费账号来使用,账号申请完成系统会给出相关的设置参数。
MQTT服务采用消息订阅和发布的形式来进行内容传输,特别适合带宽低,在嵌入式设备中资源开销较低,提供TCP/IP访问,非常适合有限的环境。


MQTT的消息发布质量分为三种:
“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
通常情况下我们传输传感器数据只需要最多传递一次。

在UIFlow的Advanced(高级)模块中可以找到MQTT,MQTT服务主要由以下几个参数:
1.sever:MQTT服务器的地址,这里为cloudmqtt给出的地址m16.cloudmqtt.com
2.port:服务器端口号,常用端口号为1883,这里cloudmqtt的端口为19801
3.user:MQTT账号登录名称,通常由服务器指定规则
4.password:访问服务的密码,通常由服务器生成
* client id为用户自定义,用来区别不同的客户端
* keepalive:心跳包,用来确认是否在线,根据服务器要求更改,没有特殊要求默认即可




服务器配置完成就可以写具体的应用了,发送和接收的消息都要通过订阅主题的消息取得,每个订阅了此内容的客户端都会收到。
订阅一个Hello的主题,只要MQTT服务器发送Hello主题那么我们就能收到内容,接下来只要根据内容执行不同操作就可以了,例如当接受到Hello的内容为helloworld时,在屏幕显示Hello I’m from MQTT




通过cloudMQTT服务器手动发送一条订阅消息,此时屏幕会显示Hello I’m from MQTT




除了接收消息,也可以用UIFlow发布订阅主题
按下A键时发布一条Hello的主题,内容为I received message from M5StickC





在cloudMQTT的服务器上订阅Hello主题,当接受到主题时会显示消息





至此我们就已经学完了MQTT的使用,只需要5分钟就能完成你想要的功能。

gada888 发表于 2019-10-16 21:07:23

实用的分享
页: [1]
查看完整版本: 当M5StickC 遇上UIFLOW系列(五)MQTT