Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

Re: ¿Hermetry conserva mis mensajes QoS 1 si la pasarela se desconecta, o necesito mi propio búfer?

Traducido del English por IA ·

Kevin tiene razón, y eso es solo la mitad. Nos encontramos con lo mismo en un parque eólico.El MQTT de Hermetry es 3.1.1, y un CONNECT con clean session en false se atiende como clean. No se encola nada para un dispositivo mientras está desconectado, salvo los comandos enviados como persistentes. Por tanto, no hay estado de sesión que reanudar, en ninguna dirección para la telemetría.Lo que Hermetry sí garantiza es en el sentido de entrada: el PUBACK solo se envía después de que el mensaje esté encolado de forma segura en su lado. Si no puede encolarse, no recibes PUBACK, la sesión se cierra y se espera que el cliente vuelva a enviarlo tras reconectar. Los duplicados con el mismo dispositivo, clave y marca de tiempo se almacenan una sola vez, así que reenviar es seguro.Así pues, el búfer es tuyo, y el patrón es:

  1. Escribe cada lectura en un almacenamiento local (nosotros usamos un archivo SQLite) con su propio ts en ms.
  2. Publica desde el almacenamiento y elimina una fila solo cuando llegue su PUBACK.
  3. Tras reconectar: suscríbete, solicita los atributos compartidos y luego envía el backlog antes de los datos en vivo.

Envía el backlog como arrays de {ts, values} para que llegue en los momentos correctos. El perfil tiene un límite separado de Mensajes de repetición por segundo para mensajes cuyos registros son todos anteriores a un minuto, así que un backlog largo se vacía en un tiempo. No te preocupes si no aparece todo a la vez.La página de MQTT tiene la sección de confirmaciones, vale la pena leerla una vez.

If it isn't logged, it didn't happen.
Solución aceptada♥ 2