1*cfb92d14SAndroid Build Coastguard Worker# OpenThread CLI - CoAP Example 2*cfb92d14SAndroid Build Coastguard Worker 3*cfb92d14SAndroid Build Coastguard WorkerThe OpenThread CoAP APIs may be invoked via the OpenThread CLI. 4*cfb92d14SAndroid Build Coastguard Worker 5*cfb92d14SAndroid Build Coastguard Worker## Quick Start 6*cfb92d14SAndroid Build Coastguard Worker 7*cfb92d14SAndroid Build Coastguard Worker### Form Network 8*cfb92d14SAndroid Build Coastguard Worker 9*cfb92d14SAndroid Build Coastguard WorkerForm a network with at least two devices. 10*cfb92d14SAndroid Build Coastguard Worker 11*cfb92d14SAndroid Build Coastguard Worker### Node 1 12*cfb92d14SAndroid Build Coastguard Worker 13*cfb92d14SAndroid Build Coastguard WorkerOn node 1, setup CoAP server with resource `test-resource`. 14*cfb92d14SAndroid Build Coastguard Worker 15*cfb92d14SAndroid Build Coastguard Worker```bash 16*cfb92d14SAndroid Build Coastguard Worker> coap start 17*cfb92d14SAndroid Build Coastguard WorkerDone 18*cfb92d14SAndroid Build Coastguard Worker> coap resource test-resource 19*cfb92d14SAndroid Build Coastguard WorkerDone 20*cfb92d14SAndroid Build Coastguard Worker``` 21*cfb92d14SAndroid Build Coastguard Worker 22*cfb92d14SAndroid Build Coastguard Worker### Node 2 23*cfb92d14SAndroid Build Coastguard Worker 24*cfb92d14SAndroid Build Coastguard Worker```bash 25*cfb92d14SAndroid Build Coastguard Worker> coap start 26*cfb92d14SAndroid Build Coastguard WorkerDone 27*cfb92d14SAndroid Build Coastguard Worker> coap get fdde:ad00:beef:0:d395:daee:a75:3964 test-resource 28*cfb92d14SAndroid Build Coastguard WorkerDone 29*cfb92d14SAndroid Build Coastguard Workercoap response from [fdde:ad00:beef:0:2780:9423:166c:1aac] with payload: 30 30*cfb92d14SAndroid Build Coastguard Worker> coap put fdde:ad00:beef:0:2780:9423:166c:1aac test-resource con payload 31*cfb92d14SAndroid Build Coastguard WorkerDone 32*cfb92d14SAndroid Build Coastguard Workercoap response from [fdde:ad00:beef:0:2780:9423:166c:1aac] 33*cfb92d14SAndroid Build Coastguard Worker``` 34*cfb92d14SAndroid Build Coastguard Worker 35*cfb92d14SAndroid Build Coastguard Worker### Result 36*cfb92d14SAndroid Build Coastguard Worker 37*cfb92d14SAndroid Build Coastguard WorkerOn node 1, you should see output similar to below: 38*cfb92d14SAndroid Build Coastguard Worker 39*cfb92d14SAndroid Build Coastguard Worker```bash 40*cfb92d14SAndroid Build Coastguard Workercoap request from [fdde:ad00:beef:0:b3:e3f6:2dcc:4b79] GET 41*cfb92d14SAndroid Build Coastguard Workercoap response sent 42*cfb92d14SAndroid Build Coastguard Workercoap request from [fdde:ad00:beef:0:b3:e3f6:2dcc:4b79] PUT with payload: 7061796c6f6164 43*cfb92d14SAndroid Build Coastguard Workercoap response sent 44*cfb92d14SAndroid Build Coastguard Worker``` 45*cfb92d14SAndroid Build Coastguard Worker 46*cfb92d14SAndroid Build Coastguard Worker## Command List 47*cfb92d14SAndroid Build Coastguard Worker 48*cfb92d14SAndroid Build Coastguard Worker- [help](#help) 49*cfb92d14SAndroid Build Coastguard Worker- [cancel](#cancel) 50*cfb92d14SAndroid Build Coastguard Worker- [delete](#delete-address-uri-path-type-payload) 51*cfb92d14SAndroid Build Coastguard Worker- [get](#get-address-uri-path-type) 52*cfb92d14SAndroid Build Coastguard Worker- [observe](#observe-address-uri-path-type) 53*cfb92d14SAndroid Build Coastguard Worker- [parameters](#parameters) 54*cfb92d14SAndroid Build Coastguard Worker- [post](#post-address-uri-path-type-payload) 55*cfb92d14SAndroid Build Coastguard Worker- [put](#put-address-uri-path-type-payload) 56*cfb92d14SAndroid Build Coastguard Worker- [resource](#resource-uri-path) 57*cfb92d14SAndroid Build Coastguard Worker- [set](#set-new-content) 58*cfb92d14SAndroid Build Coastguard Worker- [start](#start) 59*cfb92d14SAndroid Build Coastguard Worker- [stop](#stop) 60*cfb92d14SAndroid Build Coastguard Worker 61*cfb92d14SAndroid Build Coastguard Worker## Command Details 62*cfb92d14SAndroid Build Coastguard Worker 63*cfb92d14SAndroid Build Coastguard Worker### help 64*cfb92d14SAndroid Build Coastguard Worker 65*cfb92d14SAndroid Build Coastguard Worker```bash 66*cfb92d14SAndroid Build Coastguard Worker> coap help 67*cfb92d14SAndroid Build Coastguard Workerhelp 68*cfb92d14SAndroid Build Coastguard Workercancel 69*cfb92d14SAndroid Build Coastguard Workerdelete 70*cfb92d14SAndroid Build Coastguard Workerget 71*cfb92d14SAndroid Build Coastguard Workerobserve 72*cfb92d14SAndroid Build Coastguard Workerparameters 73*cfb92d14SAndroid Build Coastguard Workerpost 74*cfb92d14SAndroid Build Coastguard Workerput 75*cfb92d14SAndroid Build Coastguard Workerresource 76*cfb92d14SAndroid Build Coastguard Workerset 77*cfb92d14SAndroid Build Coastguard Workerstart 78*cfb92d14SAndroid Build Coastguard Workerstop 79*cfb92d14SAndroid Build Coastguard WorkerDone 80*cfb92d14SAndroid Build Coastguard Worker``` 81*cfb92d14SAndroid Build Coastguard Worker 82*cfb92d14SAndroid Build Coastguard WorkerList the CoAP CLI commands. 83*cfb92d14SAndroid Build Coastguard Worker 84*cfb92d14SAndroid Build Coastguard Worker### cancel 85*cfb92d14SAndroid Build Coastguard Worker 86*cfb92d14SAndroid Build Coastguard WorkerRequest the cancellation of an existing observation subscription to a remote resource. 87*cfb92d14SAndroid Build Coastguard Worker 88*cfb92d14SAndroid Build Coastguard Worker```bash 89*cfb92d14SAndroid Build Coastguard Worker> coap cancel 90*cfb92d14SAndroid Build Coastguard WorkerDone 91*cfb92d14SAndroid Build Coastguard Worker``` 92*cfb92d14SAndroid Build Coastguard Worker 93*cfb92d14SAndroid Build Coastguard Worker### delete \<address\> \<uri-path\> \[type\] \[payload\] 94*cfb92d14SAndroid Build Coastguard Worker 95*cfb92d14SAndroid Build Coastguard Worker- address: IPv6 address of the CoAP server. 96*cfb92d14SAndroid Build Coastguard Worker- uri-path: URI path of the resource. 97*cfb92d14SAndroid Build Coastguard Worker- type: "con" for Confirmable or "non-con" for Non-confirmable (default). 98*cfb92d14SAndroid Build Coastguard Worker- payload: CoAP request payload. 99*cfb92d14SAndroid Build Coastguard Worker 100*cfb92d14SAndroid Build Coastguard Worker```bash 101*cfb92d14SAndroid Build Coastguard Worker> coap delete fdde:ad00:beef:0:2780:9423:166c:1aac test-resource con payload 102*cfb92d14SAndroid Build Coastguard WorkerDone 103*cfb92d14SAndroid Build Coastguard Worker``` 104*cfb92d14SAndroid Build Coastguard Worker 105*cfb92d14SAndroid Build Coastguard Worker### get \<address\> \<uri-path\> \[type\] 106*cfb92d14SAndroid Build Coastguard Worker 107*cfb92d14SAndroid Build Coastguard Worker- address: IPv6 address of the CoAP server. 108*cfb92d14SAndroid Build Coastguard Worker- uri-path: URI path of the resource. 109*cfb92d14SAndroid Build Coastguard Worker- type: "con" for Confirmable or "non-con" for Non-confirmable (default). Use "block-<block-size>" if the response should be transferred block-wise. ("block-16","block-32","block-64","block-128","block-256","block-512","block-1024") 110*cfb92d14SAndroid Build Coastguard Worker 111*cfb92d14SAndroid Build Coastguard Worker```bash 112*cfb92d14SAndroid Build Coastguard Worker> coap get fdde:ad00:beef:0:2780:9423:166c:1aac test-resource 113*cfb92d14SAndroid Build Coastguard WorkerDone 114*cfb92d14SAndroid Build Coastguard Worker``` 115*cfb92d14SAndroid Build Coastguard Worker 116*cfb92d14SAndroid Build Coastguard Worker```bash 117*cfb92d14SAndroid Build Coastguard Worker> coap get fdde:ad00:beef:0:2780:9423:166c:1aac test-resource block-1024 118*cfb92d14SAndroid Build Coastguard WorkerDone 119*cfb92d14SAndroid Build Coastguard Worker``` 120*cfb92d14SAndroid Build Coastguard Worker 121*cfb92d14SAndroid Build Coastguard Worker### observe \<address\> \<uri-path\> \[type\] 122*cfb92d14SAndroid Build Coastguard Worker 123*cfb92d14SAndroid Build Coastguard WorkerThis is the same a `get`, but the `Observe` parameter will be sent, set to 0 triggering a subscription request. 124*cfb92d14SAndroid Build Coastguard Worker 125*cfb92d14SAndroid Build Coastguard Worker- address: IPv6 address of the CoAP server. 126*cfb92d14SAndroid Build Coastguard Worker- uri-path: URI path of the resource. 127*cfb92d14SAndroid Build Coastguard Worker- type: "con" for Confirmable or "non-con" for Non-confirmable (default). 128*cfb92d14SAndroid Build Coastguard Worker 129*cfb92d14SAndroid Build Coastguard Worker```bash 130*cfb92d14SAndroid Build Coastguard Worker> coap observe fdde:ad00:beef:0:2780:9423:166c:1aac test-resource 131*cfb92d14SAndroid Build Coastguard WorkerDone 132*cfb92d14SAndroid Build Coastguard Worker``` 133*cfb92d14SAndroid Build Coastguard Worker 134*cfb92d14SAndroid Build Coastguard Worker### parameters \<type\> \["default"|<ack_timeout\> <ack_random_factor_numerator\> <ack_random_factor_denominator\> <max_retransmit\>\] 135*cfb92d14SAndroid Build Coastguard Worker 136*cfb92d14SAndroid Build Coastguard WorkerSets transmission parameters for the following interactions. 137*cfb92d14SAndroid Build Coastguard Worker 138*cfb92d14SAndroid Build Coastguard Worker- type: "request" for CoAP requests and "response" for CoAP responses. 139*cfb92d14SAndroid Build Coastguard Worker 140*cfb92d14SAndroid Build Coastguard WorkerIf no more parameters are given, the command prints the current configuration: 141*cfb92d14SAndroid Build Coastguard Worker 142*cfb92d14SAndroid Build Coastguard Worker```bash 143*cfb92d14SAndroid Build Coastguard Worker> coap parameters request 144*cfb92d14SAndroid Build Coastguard WorkerTransmission parameters for request: 145*cfb92d14SAndroid Build Coastguard WorkerACK_TIMEOUT=1000 ms, ACK_RANDOM_FACTOR=255/254, MAX_RETRANSMIT=2 146*cfb92d14SAndroid Build Coastguard WorkerDone 147*cfb92d14SAndroid Build Coastguard Worker``` 148*cfb92d14SAndroid Build Coastguard Worker 149*cfb92d14SAndroid Build Coastguard WorkerIf `"default"` is given, the command sets the default configuration for the transmission parameters. 150*cfb92d14SAndroid Build Coastguard Worker 151*cfb92d14SAndroid Build Coastguard Worker```bash 152*cfb92d14SAndroid Build Coastguard Worker> coap parameters request default 153*cfb92d14SAndroid Build Coastguard WorkerTransmission parameters for request: 154*cfb92d14SAndroid Build Coastguard Workerdefault 155*cfb92d14SAndroid Build Coastguard WorkerDone 156*cfb92d14SAndroid Build Coastguard Worker``` 157*cfb92d14SAndroid Build Coastguard Worker 158*cfb92d14SAndroid Build Coastguard WorkerAlso, you can specify the transmission parameters in the command line: 159*cfb92d14SAndroid Build Coastguard Worker 160*cfb92d14SAndroid Build Coastguard Worker- ack_timeout (0~UINT32_MAX): RFC7252 ACK_TIMEOUT, in milliseconds. 161*cfb92d14SAndroid Build Coastguard Worker- ack_random_factor_numerator, ack_random_factor_denominator (0~255): RFC7252 ACK_RANDOM_FACTOR=ack_random_factor_numerator/ack_random_factor_denominator. 162*cfb92d14SAndroid Build Coastguard Worker- max_retransmit (0~255): RFC7252 MAX_RETRANSMIT. 163*cfb92d14SAndroid Build Coastguard Worker 164*cfb92d14SAndroid Build Coastguard Worker```bash 165*cfb92d14SAndroid Build Coastguard Worker> coap parameters request 1000 255 254 2 166*cfb92d14SAndroid Build Coastguard WorkerTransmission parameters for request: 167*cfb92d14SAndroid Build Coastguard WorkerACK_TIMEOUT=1000 ms, ACK_RANDOM_FACTOR=255/254, MAX_RETRANSMIT=2 168*cfb92d14SAndroid Build Coastguard WorkerDone 169*cfb92d14SAndroid Build Coastguard Worker``` 170*cfb92d14SAndroid Build Coastguard Worker 171*cfb92d14SAndroid Build Coastguard Worker### post \<address\> \<uri-path\> \[type\] \[payload\] 172*cfb92d14SAndroid Build Coastguard Worker 173*cfb92d14SAndroid Build Coastguard Worker- address: IPv6 address of the CoAP server. 174*cfb92d14SAndroid Build Coastguard Worker- uri-path: URI path of the resource. 175*cfb92d14SAndroid Build Coastguard Worker- type: "con" for Confirmable or "non-con" for Non-confirmable (default). Use "block-<block-size>" to send blocks with random payload. ("block-16","block-32","block-64","block-128","block-256","block-512","block-1024") 176*cfb92d14SAndroid Build Coastguard Worker- payload: CoAP request payload. If \[type\] is "block-<block-size>", the amount of blocks to be sent can be set here. 177*cfb92d14SAndroid Build Coastguard Worker 178*cfb92d14SAndroid Build Coastguard Worker```bash 179*cfb92d14SAndroid Build Coastguard Worker> coap post fdde:ad00:beef:0:2780:9423:166c:1aac test-resource con payload 180*cfb92d14SAndroid Build Coastguard WorkerDone 181*cfb92d14SAndroid Build Coastguard Worker``` 182*cfb92d14SAndroid Build Coastguard Worker 183*cfb92d14SAndroid Build Coastguard Worker```bash 184*cfb92d14SAndroid Build Coastguard Worker> coap post fdde:ad00:beef:0:2780:9423:166c:1aac test-resource block-1024 10 185*cfb92d14SAndroid Build Coastguard WorkerDone 186*cfb92d14SAndroid Build Coastguard Worker``` 187*cfb92d14SAndroid Build Coastguard Worker 188*cfb92d14SAndroid Build Coastguard Worker### put \<address\> \<uri-path\> \[type\] \[payload\] 189*cfb92d14SAndroid Build Coastguard Worker 190*cfb92d14SAndroid Build Coastguard Worker- address: IPv6 address of the CoAP server. 191*cfb92d14SAndroid Build Coastguard Worker- uri-path: URI path of the resource. 192*cfb92d14SAndroid Build Coastguard Worker- type: "con" for Confirmable or "non-con" for Non-confirmable (default). Use "block-<block-size>" to send blocks with random payload. ("block-16","block-32","block-64","block-128","block-256","block-512","block-1024") 193*cfb92d14SAndroid Build Coastguard Worker- payload: CoAP request payload. If \[type\] is "block-<block-size>", the amount of blocks to be sent can be set here. 194*cfb92d14SAndroid Build Coastguard Worker 195*cfb92d14SAndroid Build Coastguard Worker```bash 196*cfb92d14SAndroid Build Coastguard Worker> coap put fdde:ad00:beef:0:2780:9423:166c:1aac test-resource con payload 197*cfb92d14SAndroid Build Coastguard WorkerDone 198*cfb92d14SAndroid Build Coastguard Worker``` 199*cfb92d14SAndroid Build Coastguard Worker 200*cfb92d14SAndroid Build Coastguard Worker```bash 201*cfb92d14SAndroid Build Coastguard Worker> coap put fdde:ad00:beef:0:2780:9423:166c:1aac test-resource block-1024 10 202*cfb92d14SAndroid Build Coastguard WorkerDone 203*cfb92d14SAndroid Build Coastguard Worker``` 204*cfb92d14SAndroid Build Coastguard Worker 205*cfb92d14SAndroid Build Coastguard Worker### resource \[uri-path\] 206*cfb92d14SAndroid Build Coastguard Worker 207*cfb92d14SAndroid Build Coastguard WorkerSets the URI path for the test resource. 208*cfb92d14SAndroid Build Coastguard Worker 209*cfb92d14SAndroid Build Coastguard Worker```bash 210*cfb92d14SAndroid Build Coastguard Worker> coap resource test-resource 211*cfb92d14SAndroid Build Coastguard WorkerDone 212*cfb92d14SAndroid Build Coastguard Worker> coap resource 213*cfb92d14SAndroid Build Coastguard Workertest-resource 214*cfb92d14SAndroid Build Coastguard WorkerDone 215*cfb92d14SAndroid Build Coastguard Worker``` 216*cfb92d14SAndroid Build Coastguard Worker 217*cfb92d14SAndroid Build Coastguard Worker### set \[new-content\] 218*cfb92d14SAndroid Build Coastguard Worker 219*cfb92d14SAndroid Build Coastguard WorkerSets the content sent by the test resource. If a CoAP client is observing the resource, a notification is sent to that client. 220*cfb92d14SAndroid Build Coastguard Worker 221*cfb92d14SAndroid Build Coastguard Worker```bash 222*cfb92d14SAndroid Build Coastguard Worker> coap set Testing123 223*cfb92d14SAndroid Build Coastguard WorkerDone 224*cfb92d14SAndroid Build Coastguard Worker``` 225*cfb92d14SAndroid Build Coastguard Worker 226*cfb92d14SAndroid Build Coastguard Worker### start 227*cfb92d14SAndroid Build Coastguard Worker 228*cfb92d14SAndroid Build Coastguard WorkerStarts the application coap service. 229*cfb92d14SAndroid Build Coastguard Worker 230*cfb92d14SAndroid Build Coastguard Worker```bash 231*cfb92d14SAndroid Build Coastguard Worker> coap start 232*cfb92d14SAndroid Build Coastguard WorkerDone 233*cfb92d14SAndroid Build Coastguard Worker``` 234*cfb92d14SAndroid Build Coastguard Worker 235*cfb92d14SAndroid Build Coastguard Worker### stop 236*cfb92d14SAndroid Build Coastguard Worker 237*cfb92d14SAndroid Build Coastguard WorkerStops the application coap service. 238*cfb92d14SAndroid Build Coastguard Worker 239*cfb92d14SAndroid Build Coastguard Worker```bash 240*cfb92d14SAndroid Build Coastguard Worker> coap stop 241*cfb92d14SAndroid Build Coastguard WorkerDone 242*cfb92d14SAndroid Build Coastguard Worker``` 243