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
| Row | What to look for |
|---|---|
| Station | The local 8xxx number, marked remote when it came from the configuration file and when it is the compiled 8000 (chapter 6). |
| Board | The PCB revision and PCB-Id, decoded from the board's own straps. |
| Firmware | Version and exact source revision, and whether the image is confirmed or on trial (chapter 5). |
| Processor ID | The registration key: quote this when linking the board to a Blitzortung account. Fixed in silicon; never changes. |
| MAC | Derived from the processor ID — the address you look for in the router's client list. |
| Detector | armed is normal; settling is the first moments after start or a retune. |
| Blitzortung | Registration state and, once registered, the assigned station number. The notes are decoded in chapter 7. |
| Uptime · Last reset | Uptime alone says little; the reset cause says whether the last start was planned. watchdog armed is what you want to see. |
| Boot journal | Which images ran, for how long, and why each stopped, newest first — the station's own history across restarts. |
| Verdict | The one-line health answer. Every code: chapter 7. |
| MCU | Processor 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:
- Antenna: the receiver's own supervisor — ok, SHORT or OPEN — with the caveat, when it applies, that “ok” only means “not shorted” (chapter 3).
- Ring resyncs / UART resyncs: intervals the reader could not account for. Not data loss — merely serving this page can cause one. (The counter that does mean lost samples is Ring laps, in the Detector section, and it should read zero.)
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 — 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.
| Endpoint | Method | What it returns / does |
|---|---|---|
/api/status | GET | Everything on the Diagnostics page, plus the full configuration with per-key provenance. |
/api/gnss | GET | Satellites, DOP, PPS, receiver identity and capability — everything on the GPS page. |
/api/scope | GET | A free-running snapshot of the inputs (the Live view's frame). |
/api/channels | GET | One aligned snapshot of all four channels; disabled inputs carry no samples. |
/api/trig · /api/event | GET | The last window the detector captured and sent, with its pre-trigger history. |
/api/captures · /api/capture/N | GET | The capture history list, and one capture's full waveform. |
/api/resp | GET | Results of the last response sweep and gain check (chapter 4). |
/api/alias | GET | Result of the last alias survey. |
/api/scan | POST | Starts 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/alias | POST | Start the sweep, the gain check and the alias survey. The Tests page's buttons use these. |
/api/cfg | POST | A runtime configuration patch (chapter 6). |
/api/channels · /api/polarity | POST | Store the local enabled-input mask (mask 0..15, 0 follows the fleet) and the per-input polarity mask. |
/api/networks | POST | Switch network participation: lines of bo 0|1 and denko 0|1. |
/api/reboot | POST | Restarts 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.