Conector CoAP
Descripción General
Sección titulada «Descripción General»El conector CoAP (Constrained Application Protocol) permite la comunicación con dispositivos IoT de recursos limitados. CoAP es un protocolo ligero diseñado para dispositivos de bajo consumo y redes con pérdidas, comúnmente usado en hogares inteligentes, IoT industrial y redes de sensores.
Tipos de Conector:
CoapReader- Lee datos de endpoints CoAPCoapWriter- Escribe datos en endpoints CoAP
Características
Sección titulada «Características»- ✅ Múltiples protocolos de transporte (UDP, TCP, DTLS)
- ✅ Comunicación segura con DTLS
- ✅ Autenticación PSK y basada en certificados
- ✅ Métodos GET, POST y PUT
- ✅ Adquisición de datos basada en polling
Configuración Básica
Sección titulada «Configuración Básica»CoAP Reader (UDP)
Sección titulada «CoAP Reader (UDP)»{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5683", "transport": "UDP", "pollingRate": 5000, "path": "/sensors/temperature" }}CoAP Reader (TCP)
Sección titulada «CoAP Reader (TCP)»{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5683", "transport": "TCP", "pollingRate": 5000, "path": "/sensors/all" }}CoAP Writer
Sección titulada «CoAP Writer»{ "type": "CoapWriter", "config": { "endpoint": "192.168.1.50:5683", "transport": "UDP", "path": "/actuators/valve", "method": "PUT" }}Parámetros de Configuración
Sección titulada «Parámetros de Configuración»Configuración Reader
Sección titulada «Configuración Reader»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
endpoint | string | ✅ | Dirección del servidor CoAP (host:puerto) |
transport | string | ✅ | Protocolo de transporte: UDP, TCP, o DTLS |
pollingRate | integer | ✅ | Intervalo de polling en milisegundos |
path | string | ✅ | Ruta del recurso CoAP (ej. /sensors/temp) |
dtlsConfig | object | ❌ | Configuración DTLS (requerida para transporte DTLS) |
Configuración Writer
Sección titulada «Configuración Writer»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
endpoint | string | ✅ | Dirección del servidor CoAP (host:puerto) |
transport | string | ✅ | Protocolo de transporte: UDP, TCP, o DTLS |
path | string | ✅ | Ruta del recurso CoAP |
method | string | ✅ | Método HTTP: POST o PUT |
dtlsConfig | object | ❌ | Configuración DTLS (requerida para transporte DTLS) |
Protocolos de Transporte
Sección titulada «Protocolos de Transporte»CoAP estándar sobre UDP (puerto por defecto 5683):
{ "endpoint": "192.168.1.50:5683", "transport": "UDP"}Ideal para: Baja latencia, dispositivos de recursos limitados
CoAP sobre TCP para entrega confiable:
{ "endpoint": "192.168.1.50:5683", "transport": "TCP"}Ideal para: Conexiones confiables, payloads más grandes
CoAP seguro con encriptación DTLS (puerto por defecto 5684):
{ "endpoint": "192.168.1.50:5684", "transport": "DTLS", "dtlsConfig": { "pskIdentity": "device1", "pskKey": "c2VjcmV0a2V5" }}Ideal para: Comunicación segura sobre redes no confiables
Configuración de Seguridad DTLS
Sección titulada «Configuración de Seguridad DTLS»Pre-Shared Key (PSK)
Sección titulada «Pre-Shared Key (PSK)»{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5684", "transport": "DTLS", "pollingRate": 5000, "path": "/sensors/secure", "dtlsConfig": { "pskIdentity": "bXlkZXZpY2U=", "pskKey": "c2VjcmV0a2V5MTIz" } }}Nota: pskIdentity y pskKey son arrays de bytes (típicamente codificados en base64 en JSON).
Autenticación Basada en Certificados
Sección titulada «Autenticación Basada en Certificados»{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5684", "transport": "DTLS", "pollingRate": 5000, "path": "/sensors/secure", "dtlsConfig": { "certFile": { "mode": "path", "data": "/certs/client.crt" }, "keyFile": { "mode": "path", "data": "/certs/client.key" }, "caCertFile": { "mode": "path", "data": "/certs/ca.crt" } } }}Archivos de Certificado (Base64)
Sección titulada «Archivos de Certificado (Base64)»{ "dtlsConfig": { "certFile": { "mode": "base64", "data": "<certificado-codificado-base64>" }, "keyFile": { "mode": "base64", "data": "<clave-privada-codificada-base64>" }, "caCertFile": { "mode": "base64", "data": "<certificado-ca-codificado-base64>" } }}Formato de Datos
Sección titulada «Formato de Datos»Respuesta del Reader
Sección titulada «Respuesta del Reader»El reader CoAP espera respuestas JSON del endpoint:
{ "temperature": 25.5, "humidity": 60, "battery": 85}Payload del Writer
Sección titulada «Payload del Writer»El writer CoAP envía el payload de datos como JSON:
{ "valve_position": 75, "mode": "auto"}Casos de Uso Comunes
Sección titulada «Casos de Uso Comunes»1. Monitoreo de Red de Sensores
Sección titulada «1. Monitoreo de Red de Sensores»Lee de múltiples endpoints de sensores:
{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5683", "transport": "UDP", "pollingRate": 10000, "path": "/sensors/environment" }}2. Comunicación Segura de Dispositivos
Sección titulada «2. Comunicación Segura de Dispositivos»Conéctate a dispositivos con seguridad DTLS:
{ "type": "CoapReader", "config": { "endpoint": "iot-gateway.local:5684", "transport": "DTLS", "pollingRate": 5000, "path": "/api/v1/data", "dtlsConfig": { "pskIdentity": "Z2F0ZXdheTE=", "pskKey": "c3VwZXJzZWNyZXQ=" } }}3. Control de Actuadores
Sección titulada «3. Control de Actuadores»Envía comandos a actuadores IoT:
{ "type": "CoapWriter", "config": { "endpoint": "192.168.1.100:5683", "transport": "UDP", "path": "/actuators/light", "method": "PUT" }}4. Integración de Edificios Inteligentes
Sección titulada «4. Integración de Edificios Inteligentes»Controla sistemas de edificios vía CoAP:
{ "type": "CoapWriter", "config": { "endpoint": "building-controller.local:5683", "transport": "TCP", "path": "/hvac/setpoint", "method": "POST" }}Solución de Problemas
Sección titulada «Solución de Problemas»Conexión Fallida
Sección titulada «Conexión Fallida»Soluciones:
- Verifica la dirección y puerto del endpoint
- Comprueba la conectividad de red
- Asegúrate de que el servidor CoAP esté ejecutándose
- Verifica que el protocolo de transporte coincida con la configuración del servidor
Handshake DTLS Fallido
Sección titulada «Handshake DTLS Fallido»Soluciones:
- Verifica que la identidad y clave PSK coincidan con la configuración del servidor
- Comprueba la validez y expiración del certificado
- Asegúrate de que el certificado CA sea correcto
- Verifica la compatibilidad del cipher suite
Respuesta Inválida
Sección titulada «Respuesta Inválida»Soluciones:
- Asegúrate de que el endpoint devuelva JSON válido
- Comprueba que la ruta del recurso sea correcta
- Verifica que el formato de contenido sea application/json
- Revisa los logs del servidor para errores
Timeout de Solicitud
Sección titulada «Timeout de Solicitud»Soluciones:
- Aumenta el timeout si la red es lenta
- Comprueba la congestión de red
- Verifica que el dispositivo esté respondiendo
- Considera usar TCP para redes no confiables
Mejores Prácticas
Sección titulada «Mejores Prácticas»- Usa DTLS para Producción: Siempre encripta datos sensibles
- Tasa de Polling Apropiada: Equilibra frescura con vida de batería del dispositivo
- Maneja Timeouts: Los dispositivos CoAP pueden estar disponibles intermitentemente
- Usa Observe Cuando Esté Disponible: Para actualizaciones en tiempo real (característica futura)
- Convención de Ruta de Recursos: Sigue nomenclatura tipo REST (
/sensors/temperature)