MQTT简介

MQTT定义

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器(比如通过Twitter让房屋联网)的通信协议。

MQTT特点

MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:

1.使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;

2.对负载内容屏蔽的消息传输;

3.使用 TCP/IP 提供网络连接;

4.有三种消息发布服务质量:

  • “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

  • “至少一次”,确保消息到达,但消息重复可能会发生。

  • “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

5.小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;

6.使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;

MQTT特征原理

实现MQTT协议需要:客户端和服务器端

MQTT协议有三种身份:发布者(Pushlish)、代理(Broker)、订阅者(Subscribe)

MQTT的消息分为:主题(Topic)和负载(payload)两部分

Topic,可以理解为消息的类型,订阅者Subscribe之后,就会收到该主题的消息内容(payload)。

payload,可以理解为消息的内容,是指订阅者具体的使用内容

消息类型:

  • CONNECT:客户端连接到MQTT代理

  • CONNACK:连接确认

  • PUBLISH:新发布消息

  • PUBACK:新发布消息确认,是QoS 1给PUBLISH消息的回复

  • PUBREC:QoS 2消息流的第一部分,表示消息发布已记录

  • PUBREL:QoS 2消息流的第二部分,表示消息发布已释放

  • PUBCOMP:QoS 2消息流的第三部分,表示消息发布完成

  • SUBSCRIBE:客户端订阅某个主题

  • SUBACK:对于SUBSCRIBE消息的确认

  • UNSUBSCRIBE:客户端终止订阅的消息

  • UNSUBACK:对于UNSUBSCRIBE消息的确认

  • PINGREQ:心跳

  • PINGRESP:确认心跳

  • DISCONNECT:客户端终止连接前优雅地通知MQTT代理

MQTT应用

通过MQTT协议,目前已经扩展出了数十个MQTT服务器端程序,可以通过PHP,JAVA,Python,C,C#等系统语言来向MQTT发送相关消息。

此外,国内很多企业都广泛使用MQTT作为Android手机客户端与服务器端推送消息的协议。其中Sohu,Cmstop手机客户端中均有使用到MQTT作为消息推送消息。据Cmstop主要负责消息推送的高级研发工程师李文凯称,随着移动互联网的发展,MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息的收集,MQTT都可以作为考虑的方案之一。在未来MQTT会进入到我们生活的各各方面。

百度物接入loT及MQTT测试

配置

1.注册百度云账号,打开物接入界面:

2.在管理控制平台创建:

3.点击刚才创建的实例名称,并创建设备:

4.填写身份、策略、主题等信息

需要注意的是Topic和生成的密钥一定要记住,如果密钥丢了的话只能去重置密钥了。

基本配置就是这些了。

MQTT连接测试

1.点击连接测试:

2.填写刚才生成密钥,以及用户名称,然后点击Connect

3.连接之后开始测试,填写一下你刚才设置的主题,比如我设置的主题是qzsservice,步骤如下:

发送后底下就会显示Messages信息了,说明测试成功!

百度物接入服务器与手机连接测试

上面我们已经讲完了百度物接入怎么创建实例+连接测试了,下面讲一下连接测试发送消息怎么与手机程序相连。也就是服务器发送一条消息,手机程序接收。:

首先需要引入两个包:

然后就是通过一系列的操作:

  • 创建MQTT连接 createconnect

  • 订阅主题subscribe

代码我就不展示了,文末会贴出源码下载的地址

测试步骤:

1.完成第二部分的内容,记下生成的topic,server_utl,用户名,密钥

2.在手机程序Constants加入这些数据

3.运行程序,输入订阅的主题,如果显示“订阅主题成功”说明成功了,此时再MQTT服务器上发送一条消息,观察log,会显示收到的消息。

源码获取:加我的微信:lengquele5311
我的QQ群:
欢迎加入程序员招聘(内推)圈,群聊号码:810279701

大家可以关注我的微信公众号:「秦子帅」一个有质量、有态度的公众号!

MQTT详解及百度物接入连接手机测试(含源码)相关推荐

  1. c++ mqtt客户端_MQTT详解及百度物接入连接手机测试(含源码) 秦子帅

    MQTT简介 MQTT定义 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协议支 ...

  2. 区块链技术进阶-深入详解以太坊智能合约语言 solidity(含源码)-熊丽兵-专题视频课程...

    区块链技术进阶-深入详解以太坊智能合约语言 solidity(含源码)-103人已学习 课程介绍         区块链开发技术进阶-深入详解以太坊智能合约语言 solidity视频培训教程:本课程是 ...

  3. ADI Blackfin DSP处理器-BF533的开发详解68:电子琴的小应用(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 代码实现功能 代码实现了触摸屏电子琴的功能,运 ...

  4. ADI Blackfin DSP处理器-BF533的开发详解28:SD卡的文件系统(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 功能介绍 代码实现了通过文件系统读取 SD 卡 ...

  5. 详解非局部均值滤波原理以及用MATLAB源码实现

    详解非局部均值滤波原理以及用MATLAB源码实现 序言 均值滤波.中值滤波.高斯滤波在滤除噪声的过程中,无可避免的使图像的边缘细节和纹理信息所被滤除.针对此问题,Buades[1]等人提出了非局部均值 ...

  6. RabbitMQ详解以及spring对RabbitMQ的集成(附带部分源码解读)

    一·简介 1丶为什么要使用消息队列 https://wenku.baidu.com/view/e297236f83c4bb4cf7ecd193.html ①异步处理(高并发) ②系统解耦 ③流量削锋 ...

  7. LNMP架构详解(2)——Mysql、PHP、Nginx源码编译过程

    前言 本文将介绍LNMP架构中Mysql.PHP.Nginx的源码编译过程:这时有人不仅会问:在我们使用的Linux系统中,可以从yum源中获得mysql.php,为什么要进行如此漫长复杂的过程进行编 ...

  8. 疯狂python讲义视频 百度云-疯狂Python讲义 PDF 含源码工具版

    给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于Python编程.Python语法方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小124.3 MB,李刚编写,目前豆瓣.亚 ...

  9. 0基础快速入门CSS技术栈(6)—图解详细阐述说透CSS的浮动及应用、浮动的扩展及清除浮动和详解快速·1photoshop切图(附详细案例源码解析过程)2021-01-07更新

    文章目录 1. 浮动(float)重点提炼 2. CSS 布局的三种机制 3. 为什么需要浮动? 3.1 example01 4. 什么是浮动(float) 4.1 作用 4.1.1 example0 ...

  10. 详解Spring Security进阶身份认证之UserDetailsService(附源码)

    在上一篇Spring Security身份认证博文中,我们采用了配置文件的方式从数据库中读取用户进行登录.虽然该方式的灵活性相较于静态账号密码的方式灵活了许多,但是将数据库的结构暴露在明显的位置上,绝 ...

最新文章

  1. 介绍一下《windows安全性编程》之一
  2. python 并集union, 交集intersection, 差集difference, 对称差集symmetric_difference
  3. Struts2 简介
  4. Rstudio修改背景颜色和源
  5. 1900 页数学基础:面向 CS 的线性代数、拓扑、微积分和最优化
  6. html中链接不自动变色,HTML 点击 标签 链接 点击之后变色-转发【已解决】
  7. 考研复试考java_2019考研复试经验帖:过来人谈5件“小事”
  8. 开发利器之IntelliJ IDEA学习笔记
  9. NLP之路-一点小语言工具函数
  10. 斯坦福大学2019年NLP课程上线,下周二开课 | 附PPT+视频
  11. GBDT 特征提取(2)
  12. Flutter状态管理学习手册(三)——Bloc
  13. 烂泥:nagios监控单网卡双IP
  14. ubuntu 版mysql客户端工具_ubuntu安装mysql可视化工具MySQL-workbench及简单操作
  15. Python 玩转数据 17 - Pandas 数据处理 合并 pd.merge() df1.merge(df2)
  16. hub设备_【小O新品】办公设备的小助手,ORICO奥睿科HUB集线器新品来袭
  17. 供应链金融科技产品的核心竞争力究竟是什么?
  18. PL/SQL 工具远程连接Oracle数据库方法,plsql免安装oracle客户端直接配置oci实战演示
  19. 图片大小/像素/分辨率之间有什么关系
  20. LTE学习-OFDM

热门文章

  1. jsonp实战——换一换功能实现和时间戳的使用
  2. 【Git】报错解决cannot open .git/FETCH_HEAD: Permission denied
  3. 自动化测试任务管理器打开了很多chromedriver.exe和conhost.exe的进程
  4. 聊聊netty的ResourceLeakDetector
  5. 开发一款引擎涉及到哪些技术
  6. mysql like 结果集_语句select * from products where prod_name like '%se%'结果集包括( )_学小易找答案...
  7. 文化部要求巨人网络整改《巨人》游戏
  8. java版孢子_Minecraft Java 版 21w05a 发布
  9. CA与区块链之数字签名详解
  10. 计算机操作配置运行系统,简单三个操作步骤,电脑操作系统设置与优化,加快电脑的运行速度...