Family Stress Score — one number from six honest signals
Some days are loud and short, everyone’s head is full – and you only realize at dinner that the house was running at 180 the whole afternoon. For exactly those days I built the Family Stress Score in Home Assistant: one number between 0 and 100 that honestly reflects what’s going on in the house.
What the score actually is
The Family Stress Score is one template sensor in Home Assistant. Its state is computed from six signals that Home Assistant already exposes – I just fuse them into a single number that matches my subjective experience. No machine learning, no external service, just a Jinja template on top of existing entities.
The six signals (in order of weight)
1. Noise peaks in the last 5 minutes — max 25 points
By far the strongest factor. Short bursts – a scream, a tantrum, a slammed cabinet – are the most honest stress indicator I’ve found. The source is a statistics sensor (sensor.laermpegel_wohnzimmer_max_5min) holding the 5-minute maximum of a regular sound-pressure sensor in the living room. Buckets: >-30 dBFS = 25, >-35 = 20, >-40 = 15, >-45 = 10, >-50 = 5.
2. Parent load (wife alone with the kids) — max 25 points
If I’m away and my wife is alone with the kids, baseline load is structurally higher – regardless of how quiet it sounds right now. Logic: not is_state('person.parent_a', 'home') and is_state('person.parent_b', 'home') (entity IDs anonymised here). Maxed out: 25 points. This is the second-largest factor and calibrates the score against family reality, not just acoustics.
3. Time of day — max 20 points
17–19 is the evening rush (20 P), 15–17 the prep window (15 P), 7–9 the morning rush (10 P), 12–15 a quiet midday slope (8 P). Anything outside: 0. That way a single noise at 3 a.m. doesn’t push the score – it’s a one-off, not a trend.
4. Current noise level — max 10 points
The momentary value of sensor.larmpegel_wohnzimmer (sound-pressure sensor, device_class: sound_pressure). >-35 dBFS = 10, >-42 = 7, >-48 = 4. The ambient floor – relevant, but intentionally weighted lower than the peaks.
5. Burst spread (peak − mean) — max 10 points
Delta between 5-minute max and 5-minute mean. A high spread means one loud burst in an otherwise quiet room (a scream, a door surrogate). Spread > 25 dB = 10 P, > 18 = 6 P, > 12 = 3 P. This makes the score sensitive to “something just popped” without requiring a high average.
6. Ground-floor PIR rush — max 10 points
Three ZHA motion sensors (kitchen, downstairs landing, living room). If three of them tripped within the last 30 seconds – someone is sprinting through the house – that’s 10 P. Two of them: 6 P. No tracking magic, just last_changed on the binary sensors.
7. Weekend — max 10 points
Flat add: Sat/Sun the whole family is in the house 24/7, so the baseline is higher. now().weekday() >= 5 → +10.
Theoretical sum: 110 points. Capped at 100 with {{ [ns.score, 100] | min }}.
What the score returns as attributes
So I can see why the score is high right now, I expose every raw value as an attribute: noise_level, noise_peak_5min, noise_mean_5min, noise_burst_spread, pir_hektik_count_30s, parent_a_home, weekend. Plus a hint attribute with a human recommendation: ≥70 “Stressful – maybe bring flowers”, ≥50 “Elevated stress – offer support”, ≥30 “Slightly elevated”, else “Relaxed”.
Why a score, not ten dashboards
Previously I had separate tiles for noise, motion, parent presence and so on. In practice nobody glances at them. One number with an icon swap (relaxed → happy → neutral → angry) is what actually works. If the number goes red, I tap in and read the attributes for the reason.
Honest limits
This is a heuristic with hand-tuned thresholds, not a learned model. I iterated the weights against my own gut feeling – not statistically validated. But that’s the point: it’s my score, calibrated for this house and this family. Anyone copying it has to retune the thresholds for their own place.
The matching short
The matching 60-second take is on YouTube:

And if you’d feed in signals I forgot – tell me. I’m particularly curious: which sensor in your house would be the most honest stress detector?
Leave a Reply