1.Mqtt
LoRa网关与服务器通信协议这节给大家讲了下LoRa网关与服务器之间的协议格式。那么他们是怎么通信的呢?主流的有原生的UDP和Mqtt,今天就讲讲Mqtt这种方式。
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于 发布/订阅 范式的消息协议。它工作在 TCP/IP 协议族上,是为 硬件性能低下 的 远程设备 以及网络状况糟糕 的情况下而设计的发布/订阅型消息协议,它是一个消息中间件 。(度娘版)
如上图是IBM官方给的图解。我对他的理解就是:Broker是消息集散中心,负责消息的接收,汇总,分发,所有终端或者服务器都是消息的生产者或者消费者。就整个LoRa通信过程,网关端会生产PUSH_DATA,PULL_DATA同时又会消费PULL_ACK等回复消息。同理服务器端会消费PUSH_DATA,PULL_DATA生产PULL_ACK。
2.EMQ 安装
实现Mqtt协议的中间件太多太多,老牌的Rabbitmq,阿里的Rocketmq,本人以前用过的mosquito,还有今天介绍的emq等等。
本人安装环境:ubuntu 16.04的虚机。
IP:
下载地址
- 安装所需要的依赖包
sudo apt update && sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
- 添加 EMQ X 的官方 GPG 密钥
curl -fsSL https://repos.emqx.io/gpg.pub | sudo apt-key add -
验证密钥
sudo apt-key fingerprint 3E640D53
- 使用以下命令设置 stable 存储库。 如果要添加 unstable 存储库,请在以下命令中的单词 stable 之后添加单词 unstable。
sudo add-apt-repository \
"deb [arch=amd64] https://repos.emqx.io/emqx-ce/deb/ubuntu/ \
$(lsb_release -cs) \
stable"
- 更新 apt 包索引
sudo apt update
- 安装最新版本的 EMQ X
sudo apt install emqx
- 启动 EMQ X
sudo service emqx start
EMQ有可视化的管理页面:http://192.168.237.128:18083
可根据自己的IP做相应修改;
下图为管理页面
还可以切换中文奥
3.撸起来
在此只做简单演示
- 仿网关发送
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConn