Skip to content

nodes.stats: each node's airtime and duty cycle - #754

Open
A13xB0 wants to merge 1 commit into
mainfrom
node-airtime
Open

A13xB0 wants to merge 1 commit into
mainfrom
node-airtime

Conversation

@A13xB0

@A13xB0 A13xB0 commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator

The engine counts each node's time on the air and the Scores panel draws it, but a script could only get the whole mesh's total, out of an experiment cell. "Which repeater is over its duty cycle" had an answer on screen and none outside it.

Each nodes.stats row now carries airtime_ms (cumulative over the run, so a window is two readings subtracted) and duty_cycle_pct (over the run's whole length, as the panel's column is). A node the engine has no score for has neither rather than a zero. The Python client's NodeStat has both fields.

In the GUI: the same numbers are the Scores panel's airtime and duty columns, unchanged; this makes them reachable from a script.

The Scores panel, where these numbers already were:

scores

The same run's nodes.stats rows now carry them:

{'name': 'CaltonHill', 'sent': 3, 'airtime_ms': 3591, 'duty_cycle_pct': 19.3}
{'name': 'alba', 'sent': 3, 'airtime_ms': 3294, 'duty_cycle_pct': 17.7}
{'name': 'bravo', 'sent': 0, 'airtime_ms': 0, 'duty_cycle_pct': 0}

Tests: rows matched by name, and a node with no score carries no airtime.

Docs: MeshBench/docs#44

…shows them

The engine counts every node's time on the air and the Scores panel
draws it, but a script could only get the mesh's total, out of an
experiment cell. Each nodes.stats row now carries airtime_ms
(cumulative, so a window is two readings subtracted) and duty_cycle_pct
over the whole run.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants