Three layers — sense, decide, account. Each one publishes its own numbers.
Most portable signals are timers in a box. Ours are connected instruments. Here is how the stack is laid out, why we chose it, and where it stops.
01 · Stack
02 · Principles
If it can be measured, it should be published.
Battery state, cycle in flight, queue presence, tilt history. The instrument knows it; the customer should see it. We do not gate telemetry behind a contract upgrade.
Local-first, cloud-second.
The signal makes its own decisions. Loss of network does not change what the head shows. Telemetry buffers for 14 days and replays when reconnected.
Boring algorithms with visible parameters.
Cycle logic is a published table, not a model. Every threshold has a name and a number. The control room can see what the unit will do before it does it.
The audit log is the product.
An instrumented signal is only as good as the record it leaves. We treat the per-job event export as a primary deliverable, not an afterthought.
How a unit sees the road.
A 24 GHz radar fan covers 0-40 m on the approach. It returns a presence flag, a speed estimate, and a confidence value at 10 Hz. For high-volume sites we add a buried inductive loop; the two readings cross-check.
The 6-axis accelerometer runs continuously. A 4° tilt over 30 seconds raises a soft event; a 12° tilt or shock event auto-pauses the cycle and pushes a notification.
03 · What this stack is not
Not a model.
The cycle logic is deterministic and inspectable. We do not run a learned controller on the signal head. If a council asks why a phase ran the way it did, the answer is in a table.
Not autonomous.
The unit does not change its own bounds. Min and max cycle are set per site by a named operator, recorded against a job ticket, and signed off before the closure goes live.
Not connected to the live UTC.
We do not interface with TfL’s urban traffic control or any other live network. Where adjacent fixed signals exist, we co-ordinate on offline timing plans, not real-time signal exchange.
Not a black box.
Firmware versions, sensor calibration dates, and decision parameters are visible per unit. We publish change notes for every release, with the affected parameters and the reason for the change.
04 · Reference numbers
| Radar | 24 GHz CW, 0-40 m, 10 Hz, ±0.3 m/s |
| Inductive loop (opt) | 2 m × 1 m, 1 ms latency, dual-channel |
| Accelerometer | 6-axis MEMS, ±16 g, 100 Hz |
| Cycle bounds | min 30 s · max 240 s · default 60-120 s |
| Decision tick | 250 ms |
| Telemetry cadence | 10 s (configurable 1-60 s) |
| Event buffer | 14 days local, replayed on reconnect |
| Radio | 4G primary · LoRaWAN fallback · LTE-M roadmap |
| Firmware | Signed OTA · staged rollout · rollback supported |
| API | REST + webhook · OpenAPI 3.1 · read-only for clients |