AWS MQTT 'Packet sent. (Length: 2)' periodic message

  • I am successfully using the AWS MQTT lib but noticed that on my Wipy, every 20 seconds the following message is printed: Packet sent. (Length: 2).

    It does not register on the AWS console as a message, so what is being sent? Maybe a keep alive message, if so, can I change the interval? Is it even a MQTT message being sent?


  • @inverseeffect using the underlying library that the AWS work is built on seems to work ok. What I haven't had time to do yet is very long running (many days) tests. I did leave an LTE based MQTT connection active with just keepalives going last week, and ended up with a GURU meditation error, after an un caught exception. But the session was active in a console and no code around it. Will look into this more this week.

    Packet sent. (Length: 2)
    Packet sent. (Length: 2)
    Packet sent. (Length: 2)
    Guru Meditation Error: Core  1 panic'ed (StoreProhibited)
    . Exception was unhandled.
    Register dump:
    PC      : 0x4017c802  PS      : 0x00060433  A0      : 0x8017d867  A1      : 0x3ffe4da0
    A2      : 0x00000000  A3      : 0x00000041  A4      : 0xffffff40  A5      : 0xfe5440ff
    A6      : 0xfe7d983f  A7      : 0xfe7e9c3f  A8      : 0x8017c802  A9      : 0x3ffe4d80
    A10     : 0x3ffe7d98  A11     : 0x400839f8  A12     : 0x00000100  A13     : 0x3ffe7f9c
    A14     : 0x882072f1  A15     : 0x66316b7d  SAR     : 0x00000008  EXCCAUSE: 0x0000001d
    EXCVADDR: 0xfe544103  LBEG    : 0x4009b194  LEND    : 0x4009b1c2  LCOUNT  : 0x00000000

  • @timh Thanks for the heads-up. Are you satisfied with your implementation of MQTT? Meaning you got everything to work reliably and stable? I don't mind writing my own MQTT lib, as long as I can know my efforts won't be pointless because of unstable firmware/micropython/hardware/etc.

  • @timh I sm only using part of that library, (the lower levels) and the keepalive does work down there. I am not talking to AWS, but another platform that needs to use TLS.

    There are a number of problems with the library as it's currently implemented.

    For instance when you disconnect the background thread is not cleaned up, so a reconnect attempt causes problems, without destroying the thread .

    So I would not be surprised its really only addressing a minimal working set.

  • I tried specifying the keep-alive frequency by passing a value in the connect() method: pycomAwsMQTTClient.connect(900), but still occurs every 20 seconds. Drilling down the source code, this value is thrown away. Look at def _send_connect(self, keepalive, clean_session) method in The keepalive argument is not used. If I remember correctly, AWS specifies a max keep-alive interval of 20 minutes, it's weird that this keep-alive is 20 seconds. Perhaps a result of some late night coding? :)

  • This will be a keepalive packet. You can set the keepalive frequency in the api


Pycom on Twitter