IoT Platform admite funciones de MQTT 5.0 que mejoran la transparencia y la interoperabilidad entre los dispositivos y el servidor, como la retroalimentación de conexión, los paquetes DISCONNECT enviados por el servidor y códigos de error mejorados.
Descripción general
MQTT 5.0 mejora las siguientes interacciones entre dispositivos y la nube:
Retroalimentación sobre el establecimiento de conexión
La retroalimentación de conexión es un mecanismo de negociación. El dispositivo envía parámetros de conexión durante el proceso y el servidor devuelve un paquete CONNACK que confirma las funciones compatibles y los valores finales de los parámetros.
|
Propiedad CONNACK |
Descripción y rango de valores |
Respuesta de IoT Platform |
|
Retain Available |
|
1 |
|
Wildcard Subscription Available |
|
1 |
|
Subscription Identifiers Available |
|
0 |
|
Shared Subscription Available |
|
1 |
|
Topic Alias |
|
1 |
|
Maximum QoS |
|
1 |
|
Server Keep Alive |
Periodo de keep-alive durante el cual el servidor debe enviar paquetes de latido o de datos. Si no se envía ningún paquete dentro de este periodo, la conexión se interrumpe. Valores válidos: 30 a 1200. |
Devuelve el periodo de keep-alive especificado por el dispositivo. Si el valor especificado por el dispositivo excede el rango válido, la conexión se interrumpe. |
|
Session Expiry Interval |
Periodo de retención de la sesión después de que se interrumpe la conexión. Valores válidos: 0 a 0xFFFFFFFF. |
Devuelve el periodo de retención de sesión especificado por el dispositivo. Predeterminado: 0 (si el dispositivo no lo especifica). |
|
Maximum Packet Size |
Valores válidos: 0 a 0xFFFFFFFF. |
Siempre devuelve 262144 (256 KB). |
|
Topic Alias Maximum |
Valores válidos: 0 a 0xFFFFFFFF. |
Siempre devuelve 20. |
Paquetes DISCONNECT enviados por el servidor
En MQTT 3.1.1, el servidor cierra la conexión de un dispositivo sin explicación cuando se infringe una regla.
En MQTT 5.0, el servidor puede enviar un paquete DISCONNECT al dispositivo antes de cerrar la conexión. Este paquete contiene un código de motivo y una cadena de motivo, lo que simplifica la resolución de problemas.
Mejoras en los códigos de error
|
Mejora |
MQTT 3.1 |
MQTT 5.0 |
|
Aumento de cantidad |
5 códigos de error |
20 códigos de error |
|
Cadena de motivo |
No compatible |
Se agregó la propiedad Reason String para un diagnóstico detallado de errores. |
|
Códigos de error para más tipos de paquetes |
Solo los paquetes CONNECT devuelven códigos de error. |
Se devuelven códigos de error para CONNECT, UNSUBACK, PUBACK, DISCONNECT y otros paquetes. |
Códigos de error
|
Decimal |
Hexadecimal |
Nombre |
Tipo de paquete |
|
0 |
0x00 |
Success |
CONNACK, PUBACK, PUBREC, PUBREL, PUBCOMP, UNSUBACK y AUTH |
|
128 |
0x80 |
Unspecified error |
CONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK y DISCONNECT |
|
129 |
0x81 |
Malformed Packet |
CONNACK y DISCONNECT |
|
130 |
0x82 |
Protocol Error |
CONNACK y DISCONNECT |
|
132 |
0x84 |
Unsupported Protocol Version |
CONNACK |
|
136 |
0x88 |
Server unavailable |
CONNACK |
|
137 |
0x89 |
Server busy |
CONNACK y DISCONNECT |
|
138 |
0x8A |
Banned |
CONNACK |
|
140 |
0x8C |
Bad authentication method |
CONNACK y DISCONNECT |
|
141 |
0x8D |
Keep Alive timeout |
DISCONNECT |
|
144 |
0x90 |
Topic Name invalid |
CONNACK, PUBACK, PUBREC y DISCONNECT |
|
147 |
0x93 |
Receive Maximum exceeded |
DISCONNECT |
|
148 |
0x94 |
Topic Alias invalid |
DISCONNECT |
|
149 |
0x95 |
Packet too large |
CONNACK y DISCONNECT |
|
150 |
0x96 |
Message rate too high |
DISCONNECT |
|
151 |
0x97 |
Quota exceeded |
CONNACK, PUBACK, PUBREC, SUBACK y DISCONNECT |
|
152 |
0x98 |
Administrative action |
DISCONNECT |
|
153 |
0x99 |
Payload format invalid |
PUBACK, PUBREC y DISCONNECT |
|
154 |
0x9A |
Retain not supported |
CONNACK y DISCONNECT |
|
155 |
0x9B |
QoS not supported |
CONNACK y DISCONNECT |
|
156 |
0x9C |
Use another server |
CONNACK y DISCONNECT |
|
157 |
0x9D |
Server moved |
CONNACK y DISCONNECT |
|
158 |
0x9E |
Shared Subscription not supported |
SUBACK y DISCONNECT |
|
159 |
0x9F |
Connection rate exceeded |
CONNACK y DISCONNECT |