Measure parent choice and radio duty
Compare a leaf-only node’s route and radio duty with always-on CSMA and a scheduled TSCH configuration.

Radio Remi — I trace the measured path and keep application claims separate.
Predict the reading, then compare it with the measurement.
Contiki-NG Cooja
Third party ToolDownload the complete lab packet and follow README.md to run it in the free simulator.
Download the setup and run guideGet the lab files
Download the complete packet for the simulation and its firmware, or download individual files for inspection. README.md gives the setup and run commands.
Steps
Step 1
- Do
- From Cooja's File menu, open cooja-mesh-exercises-csma.csc and let it finish at 300 seconds. Trace the leaf-only node 5 through relay 3 to root 1.
- You will see
- Input: run the 300 s CSMA CSC; inspect leaf 5, relay 3 and root 1. Observed: "241549000 ID:5 -- Preferred parent: fe80::203:3:3:3 (last DTSN: 240)" Expected: parent map 5→3→1 and 85/85 requests accepted by root 1.
- Why it matters
- Meaning: The parent line and run summary agree with the two-hop arrow path. Limit: A leaf-only routing role does not itself switch off the CSMA radio.

Step 1 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) Step 2
- Do
- In Cooja's Mote output window, filter Energest. Read ID:5’s final complete 60-second period and calculate Radio total / Total time.
- You will see
- Input: read leaf 5 Energest period #3 in the CSMA run. Observed: "240971000 ID:5 [INFO: Energest ] Radio Rx : 59964568/ 60000000 (999 permil)" Observed: "240971000 ID:5 [INFO: Energest ] Radio total : 60000000/ 60000000 (1000 permil)" Expected: 60,000,000 / 60,000,000 = 1000 permil, or 100% radio state time.
- Why it matters
- Meaning: The always-on CSMA receiver dominates this period’s radio activity. Limit: State time is an energy proxy, not measured current or battery life.

Step 2 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) Step 3
- Do
- From Cooja's File menu, open cooja-mesh-exercises.csc, the TSCH variant, and let it finish. Trace the parent arrows and compare delivery.
- You will see
- Input: run the 300 s TSCH CSC on the same topology. Observed: "241549000 ID:5 -- Preferred parent: fe80::203:3:3:3 (last DTSN: 240)" Expected: parent map 5→3→1 and 83/83 requests accepted by root 1.
- Why it matters
- Meaning: The same relay path survives the scheduled-radio configuration. Limit: Association and jitter change attempts within the fixed window; compare delivery ratios.

Step 3 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) Step 4
- Do
- In Cooja's Mote output window, filter ^--|TSCH|Received ping reply. Inspect rpl-nbr, rpl-status, tsch-schedule and tsch-status in the full log.
- You will see
- Input: inspect leaf 5 RPL/TSCH status and ping to root 1. Observed: "241549000 ID:5 -- Preferred parent: fe80::203:3:3:3 (last DTSN: 240)" Observed: "241549000 ID:5 -- Rank: 413" Observed: "243549000 ID:5 -- Time source: 0003.0003.0003.0003" Observed: "250814616 ID:5 Received ping reply from fd00::201:1:1:1, len 4, ttl 63, delay 265 ms" Expected: relay 3 as parent/time source and a root ping with TTL 63, delay 265 ms.
- Why it matters
- Meaning: Routing parent, clock source and ICMP reply are separate observed checks. Limit: A successful ping does not establish any Zigbee or Thread application behavior.

Step 4 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) Step 5
- Do
- In Cooja's Mote output window, filter Energest. Calculate the final ID:5 duty ratio from the raw counts; compare the first interval separately.
- You will see
- Input: compare leaf 5’s first TSCH interval with complete period #3. Observed: "60973020 ID:5 [INFO: Energest ] Radio total : 18940500/ 60002020 (315 permil)" Observed: "240971000 ID:5 [INFO: Energest ] Radio total : 2566500/ 60000000 (42 permil)" Expected: 18,940,500 / 60,002,020 = 315 permil first; 2,566,500 / 60,000,000 = 42 permil later.
- Why it matters
- Meaning: The last fraction is 4.2775%; the log prints whole permil after truncation. Limit: Startup association and observation window affect duty; this is not a battery forecast.

Step 5 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) Step 6
- Do
- Bring Radio messages to the front. Inspect the frame exchanges, then complete the README exercise ledger and protocol-boundary worksheet.
- You will see
- Input: inspect the TSCH Radio messages capture and match application traffic in serial. Observed: "298904552 ID:1 [INFO: App ] Received request 'hello 26' from fd00::205:5:5:5" Observed: "299044808 ID:5 [INFO: App ] Received response 'hello 26' from fd00::201:1:1:1" Expected: one request from leaf 5 and its reply, within 83/83 root receipts.
- Why it matters
- Meaning: The serial pair confirms application delivery while the capture shows simulated radio frames. Limit: Neither the serial pair nor radio view executes a Zigbee profile, Thread poll or Matter endpoint.

Step 6 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
Chapter checks
These questions refer to the chapter’s examples. Use the return links to review their answers.
A Zigbee device has joined the network and its packets route correctly. What has that NOT yet proven?
Return to the chapter’s knowledge checkIn the Zigbee application model, what is the relationship between endpoints, clusters, and attributes?
Return to the chapter’s knowledge check