Inspirations June 6, 2026 4 min read

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:

YouTube Video

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?

Home Assistant Smart Home
← Previous
Is This the END of Home Assistant Dashboards?
🤖

Nova recommends

related posts
Smart Coffee Mug: Useful or Just a Gimmick?
Mar 11, 2026 · 2 min read
Worried of big tech spying on you? Ditch Alexa for a local (no cloud) voice assistant! (Part I – prototype)
Nov 17, 2023 · 8 min read
Analyze your camera images LOCALLY with AI models from within Home Assistant
Jul 20, 2024 · 1 min read

Leave a Reply

Your email address will not be published. Required fields are marked *

Stay in the loop

New articles, project builds, and YouTube videos delivered to your inbox. No spam, unsubscribe anytime.

Or follow me on:

YouTube