CoAP download
Overview
This sample demonstrates the use of the CoAP client API to make GET requests to a CoAP server. If the data to be fetched is larger than a single CoAP packet, a blockwise transfer will be used to receive the data.
Once the transfer is complete, the sample prints the amount of data received and the time taken.
Requirements
Networking with the host system, Networking with native_sim board
or, a board with hardware networking (tested on nucleo_h753zi)
Network connection between the board and host running a CoAP server
Build and Running
Build the CoAP download sample application like this:
west build -b <board to use> samples/net/sockets/coap_download -- -DCONF_FILE=<config file to use>
The easiest way to run this sample application is to build and run it as a native_sim application. Some setup is required as described in Networking with native_sim board.
Download a CoAP server application, for example aiocoap (Python), or Eclipse Californium (Java) has a demo Simple File Server application.
Using aiocoap
:
python -m pip install "aiocoap[all]"
mkdir file_root
echo "some test data" > file_root/test.txt
aiocoap-fileserver file_root
You can also change the name of the CoAP resource to request via Kconfig:
CONFIG_NET_SAMPLE_COAP_RESOURCE_PATH="resource_name_to_request"
Launch net-setup.sh in net-tools:
./net-setup.sh
Build and run the coap_download sample application for native_sim like this:
west build -b native_sim samples/net/sockets/coap_download
west build -t run
Sample output
[00:00:00.000,000] <inf> net_config: Initializing network
[00:00:00.000,000] <inf> net_config: IPv4 address: 192.0.2.1
[00:00:00.110,000] <inf> net_config: IPv6 address: 2001:db8::1
[00:00:00.110,000] <inf> net_config: IPv6 address: 2001:db8::1
[00:00:00.110,000] <inf> coap_download: Network L4 is connected
[00:00:00.110,000] <inf> coap_download: Starting CoAP download using IPv4
[00:00:00.180,000] <inf> coap_download: CoAP response, result_code=69, offset=0, len=100
[00:00:00.180,000] <inf> coap_download: CoAP download done, got 100 bytes in 70 ms
[00:00:00.180,000] <inf> coap_download: Starting CoAP download using IPv6
[00:00:00.300,000] <inf> coap_download: CoAP response, result_code=69, offset=0, len=100
[00:00:00.300,000] <inf> coap_download: CoAP download done, got 100 bytes in 120 ms