Say how strongly each sensor is being heard, and how much of it arrives

Two numbers rather than one, because "how well is this sensor coming in" is
two questions and they can disagree in a way that is worth seeing.

The first is strength: how far the sensor's burst stood above the noise of the
second it arrived in, in decibels, on every reading and in the log and the
spreadsheet.  The burst detector already worked this out and threw it away --
it is the ratio the per-burst threshold is set from -- so this is carrying a
number through rather than measuring a new one.

What it is not is a power at the aerial, and the docstring says so where
somebody will read it.  A dongle has no reference level and, with the tuner
left on automatic, no fixed gain either; anything in dBm would be invention.
A ratio of two amplitudes off the same receiver in the same second is the
honest quantity, and it is enough for the three things anybody wants a signal
reading for: comparing two sensors now, watching one over an evening, and
pointing an aerial.  A fixed --gain makes it comparable between runs as well,
which the help now says.

It is coloured red, amber or green, it is on the live display as well as the
report, and it is kept on a narrow terminal when other columns are dropped --
because somebody moving a whip about while a number climbs is not doing it on
a wide window, and that is the most useful thing this does.

The second is the share of what a sensor sent that actually arrives, which
comes out of the timing for nothing.  These transmit on a fixed cycle, so the
shortest wait ever seen between two of a sensor's messages is that cycle, and
the average wait is the cycle divided by the fraction getting through: one
over the other is the fraction, with no need to know the model or how often it
is meant to speak.

Read together they say more than either does alone.  A strong signal with a
low share is interference or a collision rather than distance.  A weak signal
at a hundred per cent is a sensor at the edge that is getting through anyway
and is best left alone.

The strongest of the three copies of a message is the one reported, not the
first: they go out milliseconds apart and arrive at whatever the fading does
to each.  A reading with no strength -- an older log, a block with no
measurable noise floor to be a ratio to -- leaves the last known figure alone
rather than overwriting it with a zero.

Full suite 2369 passed, checked against five deliberately broken builds
including the one that reports decibels as a power ratio, which is off by a
factor of two and looks entirely reasonable.  Built as 2026-09-07_06.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PsWPTweCT6pwxKngvVxcg
This commit is contained in:
The Dust Council 2026-09-07 23:50:37 -07:00
parent 872eadac37
commit 03d3600ecc
10 changed files with 375 additions and 24 deletions

View file

@ -2048,11 +2048,40 @@ mast wind 14.2 km/h 3.1 km/h 0.0 km/h 38.6 km/h
```
The two tables are split on purpose. The first is about reception — who, how
often, how well — and is the one to look at when something is missing; `every`
is the honest measure of an aerial, because these transmit on a fixed cycle,
so thirty seconds from a sensor that sends every sixteen means half of them
are being missed. The second is about the weather, and is the one to look at
when nothing is.
often, how well — and is the one to look at when something is missing. The
second is about the weather, and is the one to look at when nothing is.
### How well each sensor is heard
Three columns of the first table answer that, and they answer different halves
of it.
**`signal`** is how far the sensor's burst stood above the noise, in decibels,
coloured red below 14 dB, amber below 22, green above. It is a ratio of two
amplitudes off the same receiver in the same second and nothing more — *not* a
power at the aerial, which an RTL-SDR cannot give: it has no reference level,
and on automatic gain it does not have a fixed gain either. What a ratio is
good for is comparing one sensor with another at the same moment, watching one
sensor over an evening, and pointing an aerial. Set `--gain 40` (or any fixed
figure) if you want the numbers comparable between one run and the next;
on automatic they drift with whatever the tuner decided.
It is on the live display too, and kept there even on a narrow terminal,
because moving a whip around while watching a number go up is the single most
useful thing it does.
**`every`** is the average wait between messages, and **`heard`** turns that
into a share. These transmit on a fixed cycle, so the shortest wait ever seen
between two of a sensor's messages *is* that cycle, and the average wait is
the cycle divided by the fraction getting through — one over the other is
therefore the share, without ever needing to know what model it is or how
often it is supposed to speak.
The two are worth reading together, and they can disagree usefully. A strong
signal with a low share is interference or a collision with another
transmitter rather than a range problem. A weak signal at a hundred per cent
is a sensor at the edge that is nonetheless getting through, and is worth
leaving alone.
There is no average. These arrive every sixteen seconds when the sensor is in
range and not at all when it is not, and rain and cold both shorten the range
@ -2140,6 +2169,8 @@ aerial. These are a few milliwatts: a quarter-wave whip for 433.92 MHz is 17 cm
of wire, which is the stock telescopic aerial collapsed to about that, and
indoors behind a wall with the dongle in the back of a machine is usually the
problem. Try `--gain 40` if the automatic gain control is not finding them.
Once anything at all is being heard, the `signal` column on the live display
is the thing to watch while moving the aerial about.
**`peak` is well above `noise` and there are no bursts.** Something is there
and did not group — usually a continuous transmitter rather than a keyed one,