0

有一个代码,我在其中发布和接收来自设备的消息。问题是如果设备突然失去连接,lwt 仅在设备连接断开 5 分钟后到达。寿命 30 秒。测试.py:

import paho.mqtt.client as mqtt

# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))

    # Subscribing in on_connect() means that if we lose the connection and
    # reconnect then subscriptions will be renewed.
    client.subscribe("test/#")


# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))
    imei = msg.topic.split('test/')[1]
    data = msg.payload.decode()
    print(imei)
    print(data)
    publish(client, imei)
    

def publish(client,imei):
    topic = 'test/'+ imei
    client.publish(topic,'hello')
    print('SEND')
    

client = mqtt.Client()
user = 'test'
passw = '1111'
client.username_pw_set(user,passw)
client.on_connect = on_connect
client.on_message = on_message
client.enable_bridge_mode()

client.connect("localhost", 1883, 30)

client.loop_forever()

mosquitto.conf:

persistence true
persistence_location /var/lib/mosquitto/

log_dest topic

log_type error
log_type warning
log_type notice
log_type information

connection_messages true
log_timestamp true

include_dir /etc/mosquitto/conf.d
max_keepalive 30

这是客户端发送 LWT 的方式:

modem_setWillMessage(0,0,topic,"no connect")

其中第一个 0-qos,第二个 0-保留消息

我只是找不到将 lwt 时间设置为 60 秒的设置

4

0 回答 0