Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[paho-dev] Offline buffering in Python3 Paho MQTT client
  • From: Lars Noodén <lars.nooden@xxxxxxxxx>
  • Date: Wed, 7 Oct 2020 15:27:36 +0300
  • Autocrypt: addr=lars.nooden@xxxxxxxxx; keydata= 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 bg==
  • Delivered-to: paho-dev@xxxxxxxxxxx
  • List-archive: <https://www.eclipse.org/mailman/private/paho-dev>
  • List-help: <mailto:paho-dev-request@eclipse.org?subject=help>
  • List-subscribe: <https://www.eclipse.org/mailman/listinfo/paho-dev>, <mailto:paho-dev-request@eclipse.org?subject=subscribe>
  • List-unsubscribe: <https://www.eclipse.org/mailman/options/paho-dev>, <mailto:paho-dev-request@eclipse.org?subject=unsubscribe>
  • User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

Hello, paho-dev list members,	

The Eclipse web site mentions this list as the place to discuss Paho
clients.  Though I see in the archives little about python specifically.
 If there is a more appropriate venue for this kind of usage question,
please point it out.

I am trying to have a Python3-based Paho MQTT client do offline
buffering during longer intervals when there is no network connectivity.
 Can someone please point me to the right documentation and/or a code
snippet showing the right way to do that?  Short intervals work but not
longer ones.

The examples I've found so far seem to have offline buffering disabled.
The documentation [1] suggests that enabling it might only be a matter
of setting clean_session to 'False', but that alone appears to be
insufficient for longer connectivity outages.

I have a test script [2] otherwise working.  It sends data to the MQTT
broker just fine while there is network connectivity and resumes sending
once the connectivity is restored after a short period of disconnection.
 However, the messages which would have been sent during a longer period
without connectivity seem to disappear completely.  I would have
expected the client to have kept a queue which gets sent in bulk once
the connection is re-established.

What should I modify in the script below and/or what should I read in
the documentation?

Regards,
Lars

PS.  Thank you in advance for not top-posting.

--

[1] 	https://pypi.org/project/paho-mqtt/#client
	https://www.eclipse.org/paho/index.php?page=clients/python/docs/index.php#network-loop


[2]

#!/usr/bin/python3

import time
import paho.mqtt.client as mqtt
import ssl

def on_connect(client, userdata, flags, rc):
    print("Connection returned result: "+connack_string(rc))

def on_disconnect(client, userdata, rc):
    if rc != 0:
        print("Unexpected disconnection.")
    else:
        print("MQTT disconnected")

mqtthost = "server.example.com"
mqttport = 8883
mqttclient = mqtt.Client(client_id="test1and2",
                         clean_session=False,
                         transport="tcp")

mqttclient.username_pw_set("foo", password="bar")
mqttclient.reconnect_delay_set(min_delay=1, max_delay=120)
mqttclient.tls_set(
    ca_certs='/etc/mosquitto/certs/mqtt-server.crt',
    certfile='/etc/mosquitto/certs/pub-client.crt',
    keyfile ='/etc/mosquitto/certs/pub-client.key',
    tls_version=ssl.PROTOCOL_TLSv1_2
)

mqttclient.on_connect    = on_connect
mqttclient.on_disconnect = on_disconnect
mqttclient.connect(mqtthost, mqttport)
mqttclient.loop_start()

while True:
    epoch = int(time.clock_gettime(0))
    msg = str(epoch)+"\t9\t"+str(time.strftime("%H:%M"))
    try:
        mqttclient.publish("temperatures", payload=msg)
        print("temperatures", msg)
    except:
        mqttclient.reconnect()
        print("Reconnect")

    time.sleep(5)


Back to the top