A synthetic week of building-management alarms: 1,157 of them, which is more than the EEMUA 191 guidance says one operator can manage, and typical of estates I have delivered into. Inside the wall: three chattering sensors responsible for most of the noise, two cascade storms where one fault detonates dozens of downstream complaints, and six genuine criticals that arrived quietly and alone. The referee runs three deterministic passes: collapse the chatter, walk the equipment dependency graph to name each storm's root cause, and surface the needles. Runs live in your browser.
Every BMS ships with alarm thresholds set by whoever commissioned it, a decade of additions nobody rationalised, and sensors that cry wolf hundreds of times without anyone re-tuning them. The operator response is rational: treat the wall as wallpaper. The naive fix is a machine-learning layer that flags "anomalies", which fails twice over: it adds alerts to a population that already has too many, and it cannot tell a root cause from a consequence, because that distinction lives in the equipment dependency graph, not in the statistics. When a chiller trips, forty downstream temperature alarms are not forty anomalies; they are one incident with many voices. The fix is engineering, not clairvoyance: deduplicate what repeats, group what cascades, and let the quiet criticals stand out because the noise is gone.
Pass one, chatter. A point alarming 50+ times with heavy repetition is collapsed into episodes; the referee found three such points producing most of the week, and each lands on the bad-actor list with a concrete fix (a deadband, a delay timer, a work order). Pass two, storms. Flood periods are detected on the chatter-collapsed stream (a sensor shouting alone is a bad actor, not a storm), and within each flood the referee names as root-cause candidate the equipment that alarmed first and sits upstream of the most other alarmed equipment; everything downstream files as consequence, with the tree attached so a person can disagree with evidence. Alarms in the window that the root cannot explain stay in the queue on their own merits: grouping never eats what it cannot explain. Pass three, needles. Critical-priority alarms outside any storm surface on their own list, which is the entire point of the exercise.
| Stage | Count | What happened |
|---|---|---|
| raw week | 1,157 | ~165/day against the EEMUA 191 guidance of roughly 144 |
| after chatter collapse | 347 | three chattering points reduced to episodes, on the record |
| after cascade grouping | 262 | two storms (CH-1 trip, DB-L2 trip) filed as two incidents with trees |
| deserved a person | 29 | storm roots, six quiet criticals, and the genuine singletons |
Where this stands, honestly. The log is synthetic and one week long; a real estate produces this volume per building, and the thresholds here (50+ raw for a chatterer, ten alarms per ten minutes for a flood) are starting points a site tunes with its operators. The dependency graph is the honest cost of admission: someone must encode what feeds what, which is exactly the asset knowledge a smart-FM programme builds anyway. I delivered the S$2M ten-mall platform and the 50-facility Government command centre where this problem lives; the referee is the instrument I wished those control rooms had, and the discipline transfers: suppress by stated rule, keep everything on the record, and spend operator attention only where the graph cannot decide.
Alarm rationalisation is the least glamorous problem in smart buildings and one of the highest-yield: it costs energy (ignored faults run for months), safety (the ignored wall eventually contains something real) and trust (a command centre nobody believes is furniture). I build the version where every suppressed alarm can answer for itself, because an operations team, like an audit committee, only trusts a system that shows its reasoning. The same graph that names the root cause today is the backbone of the predictive maintenance that comes next.
Read the week's timeline with its two shaded storms, open a storm and inspect the cascade tree, then check the bad-actor list and the six needles the wall was hiding.