Skip to main content
Selora Homes Selora Homes
Recipe · v1.0.0 · Released Aug 19, 2026

Selora AI Health Alert

Watches Selora AI's own Home Health sensor (sensor.selora_ai_home_health) and notifies you when your home's score is declining: a sustained drop below your warning score, a fall past your critical score, or a sharp drop in a single reassessment while the score is still healthy. Add a speaker and critical alerts are announced out loud.

Selora AI already scores your home out of 100 on the Health tab : offline devices, low batteries, integration errors, unresponsive sensors, duplicate automations, pending updates. The catch is that the score only tells you something if you go and look at it. A hub that has been quietly dropping devices for a fortnight scores the same whether you noticed in week one or found out when a client called.

This recipe closes that gap. It watches the score and tells you when it starts sliding, so a declining home is something you hear about rather than something you discover.

The sensor it watches

Everything in this recipe triggers off one entity that Selora AI creates for you:

EntityShown in Home Assistant asReports
sensor.selora_ai_home_healthSelora AI Home HealthThe 0 to 100 health score, as a percentage

The sensor also carries an active_signals attribute holding the current number of open findings, and every notification this recipe sends quotes it, so you know whether you are looking at one broken integration or a dozen small things stacking up.

There is nothing to pick during install: the entity exists on every home running Selora AI with Health monitoring switched on, so the recipe binds to it directly. If you have turned Health monitoring off under the panel’s Settings, the sensor reads unavailable and none of these alerts can fire. Turn it back on before installing.

What it tells you

Four notifications, all thresholds yours to set during install:

  • Declining. The score sits below your warning score (80 by default) for a sustained period (15 minutes by default, which is one full Selora AI reassessment cycle, so a device that drops off and comes straight back does not wake you). The alert names the score and how many findings are open.
  • Critical. The score falls below your critical score (50 by default). No delay on this one, and this is the tier that can speak out loud.
  • Dropping. The score falls by at least your sharp drop setting (10 points by default) in a single reassessment, even though it is still healthy. A fall from 96 to 84 means a finding with real weight just appeared, and you get the head start instead of waiting for it to cross 80.
  • Recovered. The score climbs back above your warning score, so you know the thing you fixed actually moved the number. Turn this one off during install if you only want to hear about problems.

The tiers do not double up. A fall that lands in warning territory is reported once, and a fall straight past the critical score is reported by the critical alert alone.

Announcing on a speaker

A push notification is easy to miss if your phone is on silent. During install you can optionally pick one or more speakers, and a critical score is announced out loud over text to speech in addition to the notification. The warning, dropping, and recovered alerts stay on push: a home health score sliding from 92 to 80 is worth a notification, not an announcement in the living room.

Leave the speaker selection empty and the recipe is notification-only. To add or change speakers later, reinstall the recipe and adjust the selection.

Choosing your thresholds

The defaults suit a home you look after actively. If you are managing a property where a few known-offline consumer devices are permanently parked in the checklist, the score has a lower ceiling than 100, so set the warning score a little under wherever it normally settles rather than at 80. Set the critical score well below that, and keep the sharp drop setting at 10 or higher so a single minor finding appearing does not notify: the score is penalty-weighted, and minor findings have diminishing returns by design.

Files Selora AI's pipeline reads to install this recipe. The manifest declares roles, inputs, and integrations; the package files are Jinja-templated YAML applied to Home Assistant.

# Selora AI Health Alert: tell the homeowner when their home health score
# is falling, instead of leaving it to be noticed on the Health tab.
#
# The trigger entity is Selora AI's own Home Health sensor,
# ``sensor.selora_ai_home_health`` (0-100, with an ``active_signals``
# attribute carrying the number of open findings). It always exists on a
# home running Selora AI with Health monitoring on, so it is hard-coded in
# the template rather than resolved as a role, because there is nothing for the
# homeowner to pick and no other entity that could fill the slot.
#
# Four automations, all thresholds homeowner-configurable:
#   1. warning:   score sits below ``warn_threshold`` for a sustained
#                  period (default 15 min, matching Selora AI's own
#                  reassessment interval, so a single bad sample can't
#                  page anyone).
#   2. critical:  score falls below ``critical_threshold``, with the
#                  optional spoken announcement.
#   3. drop:      score falls by ``drop_points`` in one reassessment while
#                  still above the warning threshold. This is the
#                  "declining" case: 96 -> 84 is worth knowing about even
#                  though nothing has crossed a threshold yet.
#   4. recovered: score climbs back above ``warn_threshold``. Opt-out via
#                  ``notify_recovery``.
#
# The sensor reads ``unavailable`` when Health monitoring is switched off,
# so every automation guards against unknown/unavailable rather than
# treating a missing score as 0 and alerting on it.
#
# min_integration_version: the Home Health sensor ships with the Health
# tab; older integrations have no such entity and the recipe would install
# an automation that can never fire.
slug: selora-ai-health-alert
version: 1.0.0
title: Selora AI Health Alert
tagline: Get told when your home health score starts sliding, instead of finding out next time you open the Health tab.
description: >-
  Watches Selora AI's own Home Health sensor and notifies you when your
  home's score is declining: a sustained drop below your warning
  threshold, a fall past your critical threshold, or a sharp drop in a
  single reassessment even while the score is still healthy. Each alert
  names the score and how many findings are open. Add one or more
  speakers and critical alerts are announced out loud. Notifies you again
  when the score recovers.
author: Selora AI
released: "2026-08-19"
min_integration_version: "0.13.0"
tags: [maintenance, monitoring, health, alerts]
roles:
  # Announcement speakers: optional. A declining health score is not an
  # emergency, so only the critical alert is spoken; the rest stay on
  # push. min_count 0: leave it empty and the recipe is
  # notification-only. Multi-select so the announcement can fan out.
  - id: announce_speakers
    title: Announcement speakers
    kind: media_player
    min_count: 0
    selection: required
    description: >-
      Optional. Speakers that announce a critical health score out loud
      over text to speech, in addition to the push notification. Leave
      empty to be notified on your phone only.
inputs:
  # Warning threshold. 80 is the example the Health documentation uses for
  # "worth a look" and leaves room above the critical tier. Feeds the
  # numeric_state trigger's ``below``.
  - id: warn_threshold
    type: number
    label: Warning score
    description: >-
      Notify when the home health score falls below this number. 80 leaves
      room for a couple of minor findings without alerting.
    default: 80
  # Critical threshold. Below this the home has real problems (offline
  # devices, failing integrations) rather than a long tail of minor
  # findings, so this tier is the one that can speak on the speakers.
  - id: critical_threshold
    type: number
    label: Critical score
    description: >-
      Notify more urgently, and announce on any speakers you picked, when
      the score falls below this number.
    default: 50
  # How long the score must stay below the warning threshold before the
  # warning fires. Selora AI reassesses every 15 minutes by default, so 15
  # means "still bad on the next reassessment" and a device that drops off
  # for one cycle and comes straight back doesn't notify.
  - id: sustained_minutes
    type: number
    label: Sustained for (minutes)
    description: >-
      How long the score must stay below the warning threshold before you
      are notified. Selora AI reassesses every 15 minutes, so 15 means the
      dip has to survive one more reassessment.
    default: 15
  # Sharp-drop size, in points, for the "declining" alert that fires while
  # the score is still above the warning threshold. 10 is large enough to
  # mean a real finding appeared (a critical finding subtracts its full
  # weight) rather than one more minor item nudging the roll-up.
  - id: drop_points
    type: number
    label: Sharp drop (points)
    description: >-
      Notify when the score falls by at least this many points in a single
      reassessment, even if it is still above the warning threshold. Raise
      it to only hear about large drops.
    default: 10
  # Recovery notification. On by default: an alert with no all-clear
  # leaves the homeowner checking the panel to find out whether whatever
  # they fixed actually moved the score.
  - id: notify_recovery
    type: boolean
    label: Notify when recovered
    description: >-
      Send a follow-up notification when the score climbs back above the
      warning score. Turn off to only hear about problems.
    default: true
  # TTS engine entity for the critical announcement. Auto-resolved by the
  # ``tts_engine`` resolver from the home's configured tts.* entities, so the
  # wizard never shows this field. ``tts.speak`` (not ``tts.cloud_say``,
  # which needs a paid Home Assistant Cloud subscription) so the
  # announcement works on every home. The resolver returns an empty string
  # when the home has no TTS engine; the template then skips the
  # announcement and the recipe stays push-notification-only. The default
  # below is only used by the offline recipe-validation gate, which has no
  # resolver to run; at install the resolver always overwrites it.
  - id: tts_engine
    type: string
    label: Text-to-Speech engine
    description: >-
      Speech engine entity used for the spoken critical announcement.
      Resolved automatically from the Text-to-Speech engines configured in
      Home Assistant.
    resolver: tts_engine
    default: "tts.piper"
package_files:
  - package/automations/health_alert.yaml.j2
{# Selora AI Health Alert: notify when the home health score is falling.

   Everything triggers off Selora AI's own sensor, sensor.selora_ai_home_health
   (0-100, attribute ``active_signals`` = number of open findings). It is
   hard-coded, not a resolved role: the entity id is fixed for every home
   running Selora AI, so there is nothing to bind.

   Thresholds arrive as manifest inputs and are re-declared as automation-level
   ``variables`` so the HA templates can reference them by name instead of
   splicing numbers into a raw block.

   Health monitoring can be switched off, in which case the sensor reads
   ``unavailable``. numeric_state triggers ignore non-numeric states, so the
   threshold automations are safe by construction; the sharp-drop automation
   uses a state trigger and therefore checks both states explicitly.

   Every template stays on a single quoted line so the renderer's trim_blocks
   can't swallow following YAML at an end-of-line tag. #}
automation:
  # 1. Sustained dip below the warning score. ``for`` keeps a single bad
  #    reassessment from paging anyone; the condition hands anything already
  #    past the critical threshold to the critical automation below so one
  #    fall doesn't send two notifications.
  - id: selora_recipe_{{ slug | replace('-', '_') }}_health_warning
    alias: "Selora AI Health Alert: score below warning"
    description: >-
      When the Selora AI home health score stays below the warning score for
      the configured period, send a push notification naming the score and
      how many findings are open.
    mode: single
    variables:
      critical_threshold: {{ inputs.critical_threshold }}
    trigger:
      - platform: numeric_state
        entity_id: sensor.selora_ai_home_health
        below: {{ inputs.warn_threshold }}
        for:
          minutes: {{ inputs.sustained_minutes }}
    condition:
      # is_number guard: Health monitoring can be switched off in the window
      # between the dip starting and this firing, which leaves the sensor
      # unavailable. Without the guard the notification would read
      # "unavailable out of 100".
      - condition: template
        value_template: "{% raw %}{{ states('sensor.selora_ai_home_health') | is_number and (states('sensor.selora_ai_home_health') | float) >= critical_threshold }}{% endraw %}"
    action:
      - variables:
          score: "{% raw %}{{ states('sensor.selora_ai_home_health') }}{% endraw %}"
          signals: "{% raw %}{{ state_attr('sensor.selora_ai_home_health', 'active_signals') | default(0, true) }}{% endraw %}"
      - service: notify.notify
        data:
          title: "Home health declining"
          message: "{% raw %}Home health is {{ score }} out of 100 with {{ signals }} open finding(s). Open the Selora AI Health tab to see what needs attention.{% endraw %}"

  # 2. Below the critical score. Same sensor, no ``for``: at this point the
  #    home has real problems (offline devices, failing integrations) and the
  #    delay only postpones the fix. This is the tier that speaks aloud.
  - id: selora_recipe_{{ slug | replace('-', '_') }}_health_critical
    alias: "Selora AI Health Alert: score critical"
    description: >-
      When the Selora AI home health score falls below the critical score,
      send an urgent push notification and, if speakers are configured,
      announce it out loud.
    mode: single
    trigger:
      - platform: numeric_state
        entity_id: sensor.selora_ai_home_health
        below: {{ inputs.critical_threshold }}
    action:
      - variables:
          score: "{% raw %}{{ trigger.to_state.state }}{% endraw %}"
          signals: "{% raw %}{{ state_attr('sensor.selora_ai_home_health', 'active_signals') | default(0, true) }}{% endraw %}"
      - service: notify.notify
        data:
          title: "Home health critical"
          message: "{% raw %}Home health has dropped to {{ score }} out of 100 with {{ signals }} open finding(s). Check the Selora AI Health tab now.{% endraw %}"
{% if roles.announce_speakers and inputs.tts_engine %}
      # Spoken announcement on the configured speakers, via the auto-resolved
      # TTS engine. tts.speak works without a Home Assistant Cloud
      # subscription; the speakers go in media_player_entity_id.
      - service: tts.speak
        target:
          entity_id: {{ inputs.tts_engine }}
        data:
          media_player_entity_id:
{% for player in roles.announce_speakers %}
            - {{ player }}
{% endfor %}
          message: "{% raw %}Attention. Home health has dropped to {{ score }} out of 100. Check the Selora AI Health tab.{% endraw %}"
{% endif %}

  # 3. Sharp drop while the score is still healthy, the "declining" case a
  #    threshold can't catch. 96 -> 84 means a finding with real weight just
  #    appeared, and waiting for it to cross the warning score wastes the head
  #    start. The condition requires the new score to still be at or above the
  #    warning threshold so a drop that lands in warning territory is reported
  #    once, by automation 1.
  - id: selora_recipe_{{ slug | replace('-', '_') }}_health_drop
    alias: "Selora AI Health Alert: sharp drop"
    description: >-
      When the Selora AI home health score falls by the configured number of
      points in a single reassessment while still above the warning score,
      send a heads-up naming the drop.
    mode: single
    variables:
      drop_points: {{ inputs.drop_points }}
      warn_threshold: {{ inputs.warn_threshold }}
    trigger:
      - platform: state
        entity_id: sensor.selora_ai_home_health
    condition:
      # Both states must be real numbers: a reload or a Health-monitoring
      # toggle produces unknown/unavailable, and float(0) on those would read
      # as a 100-point crash.
      - condition: template
        value_template: "{% raw %}{{ trigger.from_state is not none and trigger.to_state is not none and trigger.from_state.state not in ['unknown', 'unavailable', 'none'] and trigger.to_state.state not in ['unknown', 'unavailable', 'none'] }}{% endraw %}"
      - condition: template
        value_template: "{% raw %}{{ (trigger.from_state.state | float) - (trigger.to_state.state | float) >= drop_points and (trigger.to_state.state | float) >= warn_threshold }}{% endraw %}"
    action:
      - variables:
          signals: "{% raw %}{{ state_attr('sensor.selora_ai_home_health', 'active_signals') | default(0, true) }}{% endraw %}"
      - service: notify.notify
        data:
          title: "Home health dropping"
          message: "{% raw %}Home health fell from {{ trigger.from_state.state }} to {{ trigger.to_state.state }} out of 100, with {{ signals }} open finding(s). Still healthy, but something just changed.{% endraw %}"
{% if inputs.notify_recovery %}

  # 4. All-clear. Without it the homeowner has to open the panel to find out
  #    whether the thing they fixed actually moved the score.
  - id: selora_recipe_{{ slug | replace('-', '_') }}_health_recovered
    alias: "Selora AI Health Alert: score recovered"
    description: >-
      When the Selora AI home health score climbs back above the warning
      score, send an all-clear notification.
    mode: single
    trigger:
      - platform: numeric_state
        entity_id: sensor.selora_ai_home_health
        above: {{ inputs.warn_threshold }}
    action:
      - variables:
          score: "{% raw %}{{ trigger.to_state.state }}{% endraw %}"
      - service: notify.notify
        data:
          title: "Home health recovered"
          message: "{% raw %}Home health is back up to {{ score }} out of 100.{% endraw %}"
{% endif %}

Author-maintained release notes. Each release of the recipe lists what changed.

Changelog

v1.0.0 - 2026-08-19

Initial release.

  • Watches Selora AI’s own Home Health sensor, sensor.selora_ai_home_health, and its active_signals attribute.
  • Notifies when the score stays below the warning score (default 80) for a sustained period (default 15 minutes, one reassessment cycle).
  • Notifies immediately when the score falls below the critical score (default 50), and announces it over TTS when speakers are selected.
  • Notifies on a sharp drop (default 10 points in one reassessment) even while the score is still above the warning score.
  • Sends an all-clear when the score climbs back above the warning score; can be turned off at install.
  • Guards against unknown / unavailable, so turning Health monitoring off or reloading Home Assistant does not read as a crash to 0.

Type to search across cities, counties, and installers

↑↓ navigate open
⌘K search