Ir al contenido

Conexión por LwM2M

LwM2M (Lightweight M2M) añade una gestión completa de dispositivos sobre CoAP/DTLS: objetos estandarizados, registro del ciclo de vida, observe iniciado por el servidor y ejecución remota. Donde el CoAP simple solo ingiere telemetry, LwM2M permite a CORE-M gestionar el dispositivo — leer y escribir sus recursos, observar sensores, ejecutar actualizaciones de firmware y disparar acciones — usando el modelo de objetos de OMA.

LwM2M (UDP simple)5683
LwM2M sobre DTLS5684

Producción usa DTLS en 5684. Aplica la misma autenticación DTLS-PSK y por certificado que CoAP — la identidad se establece mediante el handshake.

sequenceDiagram
    participant Dev as Cliente LwM2M (dispositivo)
    participant BS as Bootstrap server
    participant SRV as adaptador LwM2M de CORE-M :5684
    participant RP as Redpanda telemetry.raw.{tenant}

    Dev->>BS: Petición de bootstrap
    BS-->>Dev: Configuración de servidor + seguridad
    Dev->>SRV: Register (endpoint name = urn:imei:123)
    SRV->>SRV: Mapear endpoint name → device_id, marcar online
    SRV-->>Dev: 2.01 Created (registration id)
    SRV->>Dev: Observe /3303/0/5700 (temperature)
    Dev-->>SRV: Notify /3303/0/5700 = 22.5
    SRV->>RP: Publicar TelemetryPoint numeric_values.temperature=22.5
    Note over SRV,Dev: Más tarde: Execute /3/0/4 (reboot)<br/>entregado como un RPC de dispositivo
    SRV->>Dev: Execute /3/0/4
    Dev-->>SRV: 2.04 Changed (estado del RPC actualizado)
  1. Bootstrap — el dispositivo contacta con el bootstrap server y recibe su configuración de conexión al servidor y de seguridad. (Los dispositivos preconfigurados con el servidor pueden saltarse esto y hacer register directamente.)

  2. Register — el dispositivo se registra con el adaptador LwM2M de CORE-M usando su endpoint name (por ejemplo urn:imei:123). El adaptador mapea ese endpoint name al device_id de la plataforma, marca el dispositivo como online y registra last_seen.

  3. Observe — el adaptador observa los recursos mapeados a métricas. Cada notificación se convierte en un TelemetryPoint y se publica en telemetry.raw.{tenant_id}.

  4. Execute — las acciones iniciadas por el servidor (reboot, aplicación de firmware, comandos personalizados) se entregan al dispositivo como operaciones Execute de LwM2M, impulsadas por el mecanismo de RPC de dispositivo de CORE-M.

Un dispositivo se registra con un endpoint name, no con un UUID de CORE-M. El adaptador mantiene el mapeo para que toda la telemetry, el estado y los comandos se resuelvan al dispositivo correcto:

Endpoint name de LwM2Mdevice_id de CORE-M
urn:imei:123d7b1c0e2-3f44-4a91-9b2e-2c5a1f0e9d33

El mapeo se establece en el momento del provisioning. Al hacer register, el adaptador busca el endpoint name, adjunta el device_id resuelto y publica un evento device.status que marca el dispositivo como online.

LwM2M expone los datos como /objectID/instance/resourceID. El device profile mapea cada ruta de recurso a un nombre de métrica de CORE-M; las notificaciones de observe en esas rutas se convierten en numeric_values (o string_values) del punto de telemetry.

Ruta de recursoObjeto / recurso OMAMétrica de CORE-M
/3303/0/5700IPSO Temperature → Sensor Valuetemperature
/3304/0/5700IPSO Humidity → Sensor Valuehumidity
/3323/0/5700IPSO Pressure → Sensor Valuepressure
/3/0/9Device → Battery Levelbattery_level

Por ejemplo, una notificación de observe que lleva /3303/0/5700 = 22.5 produce un TelemetryPoint con numeric_values.temperature = 22.5. Añade o cambia mapeos en el device profile — sin necesidad de cambiar el firmware.

Un RPC servidor→dispositivo de CORE-M se mapea a un Execute de LwM2M sobre un recurso. El ejemplo clásico es reboot:

Método RPCRuta de Execute de LwM2M
reboot/3/0/4 (Device → Reboot)
factory_reset/3/0/5 (Device → Factory Reset)
  1. Un operador (o una regla) emite un RPC — method="reboot" — para el dispositivo.

  2. El adaptador LwM2M lo traduce a un Execute sobre el recurso mapeado (/3/0/4) y se lo envía al dispositivo.

  3. La respuesta del dispositivo actualiza el estado del RPC, para que quien lo invocó pueda ver si la acción tuvo éxito.

Así es como las acciones de gestión de dispositivos permanecen agnósticas al protocolo en la capa de la API: la misma interfaz RPC impulsa Execute en LwM2M, un topic de comandos en MQTT, o un downlink SSE en HTTP.

Recurre a LwM2M cuando…

  • Necesitas una gestión real del dispositivo, no solo telemetry — observe, lectura/escritura, actualización de firmware y ejecución remota.
  • Los dispositivos ya hablan el modelo de objetos de OMA (común en los módulos IoT celulares).
  • Quieres recursos estandarizados y autodescriptivos en lugar de payloads a medida.
  • Operas dispositivos limitados pero necesitas más que el CoAP de tipo “fire-and-forget”.

Para telemetry pura en hardware limitado sin gestión, el CoAP simple es más ligero.