Thingsboard MQTT和协议笔记

Thingsboard mqtt相关知识一直在我笔记里面躺着,没有整理出很好的脉络,现在简单整理发出来给需要的人参考。

支持哪些版本???

https://juejin.im/post/5cafec19e51d456e486953c4

2010 v3.1 2014 v3.1.1 2018.6 v5.0

v5.0和v3.1.1现在是OASIS标准(v3.1.1也已通过ISO批准)。

不向后兼容

https://www.cnblogs.com/LiuYanYGZ/p/10371674.html
<dependency>
    <groupId>org.eclipse.paho</groupId>
    <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
    <version>1.2.0 1.2.1 1.2.2</version>
</dependency>

http://mqtt.org/ 官网挂一下,不咋看

https://www.jianshu.com/p/31a7a69f9438 MQTT协议解读及使用经验

开源Broker : Eclipse Mosquitto:MQTT协议的最小集实现

有EMQ, HiveMQ, RabbitMQ MQTT Adapter等。

https://www.jianshu.com/p/e5cf0c1fd55c 常见mqtt服务器EMQT(github星多)的搭建

Mqtt消息

https://blog.csdn.net/zmk0810612124/article/details/88386414

thingsboard mqtt处理类MqttTransportHandler

CONNECT – 连接服务端
CONNACK – 确认连接请求
PUBLISH – 发布消息
PUBACK –发布确认
PUBREC – 发布收到(QoS 2,第一步)
PUBREL – 发布释放(QoS 2,第二步)
PUBCOMP – 发布完成(QoS 2,第三步)
SUBACK – 订阅确认
UNSUBSCRIBE –取消订阅
UNSUBACK – 取消订阅确认
PINGREQ – 心跳请求
PINGRESP – 心跳响应
DISCONNECT –断开连接
Qos = 0: At most once delivery
一次数据交换: Publish
Qos = 1: At least once delivery
两次数据交换: Publish, Pubrec
Qos = 2: Exactly once delivery
四次数据交换: Publish, Pubres, Pubrel, Pubcomp

使用记录

,MQTT消息

先发布后订阅,先发布的消息收不到,后于订阅发布的消息才能收到;

需要设置MqttClient的cleanSeesion为false,只能保留32条;

下一次继续32条消息,依次类推

retain 保留消息会保留一条

Mqtt消息体太大

too large message: 29336 bytes

https://my.oschina.net/liufq/blog/3079076

thingsboard可以mqtt工具类修改消息体最大长度

Thingsboard gateway Mqtt配置

使用Mosquitto模拟mqtt server

下载地址 https://mosquitto.org/download/

win10操作方法

 # 默认安装目录 C:\Program Files\mosquitto
 ### 操作
命令行窗口1:输入  mosquitto -c mosquitto.conf 命令行启动mqttserver
命令行窗口2:输入  mosquitto_sub -t "dw/demo",连接到本地代理并订阅一个主题
命令行窗口3:输入  mosquitto_pub -t "dw/demo" -m "hello world!"
命令行窗口2可以收到消息,成功

Thingsboard mqtt

https://thingsboard.io/docs/iot-gateway/getting-started/

#linux
mosquitto_pub -h localhost -p 1883 -t "sensors" -m '{"serialNumber":"SN-001", "model":"T1000", "temperature":36.6}'
#window
mosquitto_pub -h localhost -p 1883 -t "sensors" -m "{\"serialNumber\":\"deviceTest\", \"model\":\"T1000\", \"temperature\":36.6}"

如果报错
com.fasterxml.jackson.core.JsonParseException: Unexpected character (''' (code 39)): was expecting double-quote to start field name
如果是这种情况,请在消息的外部使用双引号,并在消息的内部使用双引号
"{\"serialNumber\":\"SN-001\", \"model\":\"T1000\", \"temperature\":36.6}"

更新属性
mosquitto_pub -h localhost -p 1883 -t "sensor/SN-001/temperature" -m '{"value":36.6}'

表达式升级

https://www.cnblogs.com/youring2/p/10942728.html

原创文章 74 获赞 57 访问量 17万+

猜你喜欢

转载自blog.csdn.net/Zzhou1990/article/details/105701047