DENKOBlue manual

Chapter 8 · Applies to firmware v408 and later · Updated 2026-09-21

The Diagnostics page and the JSON API

Everything the station knows about itself, on one self-refreshing page at /diagnostics — and the machine-readable endpoints behind it and the other pages, for your own scripts and monitoring.

The page reloads itself every two seconds — every number on it is live, rendered from the same status structure the firmware itself uses. The Raw JSON data link at the top is the same content as one document: /api/status.

1. Station

RowWhat to look for
StationThe local 8xxx number, marked remote when it came from the configuration file and default when it is the compiled 8000 (chapter 6).
BoardThe PCB revision and PCB-Id, decoded from the board's own straps.
FirmwareVersion and exact source revision, and whether the image is confirmed or on trial (chapter 5).
Processor IDThe registration key: quote this when linking the board to a Blitzortung account. Fixed in silicon; never changes.
MACDerived from the processor ID — the address you look for in the router's client list.
Detectorarmed is normal; settling is the first moments after start or a retune.
BlitzortungRegistration state and, once registered, the assigned station number. The notes are decoded in chapter 7.
Uptime · Last resetUptime alone says little; the reset cause says whether the last start was planned. watchdog armed is what you want to see.
Boot journalWhich images ran, for how long, and why each stopped, newest first — the station's own history across restarts.
VerdictThe one-line health answer. Every code: chapter 7.
MCUProcessor temperature and supply voltage.

2. GNSS

Fix state, satellites in use, position and height (with the reason when there is no height yet), and the 1PPS lock. Two rows deserve a second look:

3. Detector

The measurement chain's live readings: whether the converter is running, the channel and total gain, per-input polarity, trigger counts and rates, interference state, the threshold, noise and baseline, and a family of counters that should all read zero in healthy operation — ring laps, late windows, timestamp drops, unusable windows. Each warning is decoded in chapter 7.

4. Network participation

The station belongs to two networks at once — Blitzortung and Denko — and each row shows the state and a button to change it: off, on, or on · no collector yet (enabled, but no usable destination learned so far; the page does not call that participation). The choice is stored on the board and survives restarts and configuration refreshes — a fleet update cannot quietly put a station back into a network its owner left. Failure messages on these rows are decoded in chapter 7.

5. Amplifier inputs

The results of the last input survey (started from the Live page): each input's offset in mV and noise in counts, with disabled inputs marked and the active channel flagged. This is the diagnostic that separates a quiet sky from an unpopulated input — identical symptoms, completely different fix. Until the first survey, the row says so and points at the Live page's Survey inputs button.

6. Remote config

Whether the remote configuration is working: fetches and failures, how many keys the file applied, and whether a copy is held in flash (without one, a restart falls back to the compiled defaults). Then every setting, its current value, and its provenance — remote or default — the same list as chapter 6, section 3.

7. Network

Link state, the address and prefix with the gateway, the DHCP state (decoded in chapter 7), the Ethernet chip revision, the collectors the station has learned and the packet counters for each, and low-level traffic counts. Packets sent climbing steadily during weather is the simplest end-to-end proof the station is reporting.

8. The JSON endpoints

Every page is built on a small JSON API, and you can use the same endpoints from your own scripts. Put the station's address in front of each, for example http://192.168.1.57/api/status. Responses to GETs are safe to poll; every endpoint that changes something is POST-only, so a link checker or browser prefetch cannot retune, survey or restart the station.

EndpointMethodWhat it returns / does
/api/statusGETEverything on the Diagnostics page, plus the full configuration with per-key provenance.
/api/gnssGETSatellites, DOP, PPS, receiver identity and capability — everything on the GPS page.
/api/scopeGETA free-running snapshot of the inputs (the Live view's frame).
/api/channelsGETOne aligned snapshot of all four channels; disabled inputs carry no samples.
/api/trig · /api/eventGETThe last window the detector captured and sent, with its pre-trigger history.
/api/captures · /api/capture/NGETThe capture history list, and one capture's full waveform.
/api/respGETResults of the last response sweep and gain check (chapter 4).
/api/aliasGETResult of the last alias survey.
/api/scanPOSTStarts the four-channel input survey; results land in /api/status. GET is refused (405) on purpose — a survey pauses detection.
/api/resp · /api/gaincheck · /api/aliasPOSTStart the sweep, the gain check and the alias survey. The Tests page's buttons use these.
/api/cfgPOSTA runtime configuration patch (chapter 6).
/api/channels · /api/polarityPOSTStore the local enabled-input mask (mask 0..15, 0 follows the fleet) and the per-input polarity mask.
/api/networksPOSTSwitch network participation: lines of bo 0|1 and denko 0|1.
/api/rebootPOSTRestarts the station. POST-only for the same reason as the survey.

Sample windows are hex strings, three characters per 12-bit sample. One count is about 0.79 mV at the converter; divide by the gain to refer a value to the antenna.

No authentication. Anything that can reach the station can read these endpoints and post to the control ones. Keep the station on a trusted network.