一、目的
- 目的:背景:在华清学习之余,自行研究了智能家居的东西,为实现MQTT服务器私有化而研究此功能
- 技术定位:初级
- 整体思路:主要利用EMQX来实现
二、MQTT说明
2.1 MQTT
MQTT即消息队列遥测传输技术协议,基于发布/订阅(publish/subscribe)。
目的:为连接远程设备提供实时的可靠的消息服务。
2.2 MQTT协议原理
- 发布者(Publish)
- 代理服务器(Broker)
- 订阅者(Subscribe)
其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
暂时无法在文档外展示此内容
2.3 MQTT的主要特性
- 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
- 对付在内容屏蔽的消息传输。
- 使用TCP/IP提供网络连接。
- 有三种消息发布质量:
0:最多⼀次,尽操作环境所能提供的最⼤努⼒分发消息。消息可能会丢失。
1:⾄少⼀次,保证消息可以到达,但是可能会重复。
2:仅⼀次,保证消息只到达⼀次。
2.4MQTT协议
2.4.1传输内容
MQTT传输的消息分为:主题(Topic)和负载(Payload)两部分组成:
Topic:消息的类型,订阅者订阅后就会收到该主题的消息内容。
Payload:消息的内容,指订阅者具体要使用的内容。
2.4.2数据包结构
固定头(Fixed Header)。存在于所有MQTT数据包中,标示数据包类型及数据包的分组类标识。
可变头(Variable header)。存在于部分MQTT中,数据包类型决定了可变头是否存在及其具体内容。
消息体。存在于部分MQTT数据包中,表示客户端收到的具体内容。
三、安装
在衡量多个种类的MQTT服务器后,暂时选用EMQX作为服务器。但是此款服务器被中国代理,页面多处有广告。好在可以使用apt指令直接安装。
上连接中有多个系统的安装方法,直接安装就行,没有技术难度。注意,网页控制界面使用的是18083接口,mqtt使用的是1883接口。要是租用的服务器需要开放这些端口。
启动完成后会出现以下字样。
EMQX 5.0.0 is started successfully!
在浏览器中输入:ip地址:18083 就可以进入到管理界面。
默认账号:admin
密码:publish
参考文档: