何为mqtt协议
在物联网的体系中,mqtt协议主要是解决跨网通信的难题,也就是说,串口屏使用的wifi体系走http协议只能由同在内网中的设备访问,无法做到外网(即互联网)访问到内网ip的串口屏,因此需要一个双方都能访问到的服务器作为中继完成外网对内网设备的通信,这就是mqtt服务器
通信原理:
- 首先,串口屏连接mqtt服务器,然后进行订阅消息(订阅时需指定统一的topic,用于区分服务器上多个通信组,不至于串消息)
- 当其他终端(外网)也链接该服务器,同时该设备向同一个topic发布一条消息
- 串口屏中订阅该消息的线程就会收到该消息,收到后会调用OnWIFI事件用于处理
mqtt配置参数:
- hostname:服务器地址
- port:端口
- client ID:客户端id,用于多个设备用统一账号连接服务器的区分
- username:用户名
- password:密码
- uri:统一资源标识符,格式如下
mqtt://[username:password@]hostname:port
比如:
mqtt://i.a-diy.cn
mqtt://shmictrl:pwd123@i.a-diy.cn
mqtt消息的参数
- topic
- 描述:消息的主题,用于标识消息的类别或目的地。
- 示例:home/temperature/sensor1
- qos
- 描述:消息传递的服务质量级别,定义了消息传递的可靠性。
- 级别:
- 0:最多一次(At most once) - 消息发送一次,不保证接收。
- 1:至少一次(At least once) - 确保消息至少被接收一次,可能会重复。
- 2:恰好一次(Exactly once) - 确保消息恰好被接收一次,不会重复。