Ir al contenido

Conector CoAP

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 CoAP
  • CoapWriter - Escribe datos en endpoints CoAP
  • ✅ 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
{
"type": "CoapReader",
"config": {
"endpoint": "192.168.1.50:5683",
"transport": "UDP",
"pollingRate": 5000,
"path": "/sensors/temperature"
}
}
{
"type": "CoapReader",
"config": {
"endpoint": "192.168.1.50:5683",
"transport": "TCP",
"pollingRate": 5000,
"path": "/sensors/all"
}
}
{
"type": "CoapWriter",
"config": {
"endpoint": "192.168.1.50:5683",
"transport": "UDP",
"path": "/actuators/valve",
"method": "PUT"
}
}
ParámetroTipoRequeridoDescripción
endpointstringDirección del servidor CoAP (host:puerto)
transportstringProtocolo de transporte: UDP, TCP, o DTLS
pollingRateintegerIntervalo de polling en milisegundos
pathstringRuta del recurso CoAP (ej. /sensors/temp)
dtlsConfigobjectConfiguración DTLS (requerida para transporte DTLS)
ParámetroTipoRequeridoDescripción
endpointstringDirección del servidor CoAP (host:puerto)
transportstringProtocolo de transporte: UDP, TCP, o DTLS
pathstringRuta del recurso CoAP
methodstringMétodo HTTP: POST o PUT
dtlsConfigobjectConfiguración DTLS (requerida para transporte DTLS)

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

{
"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).

{
"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"
}
}
}
}
{
"dtlsConfig": {
"certFile": {
"mode": "base64",
"data": "<certificado-codificado-base64>"
},
"keyFile": {
"mode": "base64",
"data": "<clave-privada-codificada-base64>"
},
"caCertFile": {
"mode": "base64",
"data": "<certificado-ca-codificado-base64>"
}
}
}

El reader CoAP espera respuestas JSON del endpoint:

{
"temperature": 25.5,
"humidity": 60,
"battery": 85
}

El writer CoAP envía el payload de datos como JSON:

{
"valve_position": 75,
"mode": "auto"
}

Lee de múltiples endpoints de sensores:

{
"type": "CoapReader",
"config": {
"endpoint": "192.168.1.50:5683",
"transport": "UDP",
"pollingRate": 10000,
"path": "/sensors/environment"
}
}

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="
}
}
}

Envía comandos a actuadores IoT:

{
"type": "CoapWriter",
"config": {
"endpoint": "192.168.1.100:5683",
"transport": "UDP",
"path": "/actuators/light",
"method": "PUT"
}
}

Controla sistemas de edificios vía CoAP:

{
"type": "CoapWriter",
"config": {
"endpoint": "building-controller.local:5683",
"transport": "TCP",
"path": "/hvac/setpoint",
"method": "POST"
}
}

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

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

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

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
  1. Usa DTLS para Producción: Siempre encripta datos sensibles
  2. Tasa de Polling Apropiada: Equilibra frescura con vida de batería del dispositivo
  3. Maneja Timeouts: Los dispositivos CoAP pueden estar disponibles intermitentemente
  4. Usa Observe Cuando Esté Disponible: Para actualizaciones en tiempo real (característica futura)
  5. Convención de Ruta de Recursos: Sigue nomenclatura tipo REST (/sensors/temperature)
  • MQTT - Protocolo IoT alternativo
  • HTTP - API REST para dispositivos capaces
  • Filter - Filtra datos CoAP
  • InfluxDB - Almacena datos de sensores