博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【IOT开发】MQTT知识(总结版)
阅读量:2029 次
发布时间:2019-04-28

本文共 876 字,大约阅读时间需要 2 分钟。

消息等级QOS

一般呢,订阅设置为0,就可以了,那就说一下这个消息等级有什么用吧!

咱发送数据的时候也会携带一个消息等级:

假设是0 那么这条消息是不是真的发给MQTT服务器(Broker)了,就不知道了,如果设备多个,还真不敢保证真的发给服务器了。

假设是1 那么一个客户端发送消息以后呢,服务器一看消息等级是1,那么就会回给那个发送消息的客户端一个应答消息。客户端发送完消息以后其实内部会启动一个超时操作,如果多少时间内没有回复,那么它会再发一次

假设是2 这个呢就是消息一定要到达MQTT服务器.这个很苛刻,也比较占用内存

订阅/发布消息

一般包括以下内容

  • 发布/订阅的主题
  • 消息
  • 回传标志(默认0)
  • 消息等级【见1】
  • 是否需要服务器保留消息【下面同医嘱一起讲】
  • 消息的标识(一般用不到,默认1就可以)

遗嘱(will)

假设我手机和一个设备订阅主题和发布主题对应,我就能和这个设备通信了但是,我怎么知道这个设备掉线了呢?当然完全可以自己发信息给那个设备,如果不回复,就说明掉线了。

但是呢,MQTT服务器提供了一种方式假设我设置好设备的遗嘱消息是 offline 遗嘱发布的主题是 aaaaa,如果设备掉线,服务器就会给订阅了aaaaa的客户端发送 offline。

【注】:服务器如果在你设置的心跳包时间的1.5倍时间内,收不到心跳包就认为你掉线了。

心跳包

MQTT规定的,发送完连接协议之后,发送的心跳包数据是C0 00

发送时间:连接协议里面的心跳包时间(你可以提前发),然后服务器回复 D0 00

三元组

三元组是 product key/ device name / device secret


MQTT的C语言库一点记录

  • 官方库里面判断返回的数据

使用MQTTPacket_read(数据解析完存到的数组,数组长度,提取数据函数),最主要的是这个 提取数据函数transport_getdata,这个函数的格式不能变,官方规定的就是这个格式。

在这里插入图片描述

其中,Usart1ReadBuff为网络模块接收到的数据储存的地方,根据实际需要修改。

转载地址:http://runaf.baihongyu.com/

你可能感兴趣的文章
JavaScript(含DOM编程)
查看>>
第五讲、Jmeter性能测试实践—HTTP接口
查看>>
第十一讲、jmeter性能测试实战-web程序
查看>>
计算机网络
查看>>
fiddler抓包
查看>>
实现Data类
查看>>
进程及task_struct
查看>>
E - A == B ? HDU - 2054
查看>>
进程间通信之管道
查看>>
C语言学生成绩管理系统设计 《C语言程序设计》实训报告
查看>>
不将就的Python书单
查看>>
学习Java的9张思维导图
查看>>
计算机网络技术复习题 第十章 下一代因特网
查看>>
量子计算的人才、软件和硬件:解开你对量子的困惑
查看>>
浅谈细粒度实体分类的前世今生 | AI Time PhD知识图谱专题
查看>>
SIGDIAL 2020最佳论文得主:你的任务导向型对话系统表现够好吗?
查看>>
直播预告:任务导向对话的数据和平台建设|AI TIME PHD对话系统专题-2
查看>>
直播预告:对话系统中的个性化回复生成与异常输入检测-3
查看>>
直播预告:KdConv: 知识驱动的中文多轮对话数据集 | AI TIME PhD 对话系统专题-4
查看>>
AI 3.0时代,情感计算的颠覆性力量
查看>>