DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
FREEDOM251

Freedom251 › Blog › automations

How to monitor Home Assistant entities that stop updating

By Freedom251 Team · · 12 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The reliable way to detect a Home Assistant entity that has gone stale is to measure the age of its last report on a schedule, using the timestamp that matches the entity’s reporting behavior. A state-change trigger alone cannot detect silence, because no event arrives when a device stops sending data.

Home Assistant exposes three useful clocks: last_changed, last_updated, and last_reported. Choose among them deliberately, set a timeout longer than the entity’s normal reporting cadence, and combine the age check with native availability or MQTT expiry when the integration supports it.

As an Amazon Associate I earn from qualifying purchases.

What “stopped updating” means in Home Assistant

“Updating” can mean several different things. A temperature sensor might report every minute even when the temperature is unchanged. Another integration might write a new state only when the value changes. A third device may keep the same state but refresh an attribute such as battery voltage. Those cases produce different Home Assistant timestamps.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Before creating an alert, establish what the integration actually does: how often it normally reports, whether identical values are written repeatedly, whether an online/offline signal exists, and whether a restart can replay an old value. The timeout is meaningful only in relation to those facts.

#1 Best Overall
Sale
TOZO A1 Wireless Earbuds Bluetooth 5.3 Light Weight in Ear Headphones | IPX5 Waterproof,2 Mics for AI Calls,Immersive Premium Sound Bass Headset with Charging Case,32 EQ via App Black
  • [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
  • [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
  • [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
  • [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
  • [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.

The three state timestamps

Timestamp Advances when Use it when Main risk
last_changed The entity’s state value changes. A change in the state value is the signal you need, such as a contact moving from open to closed. A healthy sensor with a constant value can look stale even while it reports normally.
last_updated The state value or one of its attributes changes. Attribute activity is also evidence of freshness. An integration that writes identical state and attributes may not advance this timestamp.
last_reported The integration writes the state again, even when state and attributes are identical. The integration emits regular reports and you want to know whether Home Assistant received another report. It records Home Assistant’s receipt or state write, not an independently verified device-origin time.

Home Assistant’s state-object documentation describes last_reported as the date and time the entity last reported its state. It also notes that some integrations, including MQTT, write state only when something has changed unless force-update behavior is enabled. That difference is why a universal “older than 10 minutes” rule is unsafe.

A quiet value is not automatically a failed sensor

Suppose a refrigerator sensor reports 4 °C every 60 seconds. Its last_changed value may remain unchanged for hours, while last_reported advances every minute. Alerting on last_changed would create a false failure. Conversely, if an integration reports only on value changes, a long last_reported age may be normal and a value-change clock may be the only useful signal.

Why a state-change automation cannot detect silence

A state trigger runs because Home Assistant received an event. When a sensor stops sending, there is no new event to trigger that automation. The automation can therefore remain perfectly healthy while the entity’s displayed value becomes hours old.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a clock-based evaluation instead:

  • Run an automation periodically and compare the selected timestamp with the current time.
  • Use a time-aware template trigger that becomes true after the age crosses your threshold.
  • Prefer integration-level expiry or availability when the integration provides it, then add an age check for stale values that remain available.

The evaluation interval controls detection delay. A five-minute check can notice a failure shortly after the threshold is crossed, but it will not provide second-by-second detection. Choose an interval that fits the consequence of missing the data and the number of entities being checked.

Choose the monitoring method

Method What it detects Best fit Important limitation
Periodic timestamp check An entity whose selected timestamp is older than a chosen age. A curated group of sensors with known reporting intervals. Requires a sensible threshold for each entity or class of entity.
Template trigger The moment an age expression changes from below to above a threshold. One or a small number of entities with a stable cadence. A condition that remains true does not by itself create repeated alerts.
MQTT expire_after An MQTT sensor becoming unavailable after no message arrives for the configured period. MQTT devices that publish predictably. It must be coordinated with the device’s publishing cadence and retained-message behavior.
Availability topic or payload An explicit online or offline state supplied by the device or broker. Devices that publish reliable availability information. A device can remain marked available while its measurement value is stale.
homeassistant.update_entity A request for a fresh reading from integrations that support the action. Manual troubleshooting or an on-demand refresh. It does not change the entity’s normal update frequency and cannot make a device report.

Build a periodic stale-entity check

1. Inventory the entities you actually expect to report

Start with an explicit list rather than treating every entity in Home Assistant as a heartbeat sensor. Include entities whose freshness matters: a freezer temperature, leak detector, power meter, or presence sensor. Exclude helpers, scenes, switches that change only on command, and sensors whose update interval is intentionally irregular.

For each entity, record four facts:

  • Its normal reporting interval, measured from ordinary operation.
  • Whether equal values are written repeatedly.
  • Whether the integration supplies an availability state.
  • What should happen after Home Assistant restarts.

Inspect an entity in Developer Tools and observe its state attributes while the device is operating. Compare the three timestamps rather than assuming they move together.

2. Select a threshold that exceeds normal cadence

Set the stale threshold above the longest normal gap, not merely above the nominal interval. For an illustrative device that normally reports every 60 seconds but occasionally takes three minutes, a 10-minute threshold gives room for ordinary jitter. That is an example of a user-selected value, not a universal Home Assistant recommendation.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Sale
Smart Watch for Men Women Compatible with iPhone Samsung Android Phone 1.69 inch Full Touch Screen IP68 Waterproof Bluetooh Fitness Tracker Heart Rate/Sleep Monitor (Black)
  • 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
  • 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
  • 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
  • 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
  • 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.

Detection delay is approximately the threshold plus the time until the next periodic evaluation. A shorter threshold detects failures sooner but increases false positives during radio interference, broker restarts, or ordinary network delays. A longer threshold is quieter but leaves stale data unreported for longer.

3. Create the periodic automation

In Home Assistant, create an automation from Settings → Automations & scenes. The following pattern checks a deliberately selected list every five minutes and builds a list of entities whose last_reported age exceeds an illustrative 10-minute limit. Adapt the entity IDs, interval, and timeout to your installation.

alias: Alert when selected entities stop reporting
mode: single
trigger:
  - platform: time_pattern
    minutes: '/5'
variables:
  watched_entities:
    - sensor.kitchen_temperature
    - sensor.freezer_temperature
    - sensor.server_power
  timeout_seconds: 600
action:
  - variables:
      stale_entities: >-
        {% set now_ts = as_timestamp(now()) %}
        {% set ns = namespace(items=[]) %}
        {% for entity_id in watched_entities %}
          {% set entity = states[entity_id] %}
          {% if entity is not none and entity.last_reported is not none %}
            {% if now_ts - as_timestamp(entity.last_reported, 0) > timeout_seconds %}
              {% set ns.items = ns.items + [entity_id] %}
            {% endif %}
          {% endif %}
        {% endfor %}
        {{ ns.items }}
  - condition: template
    value_template: '{{ stale_entities | length > 0 }}'
  - service: notify.notify
    data:
      title: Home Assistant entity has stopped reporting
      message: 'Stale entities: {{ stale_entities | join('', '') }}'

The list and timeout in this example are intentionally illustrative. If the integration does not advance last_reported for repeated identical values, substitute last_updated or last_changed according to the behavior you observed. Verify the chosen property in Developer Tools → Template before relying on the automation.

4. Prevent notification floods

A periodic check can send the same alert every five minutes while a device remains offline. Use one of these policies:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Notify only when the stale list changes from empty to non-empty, then send a separate recovery message when it becomes empty again.
  • Store the previous stale list in an input helper and compare it before calling the notification service.
  • Use notification throttling or an automation mode that prevents overlapping runs.

Also include the entity ID and its measured age in the message. “Sensor failed” is less useful than “sensor.freezer_temperature last reported 17 minutes ago; threshold 10 minutes.”

5. Test with a controlled interruption

Do not wait for a real failure to validate the alert. Temporarily disconnect one device, stop its publisher, or disable its integration if that can be done safely. Confirm that:

  • The selected timestamp stops advancing.
  • The alert appears after the expected threshold plus evaluation interval.
  • A second notification is not sent on every periodic run unless that is intentional.
  • Restoring the device clears the stale condition and, if configured, sends a recovery notice.

Restore the device and verify that a fresh report—not merely a manual refresh—advances the timestamp.

Rank #3
New Bee Guitar Cable 10ft Electric Instrument Bass AMP Cord | 6.35mm Jack, Durable Design, Stage and Home Studio Use, Low Noise Shielded Electric Cord for Bass, Keyboard, Amp, Mixer
  • [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
  • [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
  • [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
  • [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
  • [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by

Use a template trigger for a single entity

A template trigger is useful when one entity has a clear cadence and you want an alert when its age crosses a boundary. The trigger below is illustrative and uses last_reported with a 10-minute threshold:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
alias: Alert when freezer temperature stops reporting
mode: single
trigger:
  - platform: template
    value_template: >-
      {{ states.sensor.freezer_temperature.last_reported is not none
         and (as_timestamp(now())
         - as_timestamp(states.sensor.freezer_temperature.last_reported, 0)) > 600 }}
action:
  - service: notify.notify
    data:
      title: Freezer sensor stale
      message: 'The freezer temperature has not reported for more than 10 minutes.'

This expression changes from false to true when the threshold is crossed. It normally does not retrigger continuously while it remains true. For several entities, a periodic automation is easier to reason about because it can evaluate a list and implement its own deduplication and recovery logic.

Use MQTT expiry and availability when they exist

MQTT sensors can express freshness at the integration level. Set expire_after to the number of seconds after which Home Assistant should mark the sensor unavailable if no message arrives. Choose a value longer than the device’s expected publishing interval and account for normal network delay.

mqtt:
  sensor:
    - name: Kitchen temperature
      state_topic: 'house/kitchen/temperature'
      availability_topic: 'house/kitchen/status'
      payload_available: 'online'
      payload_not_available: 'offline'
      expire_after: 600

The exact topic names and payloads must match the device. An availability topic is valuable when the device explicitly publishes online and offline states. Expiry is valuable when the data topic itself is the only heartbeat.

Do not treat unavailable as the only stale signal. A device may keep an entity available while the last measurement remains old, especially when availability is published separately. Pair availability with a periodic age check when stale values would be dangerous.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Restart, retained messages, and startup handling

Restarts change how you should interpret timestamps. On startup, an entity may have no current report yet, or an integration may restore its previous state. A startup automation that immediately evaluates every entity can therefore alert before integrations have had time to connect.

Use a startup grace period appropriate to your system, then evaluate. During that grace period, distinguish “no report since this boot” from “the device was already stale before the restart.” If you need that distinction, record the Home Assistant start time and include it in the condition rather than assuming every restored state is fresh.

Rank #4
BSIMB 15.6" Digital Family Calendar & Chore Chart, No Subscription Fees
  • Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
  • Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
  • All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
  • Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
  • Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.

MQTT retained messages require special care. A retained payload can be replayed when Home Assistant reconnects or reloads the MQTT entity. That creates a newly received Home Assistant state even though the device may not have produced new data. A retained value is not proof of a fresh measurement. Prefer a device-generated timestamp, sequence number, or separate heartbeat when the device exposes one; otherwise keep a conservative timeout and test restart behavior explicitly.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Understand what manual updates can and cannot do

The homeassistant.update_entity action asks supported integrations for a fresh reading. It is useful when troubleshooting an entity or refreshing data on demand, but Home Assistant documents that it does not change how often the entity updates on its own.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A manual update therefore cannot serve as a watchdog by itself. It may return the same cached value, the integration may not support the action, or the device may be unreachable. Keep the normal cadence and freshness check independent of any on-demand refresh.

Choose thresholds per device, not per domain

Two entities in the same domain can have completely different reporting behavior. One temperature sensor may publish every 30 seconds; another may report only when the value changes. A motion sensor may be silent while a room is empty by design. A power meter may publish continuously but pause during a broker outage.

Group entities only when they share all of these characteristics:

  • The same expected reporting interval and tolerance for delay.
  • The same timestamp semantics.
  • The same response when stale, such as notification only versus turning off an automation.
  • The same startup and retained-state behavior.

Otherwise, keep per-entity thresholds. A small YAML mapping can hold different values, while the automation loops over each entity and compares its own limit. This avoids penalizing slow sensors with an aggressive timeout and avoids waiting too long for critical fast sensors.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Monitor many entities without creating noise

A whole-system scan is tempting, but blindly checking every entity produces misleading alarms. Helpers, template entities, manually controlled switches, and event-driven sensors may not have a meaningful heartbeat. Start with a curated list and expand it only after confirming each entity’s semantics.

For a larger installation, maintain a monitoring registry outside the automation’s logic: entity ID, timestamp to use, timeout in seconds, and a human-readable label. The evaluator can then produce one report containing all stale entries, sorted by age. Keep the report readable and include the last known state so an operator can distinguish an old but safe value from a dangerous one.

Do not use a stale alert as a substitute for data validation. A sensor can report frequently while measuring the wrong thing, publishing an impossible value, or repeating a frozen value generated by a malfunctioning device. Freshness monitoring answers “did a report arrive?”; range checks and plausibility checks answer different questions.

Troubleshooting common failure cases

The alert fires even though the sensor is healthy

  • You are checking last_changed on a sensor whose value normally remains constant. Use last_reported if repeated reports are written, or last_updated if attributes change.
  • The timeout is shorter than the real reporting interval or normal network jitter. Increase it beyond the longest ordinary gap.
  • The entity reports only on change, so silence is expected. Monitor an integration heartbeat or availability signal instead.

The alert never fires

  • The automation is triggered only by state changes. Add a time pattern or a time-aware template trigger.
  • The selected timestamp is still advancing because another attribute is changing. Decide whether that attribute represents meaningful freshness.
  • The template is reading the wrong entity ID or timestamp property. Test the expression in Developer Tools → Template.
  • The notification action is failing even though the stale list is correct. Run the action manually and inspect automation traces.

The entity says unavailable but the age check does not list it

Some templates skip entities whose state object or timestamp is missing. Treat explicit unavailable as a separate alert path, or include it in the stale list with a clear reason. Do not convert missing timestamps into a current time; that would hide the failure.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The sensor appears fresh after a restart, but the device was offline

Check for restored state and retained MQTT payloads. A replayed value can update Home Assistant without representing a new device measurement. Add startup grace handling and, where possible, use a device-origin timestamp or heartbeat.

Manual refresh makes the alert disappear briefly

The integration may have returned a cached reading or performed one successful poll without restoring its normal reporting path. Confirm that subsequent reports continue at the expected cadence. The update action is a diagnostic request, not a change to the device’s schedule.

A practical operating checklist

  1. List only entities whose freshness matters.
  2. Observe their normal cadence and whether identical values are written.
  3. Select last_changed, last_updated, or last_reported based on that behavior.
  4. Set an illustrative threshold above the longest normal gap and document why it was chosen.
  5. Evaluate age periodically or with a time-aware template; never rely solely on a state-change trigger for silence.
  6. Use MQTT expire_after and availability topics where appropriate.
  7. Plan startup grace periods and test retained-message behavior.
  8. Deduplicate alerts and send a recovery notification when reporting resumes.
  9. Test by deliberately interrupting one publisher, then verify both failure and recovery paths.

The result is a monitor that distinguishes a stable, healthy value from a value that has genuinely stopped receiving reports, while preserving the integration-specific behavior that makes a single universal timeout unreliable.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

automationsHome AssistantHome AutomationMQTTsensor monitoring

Leave a Reply

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

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.