Connettore CoAP
Panoramica
Sezione intitolata “Panoramica”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 CoAPCoapWriter- Scrivi dati su endpoint CoAP
Caratteristiche
Sezione intitolata “Caratteristiche”- ✅ 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
Configurazione Base
Sezione intitolata “Configurazione Base”CoAP Reader (UDP)
Sezione intitolata “CoAP Reader (UDP)”{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5683", "transport": "UDP", "pollingRate": 5000, "path": "/sensors/temperature" }}CoAP Reader (TCP)
Sezione intitolata “CoAP Reader (TCP)”{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5683", "transport": "TCP", "pollingRate": 5000, "path": "/sensors/all" }}CoAP Writer
Sezione intitolata “CoAP Writer”{ "type": "CoapWriter", "config": { "endpoint": "192.168.1.50:5683", "transport": "UDP", "path": "/actuators/valve", "method": "PUT" }}Parametri di Configurazione
Sezione intitolata “Parametri di Configurazione”Config Reader
Sezione intitolata “Config Reader”| Parametro | Tipo | Richiesto | Descrizione |
|---|---|---|---|
endpoint | string | ✅ | Indirizzo server CoAP (host:porta) |
transport | string | ✅ | Protocollo trasporto: UDP, TCP, o DTLS |
pollingRate | integer | ✅ | Intervallo polling in millisecondi |
path | string | ✅ | Percorso risorsa CoAP (es. /sensors/temp) |
dtlsConfig | object | ❌ | Configurazione DTLS (richiesta per trasporto DTLS) |
Config Writer
Sezione intitolata “Config Writer”| Parametro | Tipo | Richiesto | Descrizione |
|---|---|---|---|
endpoint | string | ✅ | Indirizzo server CoAP (host:porta) |
transport | string | ✅ | Protocollo trasporto: UDP, TCP, o DTLS |
path | string | ✅ | Percorso risorsa CoAP |
method | string | ✅ | Metodo HTTP: POST o PUT |
dtlsConfig | object | ❌ | Configurazione DTLS (richiesta per trasporto DTLS) |
Protocolli di Trasporto
Sezione intitolata “Protocolli di Trasporto”CoAP standard su UDP (porta default 5683):
{ "endpoint": "192.168.1.50:5683", "transport": "UDP"}Ideale per: Bassa latenza, dispositivi a risorse limitate
CoAP su TCP per consegna affidabile:
{ "endpoint": "192.168.1.50:5683", "transport": "TCP"}Ideale per: Connessioni affidabili, payload più grandi
CoAP sicuro con crittografia DTLS (porta default 5684):
{ "endpoint": "192.168.1.50:5684", "transport": "DTLS", "dtlsConfig": { "pskIdentity": "device1", "pskKey": "c2VjcmV0a2V5" }}Ideale per: Comunicazione sicura su reti non fidate
Configurazione Sicurezza DTLS
Sezione intitolata “Configurazione Sicurezza DTLS”Pre-Shared Key (PSK)
Sezione intitolata “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 e pskKey sono array di byte (tipicamente codificati base64 in JSON).
Autenticazione Basata su Certificati
Sezione intitolata “Autenticazione Basata su Certificati”{ "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" } } }}File Certificati (Base64)
Sezione intitolata “File Certificati (Base64)”{ "dtlsConfig": { "certFile": { "mode": "base64", "data": "<certificato-codificato-base64>" }, "keyFile": { "mode": "base64", "data": "<chiave-privata-codificata-base64>" }, "caCertFile": { "mode": "base64", "data": "<certificato-ca-codificato-base64>" } }}Formato Dati
Sezione intitolata “Formato Dati”Risposta Reader
Sezione intitolata “Risposta Reader”Il reader CoAP si aspetta risposte JSON dall’endpoint:
{ "temperature": 25.5, "humidity": 60, "battery": 85}Payload Writer
Sezione intitolata “Payload Writer”Il writer CoAP invia il payload dati come JSON:
{ "valve_position": 75, "mode": "auto"}Casi d’Uso Comuni
Sezione intitolata “Casi d’Uso Comuni”1. Monitoraggio Rete Sensori
Sezione intitolata “1. Monitoraggio Rete Sensori”Leggi da endpoint sensori multipli:
{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5683", "transport": "UDP", "pollingRate": 10000, "path": "/sensors/environment" }}2. Comunicazione Dispositivi Sicura
Sezione intitolata “2. Comunicazione Dispositivi Sicura”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=" } }}3. Controllo Attuatori
Sezione intitolata “3. Controllo Attuatori”Invia comandi ad attuatori IoT:
{ "type": "CoapWriter", "config": { "endpoint": "192.168.1.100:5683", "transport": "UDP", "path": "/actuators/light", "method": "PUT" }}4. Integrazione Smart Building
Sezione intitolata “4. Integrazione Smart Building”Controlla sistemi edificio via CoAP:
{ "type": "CoapWriter", "config": { "endpoint": "building-controller.local:5683", "transport": "TCP", "path": "/hvac/setpoint", "method": "POST" }}Risoluzione Problemi
Sezione intitolata “Risoluzione Problemi”Connessione Fallita
Sezione intitolata “Connessione Fallita”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
Handshake DTLS Fallito
Sezione intitolata “Handshake DTLS Fallito”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
Risposta Non Valida
Sezione intitolata “Risposta Non Valida”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
Timeout Richiesta
Sezione intitolata “Timeout Richiesta”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
Best Practice
Sezione intitolata “Best Practice”- Usa DTLS per Produzione: Cripta sempre i dati sensibili
- Frequenza Polling Appropriata: Bilancia freschezza con durata batteria dispositivo
- Gestisci i Timeout: I dispositivi CoAP potrebbero essere disponibili in modo intermittente
- Usa Observe Quando Disponibile: Per aggiornamenti in tempo reale (funzionalità futura)
- Convenzione Percorsi Risorsa: Segui naming REST-like (
/sensors/temperature)