mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
bc9d1a65d7
This takes the code up to the latest released version of libcoap. As there have been API changes, coap_client and coap_server in examples/protocols have been updated to use the new APIs. Further information on the new libcoap APIs can be found at https://libcoap.net/doc/reference/4.2.0/ coap_client has been updated to handle BLOCK2 responses from "coap://californium.eclipse.org" coap_client has been modified to only send out one request (and wait for the response) coap_server has been updated to support Observe subscriptions, and well as adding in PUT and DELETE handlers to work on the Espressif resource coap_server and coap_client have had their stack sizes increased. port/coap_io.c has been added, a copy of libcoap/src/coap_io.c with support added for systems that do not have RFC 3542 section 20 support. port/coap_io_socket.c has been removed as a lot of the code is now replicated in different libcoap files. Once this PR is place, then adding in DTLS will be a lot simpler (as a separate PR) Signed-off-by: Jitin George <jitin@espressif.com> Merges https://github.com/espressif/esp-idf/pull/3148
69 lines
2.2 KiB
Markdown
69 lines
2.2 KiB
Markdown
|
|
# 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
|
|
|
|
```
|
|
make 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:
|
|
|
|
```
|
|
make -j4 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`
|