Drogheda/01-Requirements/SRS.md

84 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
tags: [project-drogheda, requirements, srs]
project: Project Drogheda
author: Helgen CTO
date: 2026-06-20
status: Draft
---
# Software/System Requirements — Drogheda HBOX RTK
> What the Drogheda system must do and how well. Derived from the ICAVE field
> failures, the client review, and the productization goal (30 units by August
> across ICAVE/TIMSA/EIT/LCT). IDs are stable; trace fixes and tests back to them.
## 1. Scope
A vehicle-mounted, cabinet-housed **RTK GPS tracker (HBOX)** that streams
RTK-corrected position over 4G to the backend (`retranslator` → Wialon/Traccar →
VERONICA), survives a harsh, hot, high-vibration port environment, and is
manufacturable and serviceable at fleet scale.
## 2. Functional requirements
| ID | Requirement | Priority |
|---|---|---|
| FR-1 | Acquire GNSS position via simpleRTK2B Pro (ZED-F9P), multiband. | Must |
| FR-2 | Obtain RTCM3 corrections via NTRIP over 4G from the Helgen base station; achieve RTK fix/float in open sky. | Must |
| FR-3 | Emit NMEA (GGA+RMC) and deliver it via UDP to the backend at the configured rate. | Must |
| FR-4 | Rate control: 1 Hz when powered+ignition-on; 30 s on battery/idle (power saving). | Must |
| FR-5 | **Watchdog recovery:** detect loss of corrections / NMEA silence and recover by **power-cycling the RTK+4G stack** with exponential backoff; never enter an infinite fast-reboot loop. | Must |
| FR-6 | **Degraded reporting:** when corrections can't be restored, keep reporting standalone GPS (LIMP) instead of going offline. | Must |
| FR-7 | Power management: run on cabinet 24 V; ride-through / battery behavior per the chosen battery strategy; protect the cell (no charge >45 °C if a cell is retained). | Must |
| FR-8 | Field-readable status LED (boot / running / battery / searching / LIMP / power-cycle / sleep). | Should |
| FR-9 | Per-unit identity (cell_id) and provisioning (UART config, unique ID, NVM save) repeatable per the SOP. | Must |
| FR-10 | SIM/data-chip serviceable without full disassembly. | Should |
| FR-11 | Observability: log MCU/enclosure temperature, battery V, fix quality, reset events for field diagnosis. | Should |
| FR-12 | **Backend:** ingest from many units concurrently without head-of-line blocking; forward valid fixes to Wialon; anti-jump filter must never permanently lock out a healthy unit. | Must |
## 3. Non-functional requirements
| ID | Requirement | Target |
|---|---|---|
| NFR-1 Thermal | Operate continuously inside the sealed cabinet in Veracruz sun. | Internal components rated/derated for **≥75 °C**; enclosure is **ASA** (UV-stable, ~95–100 °C — no PLA-class material in the thermal path); measured cabinet-interior target set from a sunny-shift log. |
| NFR-2 Vibration | Survive continuous heavy-machinery vibration (RTG, reach stacker). | No Dupont/hand-wire; locking connectors; retained boards; conformal coat. Target ≥2 G per spec sheet — **validate**. |
| NFR-3 Ingress | Maintain **IP67**; no internal condensation. | Sealed; Gore vent for pressure/humidity; cooling via conduction only (no IP-breaking vents). |
| NFR-4 Electrical | Tolerate the machine electrical environment. | Surge/breaker/ignition isolation handled at the **cabinet** (Phoenix SPD + breaker + SSR); HBOX adds a modest local TVS + reverse-polarity. |
| NFR-5 Availability | Minimize Wialon disconnects per unit. | No reset loops (FR-5); backend HOL-block eliminated (FR-12); define a monthly availability SLO once stabilized. |
| NFR-6 Maintainability | Serviceable, documented, repeatable. | One PCB; labeled; test points; published BOM; SIM access (FR-10). |
| NFR-7 Scalability | Backend handles fleet scale. | ≥500 concurrent units without drop under realistic (slow-upstream) load tests. |
| NFR-8 Security | No secrets in the repo. | Rotate the committed MSSQL password; secrets via env/secret store; least privilege. |
| NFR-9 Manufacturability | Buildable for the August batch. | Production BOM locked; assembly doc; pilot units validated before fleet. |
## 4. Constraints & assumptions
- HBOX input is the cabinet's **regulated 24 V** + an **isolated ignition** signal.
- The **cabinet** (Yetlebox IP67 ABS + DIN industrial parts) stays; the redesign
targets the **HBOX internals** + thermal/mechanical.
- ZED-F9P (−40…+85 °C) is not the thermal weak link; the **18650/PowerBoost** and
**4G modem** are (the **ASA case** is adequate).
- Corrections flow over 4G, not the GNSS (drives FR-5/FR-6).
- Firmware must be bench-validated before field flash (no STM32 build in sandbox).
## 5. Acceptance criteria (high level)
- A unit on the bench: boots, gets RTK fix/float, transmits, and **recovers
automatically** from a forced 4G/NTRIP outage within the backoff window without
looping (FR-5/6).
- Backend: under a 500-unit slow-upstream load test, **no unit is dropped** and no
unit is permanently filtered out (FR-12, NFR-7).
- Thermal: a unit survives a full sunny-shift soak at the measured cabinet
interior temperature with no enclosure deformation and no battery over-temp (NFR-1).
- A pulled unit's logs distinguish hardware death from backend victimhood (FR-11).
## Open Questions
- [ ] Battery strategy (drop / LiFePO4 / supercap) → finalizes FR-7, NFR-1.
- [ ] Confirm the 2 G vibration claim and IP67 after the thermal mods (NFR-2/3).
- [ ] Define the numeric availability SLO (NFR-5) once the fleet is stable.
## Related
- [[CLAUDE|Master Index]] · [[01-Requirements/HBOX-product-spec|HBOX Product Spec]] ·
[[06-Testing-Validation/RCA-2026-06-field-failures|RCA]] · [[00-Project-Management/PLAN|PLAN]]