Salta ai contenuti

Connettore CoAP

Il connettore CoAP (Constrained Application Protocol) abilita la comunicazione con dispositivi IoT a risorse limitate. CoAP è un protocollo leggero progettato per dispositivi a basso consumo e reti con perdite, comunemente usato in smart home, IoT industriale e reti di sensori.

Tipi Connettore:

  • CoapReader - Leggi dati da endpoint CoAP
  • CoapWriter - Scrivi dati su endpoint CoAP
  • ✅ Multipli protocolli di trasporto (UDP, TCP, DTLS)
  • ✅ Comunicazione sicura con DTLS
  • ✅ Autenticazione PSK e basata su certificati
  • ✅ Metodi GET, POST e PUT
  • ✅ Acquisizione dati basata su 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"
}
}
ParametroTipoRichiestoDescrizione
endpointstringIndirizzo server CoAP (host:porta)
transportstringProtocollo trasporto: UDP, TCP, o DTLS
pollingRateintegerIntervallo polling in millisecondi
pathstringPercorso risorsa CoAP (es. /sensors/temp)
dtlsConfigobjectConfigurazione DTLS (richiesta per trasporto DTLS)
ParametroTipoRichiestoDescrizione
endpointstringIndirizzo server CoAP (host:porta)
transportstringProtocollo trasporto: UDP, TCP, o DTLS
pathstringPercorso risorsa CoAP
methodstringMetodo HTTP: POST o PUT
dtlsConfigobjectConfigurazione DTLS (richiesta per trasporto DTLS)

CoAP standard su UDP (porta default 5683):

{
"endpoint": "192.168.1.50:5683",
"transport": "UDP"
}

Ideale per: Bassa latenza, dispositivi a risorse limitate

{
"type": "CoapReader",
"config": {
"endpoint": "192.168.1.50:5684",
"transport": "DTLS",
"pollingRate": 5000,
"path": "/sensors/secure",
"dtlsConfig": {
"pskIdentity": "bXlkZXZpY2U=",
"pskKey": "c2VjcmV0a2V5MTIz"
}
}
}

Nota: pskIdentity e pskKey sono array di byte (tipicamente codificati base64 in 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": "<certificato-codificato-base64>"
},
"keyFile": {
"mode": "base64",
"data": "<chiave-privata-codificata-base64>"
},
"caCertFile": {
"mode": "base64",
"data": "<certificato-ca-codificato-base64>"
}
}
}

Il reader CoAP si aspetta risposte JSON dall’endpoint:

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

Il writer CoAP invia il payload dati come JSON:

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

Leggi da endpoint sensori multipli:

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

Connettiti a dispositivi con sicurezza DTLS:

{
"type": "CoapReader",
"config": {
"endpoint": "iot-gateway.local:5684",
"transport": "DTLS",
"pollingRate": 5000,
"path": "/api/v1/data",
"dtlsConfig": {
"pskIdentity": "Z2F0ZXdheTE=",
"pskKey": "c3VwZXJzZWNyZXQ="
}
}
}

Invia comandi ad attuatori IoT:

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

Controlla sistemi edificio via CoAP:

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

Soluzioni:

  • Verifica indirizzo e porta endpoint
  • Controlla connettività di rete
  • Assicurati che il server CoAP sia in esecuzione
  • Verifica che il protocollo trasporto corrisponda alla configurazione server

Soluzioni:

  • Verifica che identità e chiave PSK corrispondano alla configurazione server
  • Controlla validità e scadenza certificati
  • Assicurati che il certificato CA sia corretto
  • Verifica compatibilità cipher suite

Soluzioni:

  • Assicurati che l’endpoint restituisca JSON valido
  • Controlla che il percorso risorsa sia corretto
  • Verifica che il formato contenuto sia application/json
  • Controlla i log server per errori

Soluzioni:

  • Aumenta il timeout se la rete è lenta
  • Controlla congestione di rete
  • Verifica che il dispositivo sia responsivo
  • Considera l’uso di TCP per reti inaffidabili
  1. Usa DTLS per Produzione: Cripta sempre i dati sensibili
  2. Frequenza Polling Appropriata: Bilancia freschezza con durata batteria dispositivo
  3. Gestisci i Timeout: I dispositivi CoAP potrebbero essere disponibili in modo intermittente
  4. Usa Observe Quando Disponibile: Per aggiornamenti in tempo reale (funzionalità futura)
  5. Convenzione Percorsi Risorsa: Segui naming REST-like (/sensors/temperature)
  • MQTT - Protocollo IoT alternativo
  • HTTP - API REST per dispositivi capaci
  • Filter - Filtra dati CoAP
  • InfluxDB - Memorizza dati sensori