CoAP (IoT)
Constrained Application Protocol (RFC 7252) — der RESTful-Kommunikationsstandard für IoT-Geräte mit geringem Energiebedarf. Da er auf UDP basiert, sind Pakete klein und der Stromverbrauch niedrig. Das Gateway greift per GET / PUT auf die Ressourcen-URIs der Geräte zu.
| Situation | Welche Karte verwenden Sie |
|---|---|
| IoT-Geräte mit geringem Energiebedarf (hinter LoRa-WAN gateway, Batteriesensoren) | CoAP (diese Seite) |
| Allgemeines IoT-Gateway (HTTP API) | HTTP |
| Industrielle PLC | Modbus/TCP, OPC-UA, MELSEC |
| Über MQTT broker | MQTT Client |
Eingabewerte des Registrierungsformulars
| Eingabefeld | Was tragen Sie ein | Beispiel |
|---|---|---|
| IP-Adresse | CoAP-Gerät / Gateway-Host | device.local, 10.20.30.40 |
| Port | CoAP-Standard 5683 (Klartext) / 5684 (DTLS) | 5683 |
| Erfassungsintervall | Polling-Intervall (ms) | 5000 (bei Batteriegeräten länger wählen) |
PLC-Adressnotation des Tags — Ressourcenpfad
PLC-Adresse des Tags = CoAP-Ressourcen-URI-Pfad.
| Format | Verhalten |
|---|---|
/sensors/temperature | GET auf coap://host:5683/sensors/temperature des Geräts — gibt den Antworttext zurück |
/actuators/led | Beim Schreiben PUT (text/plain) — value ist der Payload |
sensors/multi/T1 | Fehlt der führende /, wird automatisch korrigiert |
Der Lesezugriff ist ein synchroner GET — in jedem Polling-Zyklus wird das Gerät direkt angefragt. Wählen Sie bei Batteriegeräten einen langen Polling-Zyklus (5000–60000 ms), um das Gerät seltener aus dem Sleep-Modus zu wecken.
Häufige Anwendungsfälle
| Fall | Vorgehen |
|---|---|
| Eclipse Californium Demo-Server | coap.me / 5683 + /test, /.well-known/core (Ressourcen-Discovery) |
| LoRa-WAN gateway → CoAP proxy | CoAP-API-Port des gateway + gerätespezifischer Ressourcenpfad |
| Industrielle IoT-Sensoren | Ressourcenpfad aus dem Herstellerhandbuch (/sensor/X) — meist Textantwort |
Schreiben (PUT)
Wenn Sie über die Tag-Seite oder die REST API einen Wert schreiben, wird eine PUT-Anfrage
(mediaType text/plain) an das Gerät gesendet.
plc_address = /actuators/led
value = ON
→ PUT coap://host:5683/actuators/led payload="ON" Content-Format: text/plain
Ist die Antwort erfolgreich (z. B. 2.04 Changed), war der Schreibvorgang erfolgreich.
Häufige Probleme und Lösungen
| Symptom | Ursache | Lösung |
|---|---|---|
| Kein Wert vorhanden (Lesevorgang liefert leere Zeichenkette) | Gerät unterstützt die Ressource nicht | Ressourcenliste mit coap-client -m get coap://host:5683/.well-known/core prüfen (Paket libcoap-bin) |
| Lesevorgang sehr langsam | Netzwerk-Paketverlust + CoAP-Retransmit | Polling-Zyklus verlängern, Congestion prüfen |
| Gerät benötigt DTLS | Der Treiber unterstützt nur Klartext-CoAP | Setzen Sie ein DTLS-Terminierungs-Gateway vor das Gerät und lesen Sie die Klartextseite des Gateways aus. Die Option dtls oder die Angabe von Port 5684 löst das Problem nicht |