본문으로 건너뛰기

CoAP (IoT)

Constrained Application Protocol (RFC 7252) — 저전력 IoT 디바이스의 RESTful 통신 표준. UDP 기반이라 작은 패킷, 적은 전력. 게이트웨이는 디바이스의 리소스 URI 에 GET / PUT 으로 접근합니다.

상황어떤 카드를 쓰나요
저전력 IoT 디바이스 (LoRa-WAN gateway 뒤, 배터리 센서)CoAP (이 페이지)
일반 IoT 게이트웨이 (HTTP API)HTTP
산업용 PLCModbus/TCP, OPC-UA, MELSEC
MQTT broker 경유MQTT Client

등록 폼 입력값

입력 칸무엇을 적나요예시
IP 주소CoAP 디바이스 / 게이트웨이 호스트device.local, 10.20.30.40
포트CoAP 표준 5683 (평문) / 5684 (DTLS)5683
수집 주기폴링 주기 (ms)5000 (배터리 디바이스는 길게)

태그의 PLC 주소 표기 — 리소스 경로

태그의 PLC 주소 = CoAP 리소스 URI 경로.

형식동작
/sensors/temperature디바이스의 coap://host:5683/sensors/temperature 에 GET — 응답 텍스트 반환
/actuators/ledwrite 시 PUT (text/plain) — value 가 payload
sensors/multi/T1leading / 없으면 자동 보정

read 호출은 synchronous GET — 매 polling cycle 마다 디바이스에 직접 요청합니다. 배터리 디바이스의 경우 polling cycle 을 길게 (5000~60000 ms) 잡아 디바이스 sleep 을 깨우는 빈도를 줄이세요.


자주 쓰는 사례

사례어떻게
Eclipse Californium 데모 서버coap.me / 5683 + /test, /.well-known/core (리소스 디스커버리)
LoRa-WAN gateway → CoAP proxygateway 의 CoAP API 포트 + 디바이스별 리소스 경로
산업용 IoT 센서제조사 매뉴얼의 리소스 경로 (/sensor/X) — 보통 텍스트 응답

write (PUT)

태그 페이지 또는 REST API 로 값을 쓰면 디바이스에 PUT 요청 (mediaType text/plain) 이 전송됩니다.

plc_address = /actuators/led
value = ON
→ PUT coap://host:5683/actuators/led payload="ON" Content-Format: text/plain

응답이 success (2.04 Changed 등) 면 write 성공.


흔한 문제와 해결

증상원인해결
값이 안 들어옴 (read 빈 문자열)디바이스가 리소스 미지원coap-client -m get coap://host:5683/.well-known/core 로 리소스 목록 확인 (libcoap-bin 패키지)
read 가 매우 느림네트워크 packet loss + CoAP retransmitpolling cycle 늘리기, congestion 확인
DTLS 가 필요한 디바이스driver 는 평문 CoAP 만 지원디바이스 앞에 DTLS 종단 게이트웨이를 두고 게이트웨이의 평문 쪽을 읽으세요. dtls 옵션이나 포트 5684 지정으로는 해결되지 않습니다

더 자세한 기술 문서