MQTT知识指南以及在Python的应用

谈到物联网就会谈到MQTT协议,之前一段时间我虽然在书上看到过,也是粗略一看也没深究,主要自己只是维度不够,项目中也没有用到,就不了了之了。最近老板找了个架构师准备用心好好搞一搞公司那个平台,提出新的架构,用到了MQTT协议,用心研究了一番,发现以前写了好多的功能都是MQTT自带的,花了好多时间重复造轮子。最近看了好多相关的东西,虽然蛮多深层次的东西都没有摸到,但也有些了解,故搜集了一些资料有序的记录下来,大部分内容来自Steve以及Maulin Tolia的博客,十分感谢。

1. MQTT基础

图文并茂的MQTT基础学习,后来又发现了个湾湾的MQTT教学,同为两岸同胞,感觉切实际更好一点

其他补充:

1.1 关于MQTT版本:

最初的MQT T是在1999年设计的,已经使用了很多年,并且基于TCP/IP网络设计。
MQTTv3.1.1是常用版本。

  • MQTT v3.1.0 – 几乎与3.1.1没什么区别
  • MQTT v3.1.1 – 常用的版本,想看底层的MQTT协议数据包结构,可以看这里
  • MQTT v5 – 当前受限使用,目前只有C语言客户端支持,新功能阐述以及正在开发的Python客户端
  • MQTT-SN – 旨在通过UDP,ZigBee和其他传输进行工作,但当前并不流行

1.2 关于MQTT与HTTP

1.3 基于websocket的MQTT

Websockets允许直接在Web浏览器中接收MQTT数据,Javascript MQTT Client提供了对Web浏览器的MQTT websocket支持
Using MQTT Over WebSockets with Mosquitto
MQTT Web Application Using JavaScript and Paho MQTT Library

1.4 MQTT客户端

对于MQTTv3.1.1,基本可以在所有系统上使用所有的编程语言,例子中最常见的是基本就是Python以及Node.js

1.5 常见的broker

第一个它是按mqtt broker地址公有私有来分,旨在区分哪些能直接测试用,哪些自己搭建:
10 Free Public & Private MQTT Brokers(For Testing & Production)
而第二种是根据自建需求对比不同的broker:
MQTT Broker的需求和各大Broker对比

1.6 MQTT安全机制简介

  • Client ids
  • Usernames and passwords (Restricting Access to topics)
  • Client Certificates (Restricting Access to topics)

具体看Introduction to MQTT Security Mechanisms

2. Python MQTT使用

Python mqtt客户端有很多库,特意找了篇文章进行了比较:Benchmarking popular MQTT + JSON implementations

一开始看的MQTT Python With Paho-MQTT (Beginner’s Guide With Example),然后是一些基础功能的使用,persistend session , qos level, retained messeges, last will基本都能在Maulin Tolia的博客找到,一目了然

要深究基本用法的各个参数以及对象,就要先了解整个mqtt的过程以及一些机制,参数与机制一一对应,就比如client.connection方法中的keepalive参数,或者loop_forever与loop_start区别与mqtt自身心跳机制的关系

这些进阶的内容可以在人气非常高的steve mqtt博客上看到,比如Python MQTT实际应用以及项目专栏,面面俱到,并且详细到啥都有~

虽然篇幅不多,但贴了好多链接,你品,你品,你细细品,OVER ~