Proper disconnect path

We are writing our own MQTT node in a legacy application and having trouble with the disconnect packet. Ignition does not appear to be picking that up and still shows the node as online. Is there a process to send a DDEATH or anything prior to the disconnect? We do set up a will with the connect, but in reading the 3.1.1 spec, it appears to be discarded on disconnect. Ideas?


MQTT Disconnect packets are never received by any other clients in an MQTT environment. They are received by the MQTT server to denote that client has disconnected. In a Sparkplug environment the only thing a disconnect packet does is tells the MQTT server to NOT deliver an MQTT Will Message on behalf of that client (which in turn tells a client like MQTT Engine that the Edge Node is still online). This is why disconnect packets should never be sent from Edge Nodes.

I’d recommend taking a look at the latest draft of the Sparkplug specification for more details on this: sparkplug_spec.pdf - Google Drive

Note this version of the specification is a work in progress and getting updated every few weeks. But, it is really the same as the originally released v2.2 version of the spec but made to be clearer about the rules around Sparkplug.

Makes sense. Thank you for the reply. I’ll pass the information on.