The AROYA app session that normally serves live online / battery / rssi / lastCommunication per device returned “this token is no longer valid due to user token cutoff” this morning. Every status in this dashboard is therefore derived from the newest telemetry timestamp each device actually emitted via the public API — not read from a live status flag. That is a strictly more conservative read: a device shown as reporting definitely sent data; a device shown as dark definitely sent none in the window we can see. Re-logging in at app.aroya.io restores live status for the next report. No status has been invented.La sesión de la app AROYA está invalidada (“user token cutoff”). Todo el estado aquí se deriva del último timestamp de telemetría real de cada dispositivo vía la API pública, no de un indicador de estado en vivo. Volver a iniciar sesión en app.aroya.io lo restaura.
A radio is a mesh participant: it has a battery, an RSSI, a link quality and a travel time, and it is what firmware runs on. A sensor is a measurement head: it has a substrate or air reading and no radio of its own. Verano PA runs 176 radios and 168 sensors. Adding them into a single “344 devices online” number is how real gaps get hidden — a room can have every radio alive and still be blind because its probe is dead, and a battery warning on a radio says nothing about whether the probe on it is reading. Every count below is kept split.Un radio participa en la malla (batería, RSSI, calidad de enlace, tiempo de viaje). Un sensor es una cabeza de medición. Verano PA tiene {n_radio} radios y {n_sensor} sensores. Sumarlos oculta brechas reales.
| ModelModelo | CountCantidad | ClassClase | What it isQué es | Series it emitsSeries que emite |
|---|---|---|---|---|
node | 146 | radio | Node (mesh radio, battery) | battery_v, link_quality, radio_power, signal, travel_time |
ter15 | 146 | sensor | TEROS One (substrate probe: VWC / pore EC / substrate temp) | pore_ec, soil_moist, soil_temp |
h421 | 22 | radio | Climate One H421 (radio + climate head, PoE) | — |
ee894 | 22 | sensor | EE894 (CO2 / air temp / RH head) | abs_hum, air_temp, co2, rel_hum, vpd |
repeater | 6 | radio | Repeater H340 (mesh radio, battery) | battery_v, link_quality, radio_power, signal, travel_time |
sink | 1 | radio | Sink (PoE) | link_quality, radio_power, signal |
gateway | 1 | radio | Gateway (PoE) | — |
A naive read of this data would report 23 dead devices and start a panic. That would be wrong. The h421 Climate One stations (22 of them, one per room) and the gateway emit no device-level telemetry series at all through the public API — that is a documented API gap, not a fault. Their climate data reaches AROYA through the paired ee894 head (serial <station>S), and 21 of 22 of those heads are reporting right now. Cross-check: the cultivation audit shows live air temp, RH, VPD and CO2 for every room except Room 12 — and Room 12 is precisely the one room whose climate head is silent, because that room finished its run on 7/03 and is being turned. The data agrees with itself. Below, Climate One stations are shown as live via paired head rather than counted as dark.Una lectura ingenua reportaría {len(API_GAP)} dispositivos muertos. Sería incorrecto: los h421 y el gateway no emiten series a nivel de dispositivo por la API pública — es una brecha conocida, no una falla. Sus datos llegan por la cabeza ee894 emparejada, y {len([x for x in by_model['ee894'] if _live(x)])} de {len(by_model['ee894'])} están reportando. La única silenciosa es la de Room 12, que terminó su ciclo el 3-jul.
Thresholds: battery under 3.30 V, RSSI under −90 dBm, link quality under 50, or no telemetry for more than 6 h (warn) / 48 h (dark) — the dark/warn tests are applied only to devices that can emit telemetry, so the Climate One stations and the gateway are excluded by construction rather than smeared into the failure count. 1 device(s) trip at least one threshold. Sensor-head serials are masked; H-prefix radio, repeater, gateway and station serials are shown in full.Umbrales: batería < 3.30 V, RSSI < −90 dBm, calidad de enlace < 50, o sin telemetría > 6 h / 48 h — aplicados solo a dispositivos que pueden emitir telemetría.
| Serial | Model | Room | Zone | Status | Battery (V) | RSSI (dBm) | Link Q | Travel (ms) | Last telemetry (UTC) |
|---|---|---|---|---|---|---|---|---|---|
H421…78S | ee894 | 12 | — | never seen | – | – | – | – | never |
These are radio-only metrics; sensors carry no battery or radio of their own. Fleet battery: median 3.63 V, lowest 3.55 V across 152 radios reporting a battery series. Travel time (how long a packet takes to reach the sink — the earliest warning of a mesh under strain): median 0 ms, 95th percentile 0 ms.Métricas exclusivas de radios. Batería: mediana {fnum(batt_med)} V, mínima {fnum(batt_min)} V. Tiempo de viaje: mediana {fnum(tt_med,0)} ms, percentil 95 {fnum(tt_p95,0)} ms.
Every room, with its radio count and its sensor count kept separate. A room reads “all reporting” only when every device in it — radio and sensor — has emitted telemetry inside the window.Cada sala, con recuentos separados de radios y sensores.
online, live battery %, live RSSI and lastCommunication could not be read. Everything here is derived from the newest telemetry timestamp each device emitted through the public API. Re-login at app.aroya.io restores live status.El estado en vivo no está disponible — sesión de la app invalidada. Todo se deriva de la telemetría.HTTP 400 “Cannot fetch more than two days at a time”. Current battery / RSSI / link-quality / travel-time values are therefore read from a 48-hour pull. Devices that were silent across those 48 hours were then back-stitched in 2-day windows up to 14 days to recover a real last-seen timestamp. No battery or RSSI trend longer than 48 h is claimed, because none is retrievable.El endpoint por dispositivo se limita a 2 días. Los valores actuales vienen de una extracción de 48 h; los dispositivos silenciosos se re-consultaron hacia atrás hasta 14 días.h421 stations and the gateway return an empty telemetry payload — a known API gap, not a device fault. They are therefore excluded from the dark/silent counts by construction and shown as live via paired head, with liveness proxied from the paired ee894 climate head. Treating them as dead would have produced 23 false alarms in a mesh that is in fact fully healthy. Live per-device status for these units needs the AROYA app session.Las estaciones Climate One y el gateway no emiten series por la API pública — brecha conocida, no una falla. Se excluyen de los recuentos de dispositivos sin datos y su estado se infiere de la cabeza ee894 emparejada.