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

Cambiar el intervalo de reporte y la banda muerta en 300 controladores en campo: ¿atributos o comandos?

Cambiar el intervalo de reporte y la banda muerta en 300 controladores en campo: ¿atributos o comandos?

Resuelto 4 5

Traducido del English por IA ·

Integrador aquí. Un cliente tiene unos 300 controladores de bombas en campo, placas ESP32-S3 con nuestro propio firmware, todos por MQTT hacia Hermetry. Necesitamos cambiar algunos ajustes de forma remota, por sitio: el intervalo de reporte, una banda muerta en la lectura de presión y el servidor NTP (algunos sitios bloquean los pools públicos).Internamente hay dos enfoques sobre la mesa:

  • un comando, por ejemplo cfg.set, con los ajustes como parámetros JSON, respondido con ok/error
  • atributos compartidos que el dispositivo aplica

Lo que me importa: saber con certeza que una unidad ha aplicado un valor, y no perder cambios para las unidades que están desconectadas. Algunos sitios rurales se caen durante dos o tres días seguidos.El firmware ya lee una configuración JSON desde flash al arrancar, así que aplicar los valores no es lo difícil. Las unidades reportan cada 60 s y están detrás de una mezcla de routers LTE y Wi-Fi del sitio. ¿Para cuál de los dos enfoques está diseñado Hermetry y existe algo como una vista de deseado frente a reportado?

♥ 0

Traducido del English por IA ·

Soy estudiante y tengo curiosidad: ¿por qué importaría? Un comando con los ajustes dentro me parece más sencillo.

♥ 0

Traducido del English por IA ·

Los comandos enviados a un equipo fuera de línea solo esperan si los envías como persistentes, y en ese caso se descartan como máximo tras 7 días. Los atributos son estado, los comandos son acciones. Yo iría por los atributos.

♥ 1

Traducido del English por IA ·

Lo hicimos con comandos en una flota más pequeña y era un caos cada vez que una unidad se perdía uno. Nadie podía saber qué unidades tenían qué intervalo.

Ground loops are my cardio.
♥ 2

Traducido del English por IA ·

Use los atributos compartidos cfg.*, que es exactamente para lo que sirven, y obtiene la vista deseado frente a reportado sin esfuerzo adicional.Declare las claves en la pestaña Configuration keys del perfil (tipo, etiqueta, límites) y luego establézcalas como atributos compartidos: cfg.telemetry.interval_s, cfg.pressure.deadband_bar, cfg.ntp.server. El dispositivo recibe los cambios en v1/attributes/set, los aplica y devuelve el valor aplicado como atributo de cliente con la misma clave. Hermetry compara ambos valores y muestra por clave, en la pestaña Attributes, los estados In sync, Pending, Rejected o Drifted.Lado del dispositivo, después de cada conexión:

SUBSCRIBE v1/attributes/set
PUBLISH   v1/attributes/req/1   {"sharedKeys": "cfg.*"}
# respuesta en v1/attributes/res/1 -> aplicar todo -> reportar:
PUBLISH   v1/attributes   {"cfg.telemetry.interval_s": 300, "cfg.pressure.deadband_bar": 0.05}

La solicitud tras la conexión es lo que cubre sus sitios rurales: una unidad que estuvo desconectada tres días pide todas las claves cfg.* al volver y se pone al día. Si una unidad no puede aplicar algo, debe reportarlo en cfg_rejected, por ejemplo {"cfg_rejected": {"cfg.ntp.server": "apply_failed"}}, y la fila muestra Rejected con el motivo. Aplique los cambios de forma idempotente, ya que un mensaje puede llegar dos veces.Para 300 unidades, escriba los valores con la API (POST …/attributes/shared, hasta 100 claves por llamada) en un bucle sobre la lista de dispositivos. Las pantallas de línea base y de trabajos masivos son para dispositivos que publican un manifiesto de ajustes (dispositivos con licencia); con su propio firmware, cfg.* es la vía adecuada. La página Attributes contiene la tabla de estados.

Timestamps in UTC or it didn't happen.
Solución aceptada♥ 7
Viendo 5 entradas – de la 1 a la 5 (de un total de 5)
  • Debes estar registrado para responder a este debate.

Únete a la conversación

Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

Compartir