# CoAP server example (See the README.md file in the upper level 'examples' directory for more information about examples.) This CoAP server example is adaptation of one of the [libcoap](https://github.com/obgm/libcoap) example. CoAP server example would startup a daemon task, receive data from CoAP client and transmit data to CoAP client. The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained networks in the Internet of Things. The protocol is designed for machine-to-machine (M2M) applications such as smart energy and building automation. please refer to [RFC7252](https://www.rfc-editor.org/rfc/pdfrfc/rfc7252.txt.pdf) for more details. ## How to use example ### Configure the project ``` idf.py menuconfig ``` * Set default serial port under Serial Flasher config * Set WiFi SSID under Example Configuration * Set WiFi Password under Example Configuration ### Build and Flash Build the project and flash it to the board, then run monitor tool to view serial output: ``` idf.py -p PORT flash monitor ``` (To exit the serial monitor, type ``Ctrl-]``.) See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. ## Example Output current CoAP server would startup a daemon task, and the log is such as the following: ``` ... I (332) wifi: mode : sta (30:ae:a4:04:1b:7c) I (1672) wifi: n:11 0, o:1 0, ap:255 255, sta:11 0, prof:1 I (1672) wifi: state: init -> auth (b0) I (1682) wifi: state: auth -> assoc (0) I (1692) wifi: state: assoc -> run (10) I (1692) wifi: connected with huawei_cw, channel 11 I (1692) wifi: pm start, type: 1 I (2622) event: sta ip: 192.168.3.84, mask: 255.255.255.0, gw: 192.168.3.1 I (2622) CoAP_server: Connected to AP ... ``` if a CoAP client query `/Espressif` resource, CoAP server would return `"no data"` until a CoAP client does a PUT with some data. ## libcoap Documentation This can be found at https://libcoap.net/doc/reference/4.2.0/ ## Troubleshooting * Please make sure CoAP client fetchs or puts data under path: `/Espressif` or fetches `/.well-known/core` * libcoap logging can be increased by changing `#define COAP_LOGGING_LEVEL 0` to `#define COAP_LOGGING_LEVEL 9`