[APP][Pro] Device Watchdog - Battery, connectivity & staleness monitoring for all your devices

Hi all,
Device Watchdog keeps an eye on all your Homey devices, so you don’t have to.

:link: Install Test version

:magnifying_glass_tilted_left: What is this app?

It monitors every device on your Homey for three kinds of problems:

  • Low battery (percentage or battery alarm)
  • Not reporting - hasn’t sent any new data within a configurable time window
  • Unavailable - Homey itself lost the connection, tracked in realtime

Built for devices that actually *report something back* - battery %, a sensor value, on/off state, and so on. Pure action/trigger devices (e.g. a virtual “send WhatsApp message” device, a scene-trigger button) have nothing to report in the first place, so they’re automatically excluded from the “not reporting” check rather than getting flagged forever.

Every device is monitored by default - no manual setup required. You can exclude a single device, a whole zone, or every device from one app or of one type - the bulk options preview exactly what they’ll affect first.

:gear: What can it do?

  • Per-device overrides for battery threshold and reporting window (hours or days) - with a one-click option to apply the same settings to every other device of the same type (e.g. all your Aqara motion sensors) , with the option to exclude specific ones, instead of repeating it per device
  • Optional setting to also count Homey’s own “last seen” as a sign of life for “not reporting” - useful for devices (like Zigbee routers) that rarely send a new value but are still clearly connected
  • Configurable grace period before “unavailable” or “low battery” counts as a real problem (seconds or minutes, global or per device) - avoids false alarms from brief disconnects or a transient battery reading
  • Manual “Test” button (plus a matching Flow action and success/fail triggers) to re-check whether a controllable device - on/off, dimmer, shutter, thermostat, speaker - is actually reachable right now
  • Optional “Auto-test before flagging” per device - nudges a testable device with a live reachability check right before it would be marked “not reporting”, instead of alarming immediately
  • When a device is flagged, its Details panel shows a short recommendation for that specific situation — e.g. “this sensor is just quiet, raise the threshold”, “the battery reading is months old, check the device directly”, or “if it’s only used for Flows, stop monitoring it”.
  • Built-in history log of every detected problem and test result
  • Optional Homey Timeline entries when a device newly becomes a problem (no repeat spam)
  • A virtual “Watchdog status” device exposing device counts as capabilities, so they show up in Homey Insights and on your dashboard
  • :bar_chart: A dashboard widget showing those same counts at a glance, plus - unlike a plain capability tile - exactly which devices are currently affected, since when, and a relevant detail (battery %, last update, last seen), with a manual “Scan now” button right in the widget
  • A “reset to factory settings” button if you ever want a clean slate
  • Shows the battery type (AA, CR2032, etc.) next to low-battery devices in the widget and device details, where the device’s app declares it — plus a manual override field for devices where it doesn’t
  • Pause monitoring for a device until a chosen date - built for seasonal devices (e.g. irrigation controllers powered off for winter); resumes automatically once the date passes, no need to remember. Also available as Flow cards (pause/resume/check-if-paused), including a variant that accepts a dynamic date via token or variable, plus an optional “rescan immediately” checkbox so a device’s counts/alarm catch up right away instead of waiting for the next scan.

:wrench: Flow Cards

When:

  • A specific device’s battery gets low / stops reporting / becomes unavailable (device picker)
  • Devices with low battery / not reporting / unavailable are newly found (summary, fires once with a count + device list)
  • A device test succeeds / A device test fails

And:

  • A specific device is unavailable / isn’t reporting / has low battery
  • Any device is unavailable / not reporting / has low battery — no device picker, checks your whole setup at once
  • Device is/isn’t paused
  • Any/no device has low battery, is not reporting, is unavailable

Then:

  • Run a device scan now
  • Pause device until date (+ a variable/token version)
  • Resume device (clear pause)
  • Test device reachability

:clipboard: Setup

  • Requires the homey:manager:api permission (to read device status and, for the Test button, briefly re-set a device’s own current value)
  • All processing happens locally, on your Homey - no data leaves it

:link: About this app

This app started life as a personal Homey Script I’d written and used for a while (“Device Monitor & Battery Checker”). With Claude’s help, I turned that script into a full Homey app, with a proper settings UI, Flow cards, and Insights integration.


:hot_beverage: Support the Development

Developing, testing, and maintaining it takes a lot of time and effort. If the app helps you keep your smart home running smoothly and you’d like to support my work, buying me a coffee (or a beer :beer_mug:) is always appreciated!

:coffee: Buy me a coffee via PayPal

:open_book: Device Watchdog - Settings Guide

This is a rundown of every setting, what it does, and where the underlying value actually comes from.

:stopwatch: Automatic scan

  • Automatic interval active - turns background scanning on/off. Off = no periodic scan, but “Run device scan now” (Settings button or Flow action) still always works.
  • Scan interval (minutes) - how often the automatic scan runs.
  • Wait after app start (minutes) - delays only the very first automatic scan after a restart (default 2 min, 0 = immediately). Avoids a burst of false “not reporting” flags while the device cache is still settling right after Homey/the app restarts.

:level_slider: Default thresholds

(apply to every device unless overridden per-device under “Details”)

  • Hours without update until “offline” - a device is flagged “not reporting” once this many hours pass without a capability value changing. Source: the newest lastUpdated timestamp across all of a device’s capabilities, as reported by Homey.
    → Devices whose only capability is a momentary button/trigger, , a write-only capability, or only a button plus a battery reading (e.g. a Hue Tap Dial) are skipped here entirely — there’s no timestamp to check — and say so in their Details.
  • Count Homey’s “last seen” toward “not reporting” (off by default) - when enabled, Homey’s own connectivity confirmation also counts as a sign of life, not just capability changes. Useful for devices (Zigbee routers, pure event sensors) that rarely change a value but are still clearly connected. Source: lastSeenAt, Homey’s own last-communication timestamp for the device - independent of any specific capability.
  • Battery warning at (%) - flags a device once its battery percentage drops to/below this. Source: measure_battery capability value, or alarm_battery (any true value always flags, regardless of %)
  • Delay before “unavailable” counts - grace period before a device going unreachable is treated as a confirmed problem (default 0 = instant). Useful for brief disconnects, e.g. another app updating, or Homey itself restarting. Source: available flag from Homey, tracked in realtime; the delay only affects when it’s confirmed, not the underlying signal.
  • Delay before low battery counts - grace period before a device at/below the battery threshold is treated as a confirmed problem (default 0 = instant). Useful for a device that briefly reports a low reading (e.g. 1%) before recovering - a scan landing on that one transient sample won’t fire anything until it’s stayed low for the configured delay. Source: measure_battery, sampled once per scan; the delay only affects when it’s confirmed, not the raw %/status shown in the Settings UI, widget, or condition cards.

:bell: Notifications

  • Timeline entry on new problems - writes a Homey Timeline entry the moment a device newly becomes a problem. Once per state change, no repeat spam while it persists.

:dog: Virtual device alarm

  • Three toggles controlling which categories (unavailable / not reporting / low battery) trip the virtual Watchdog device’s alarm_generic capability. The three count capabilities always show the real numbers regardless - this only filters the combined alarm.

:artist_palette: Display

  • Increase text contrast (dark mode) - lightens muted/secondary text (hints, timestamps) further for bright ambient light.
  • Color scheme (Auto/Light/Dark) - “Auto” follows your system/browser setting (the original default behavior); “Light”/“Dark” force that scheme in the Settings UI regardless of your system.

:broom: Reset

  • Reset to factory settings - button at the bottom of Settings that resets all default thresholds and every per-device rule back to defaults in one go. History log and last scan are left untouched (there’s a separate “Clear log” for that).

:flying_saucer: Stale rules

  • Clean up stale rules - removes per-device rules that point at a device no longer in Homey (e.g. after removing a device). Shows a preview list of exactly which devices are currently affected before you click it; the button is grayed out when there’s nothing to clean up.

:mobile_phone: Per-device overrides

(via “Details” on any device) — the panel is grouped into sections:

Not reporting

  • Hours until “offline” - per-device override of the global threshold.
  • Count “last seen” toward “not reporting” - per-device override of the global setting (Default / Yes / No). Lets you enable it for specific chronically-quiet devices without loosening detection everywhere.
  • Auto-test before flagging - for those testable devices, runs that check automatically right before a “not reporting” flag; a nested sub-option still fires the Flow trigger even when the test saves it.

Not reachable

  • Ignore unavailable - excludes this device from the summary trigger, timeline, and log for the unavailable category specifically. Its own per-device Flow trigger still fires. Good for a flaky device you don’t want spamming the aggregate notifications.
  • Delay before “unavailable” counts - per-device override of the global grace period.

Battery

  • Battery threshold % - per-device override.
  • Delay before “low battery” counts - per-device override of the global grace period.
  • Only check battery - skips the “not reporting” check entirely for this device (battery-only monitoring).
  • Ignore battery - excludes this device from battery checks entirely.

Pause

  • Paused until - skips the device entirely (like the monitoring toggle) until this date, then resumes automatically on the next scan. Turning the monitoring toggle back on early also clears the pause.

Apply to multiple devices

  • Apply to same-type devices - once a device has any override set, a button appears to copy those settings onto every other device of the same type (same app + same Homey driver, e.g. all your Aqara motion sensors) in one go - shows a preview of exactly which devices before you confirm.
  • Stop monitoring all devices from this app / of this class — two bulk buttons in Details, shown when at least one other device shares this one’s owning app or Homey device class. Each shows a preview checklist of exactly which devices it will affect before you confirm. Ignore-only — re-enable per-device or with “Monitor zone”.

Per-device settings

  • Reset - clears all overrides for this device back to defaults.

On the device row itself (not in Details):

  • Monitoring toggle (switch next to the device) - removes the device from monitoring entirely. Good for virtual devices, mains-powered devices, or anything you just don’t want watched.
  • Test button (shown for devices with onoff, dim, shutter position, thermostat setpoint, or speaker volume) - re-sends the device’s current value to itself, a non-intrusive way to check it’s actually reachable right now. Also available as a Flow action (“Test device reachability”), with matching “A device test succeeds”/“A device test fails” triggers to branch on the result.

:magnifying_glass_tilted_right: Devices tab

  • Search - filters by device name or zone name.
  • Sort - “Status first” (problems on top), “Name (A-Z)”, or “Zone + Name (A-Z)” (groups alphabetically by zone instead of Homey’s own zone order).
  • Stat tiles (Total / Not reporting / Not reachable / Low battery / Not monitored / Paused / Custom rules)
  • Zone group bulk buttons - “Ignore zone” / “Monitor zone” toggles every device in that zone at once.

What the three statuses actually mean

  • :green_circle: ok - reporting recently, battery fine.
  • :orange_circle: not reporting - Homey still shows it connected, but no new data recently (see the setting above for what counts as “new data”).
  • :red_circle: unavailable - Homey itself has lost the connection (available: false), tracked in realtime.

The recommendation line

When a device is flagged, its Details panel shows a one-line hint about what’s likely going on and what to try — raise the threshold, check the battery, test the device, stop monitoring a Flow-only helper, and so on. It’s based on what the device actually looks like (its capabilities, when it was last seen, how old its battery reading is), and only shows while the device is flagged. If nothing specific fits, you get a sensible generic hint.

:red_question_mark: Device Watchdog - FAQ

Q: Why is a device marked “not reporting“ even though it seems fine?

A: “Not reporting” tracks the time since a capability last changed value - not whether Homey can still reach the device (that’s “unavailable”). Event-driven devices (contact sensors, some Zigbee routers) only send data when something actually changes, so long gaps are normal for them. If you don’t want it flagged, the most reliable fix is raising its threshold above its normal reporting gap (globally or just for that device).

There’s also a “Count Homey’s ‘last seen’ toward ‘not reporting’” setting that can help in some cases - but heads up: for most devices, “last seen” turns out to move in lockstep with the last actual value change anyway (confirmed by checking real devices), so it often doesn’t change anything. It only helps the minority of devices whose “last seen” is genuinely updated independently of their reported data. Worth trying, but don’t rely on it as the fix - raising the threshold is the dependable option.

Q: What's the difference between “not reporting“ and “unavailable“?

A: “Unavailable” = Homey’s own connection to the device is down right now. “Not reporting” = Homey still shows it connected, but its data has gone stale. A device can be one, both, or neither.

Q: A device flickered to “unavailable“ for a few seconds and I got a notification - can I avoid that?

A: Yes - set “Delay before ‘unavailable’ counts” (global or per device) to a few seconds/minutes. Only a device still down after that grace period gets flagged/notified. Recovery is always instant, never delayed.

Q: Can I exclude a device entirely?

A: Yes, flip the toggle switch next to it in the Devices tab. Useful for virtual devices, mains-powered devices, or anything you just don’t need watched.

Q: Why does a device stay in the filtered list (with a “staying visible“ badge) after I've fixed it and it's OK again?

A: Once you open a device’s details to adjust it, Device Watchdog keeps that row visible until you close the panel or pick a different filter - even if your change clears the issue immediately (e.g. raising its “not reporting” threshold fixes it right away). Otherwise the device would vanish mid-edit, taking the open panel with it, right when you’re checking whether the fix worked. The “staying visible” badge just marks that it no longer matches the active filter on its own; switching filters (or reloading) drops it from the list as normal.

Q: I have a flaky device that keeps going unavailable - can I stop it from spamming me without ignoring it completely?

A: Use “Ignore unavailable” under its Details. It stays out of the summary trigger, timeline, and log, but its own per-device Flow trigger still works if you’ve built something around it specifically.

Q: Does the app replace Homey's own presence/connectivity detection?

A: No, it reads Homey’s own device status (available, capability data) and turns it into thresholds, Flow cards, a history log, Timeline entries, and a virtual device for Insights - it doesn’t replace or duplicate any core Homey functionality.

Q: Where does “last seen“ actually come from - can I see it in Homey itself?

A: It’s Homey’s own internal lastSeenAt field via the API, not something shown as a labeled field anywhere in Homey’s standard UI as far as I know.

Q: Does this app send any data outside my Homey?

A: No, everything runs locally on the Homey itself.

Q: I updated another app and a bunch of devices flagged unavailable - is that expected?

A: Yes, that can briefly happen while a driver restarts. Configuring a delay (see above) is the way to absorb that without a false alert.

Q: After a Homey reboot, “Wait after app start“ didn't stop the early unavailable/reachable notifications I was getting - why not?

A: “Wait after app start” only delays the automatic scan - which is what “not reporting” detection relies on - so it does stop false not-reporting bursts. It doesn’t touch Homey’s realtime unavailable/available events though, which fire immediately and independently of any scan. For devices that take a bit to reconnect after a restart, use “Delay before ‘unavailable’ counts” instead (global or per-device) - that one actually gates the realtime detection, and it applies to any brief disconnect, not just app restarts.

Q: Can I get a Flow trigger for a specific device, not just the aggregate?

A: Yes - each category (battery low / not reporting / unavailable) has both a per-device trigger (with a device picker) and a summary trigger that fires once for a whole batch with a count + name list.

Q: I have several identical devices (e.g. 10 of the same motion sensor) - do I have to configure each one individually?

A: No - configure one of them under “Details”, then use the “Apply to same-type devices” button that appears. It only matches devices from the same app AND the same Homey driver (so it won’t lump, say, all your Shelly products together if they’re actually different models), and shows you exactly which devices will be affected before you confirm.

Q: I want to undo all my configuration and start over - is there a quick way?

A: Yes - “Reset to factory settings” at the bottom of the Settings tab resets every threshold and per-device rule back to default in one click (with a confirmation first). Your history log and last scan results are left alone.

Q: Can I see what type of battery a device uses?

A: Yes, if the device’s app has declared it (not all apps do - it’s optional metadata, not something Homey computes). Shown next to low-battery devices in both the dashboard widget and a device’s Details panel.

Q: Can detection of “not reporting“ be made more accurate, e.g. using a real per-packet “last seen“ instead of capability changes?

A: I looked into this - short answer, not currently, at least not reliably. Homey’s Zigbee coordinator does track a precise internal “last seen” per device (every received radio frame, not just capability updates), but it’s not exposed through the standard app SDK that this app (and any other local Homey app) has to work with - only through elevated, manager-level access that a monitoring app shouldn’t really be requesting. There’s an open Homey community idea asking Athom to expose this (link), with no official response yet. If that ever ships, I’ll revisit “not reporting” detection to take advantage of it. Until then, lastUpdated (capability changes) and lastSeenAt (which, as covered above, often doesn’t add much beyond that) are what’s available.

Q: Why doesn't the default zone sorting match my manual zone order from the Homey app?

A: The default sort tries to follow Homey’s own zone order field, but in practice this is often not set at all - many zones never get an explicit order value from Homey, regardless of how you’ve arranged them in the app. When that happens, this app falls back to sorting alphabetically within each zone level, which won’t match your manual arrangement. This isn’t something fixable from the app’s side - it depends on what Homey itself exposes.

Workaround: switch to the “Zone + Name (A-Z)” sort option, and prefix your zone names with your own manual order (e.g. “1 - Ground floor”, “2 - Upper floor”, “3 - Basement”). Since that mode sorts purely alphabetically by name, your number prefixes become a reliable, permanent sort order that doesn’t depend on Homey’s order field at all.

Q: I have a device that's only used part of the year (e.g. an irrigation controller) - how do I stop it alarming while it's dormant?

A: Use “Paused until” under its Details, and pick a date it should resume. It’s skipped entirely until then - no false battery/not-reporting/unavailable alarms - and comes back on its own once the date passes, no need to remember to turn it back on. If you have several identical devices, “Apply to same-type devices” can optionally include the pause date too (there’s a checkbox for it).There are also matching Flow cards if you’d rather automate it: “Pause device until date” / “Pause device until date (variable)” (Then), “Resume device” (Then), and “Device is paused” (And).

Q: I paused a device via a Flow, but it's still showing up in the counts / tripped the virtual device's alarm - why?

A: Pausing via a Flow action only saves the pause - unlike pausing by hand in the Settings UI (which always forces an immediate re-check), it doesn’t automatically re-evaluate anything. So if the device currently has an active problem, it stays reflected in the counts and the virtual device’s alarm until the next scheduled/manual scan catches up. Since v1.9.23, both “Pause device until date” Flow actions have a “Rescan immediately” checkbox for exactly this - turn it on and the pause takes full effect right away, same as pausing manually. Off by default to avoid an extra scan on every single pause.

Q: I want a flow condition that checks “is anything wrong“ without picking a specific device — is that possible?

A: Yes — since v1.9.5 there are three extra condition cards (“Any device is unavailable / not reporting / has low battery”) that check your whole setup at once, no device selection required. Handy in flows triggered by the summary triggers, where the specific device isn’t known upfront.

Q: After restarting Homey, I briefly get a bunch of false “not reporting“ alerts that clear up a few minutes later - can that be avoided?

A: Yes - “Wait after app start (minutes)” under Automatic scan (default 2 min) delays just the first automatic scan after a restart, so it doesn’t run against a still-settling device cache. Doesn’t affect manual scans or any scan after the first.

Q: Does the log only show problems, or also when a device recovers?

A: Since v1.9.9 it shows both — “device available again”, “device reporting again”, and “battery no longer low” get their own green-icon entries, right alongside the problem entries. Note the log tab only refreshes when you open/re-open it, not live while the page is open (fixed to at least refresh on every visit as of v1.9.10).

My device never reports on its own (e.g. some sirens) - won't it always get flagged as “not reporting“?

A: Turn on “Auto-test before flagging” for that device (under Details, shown only for devices with a testable capability - the same ones the manual “Test” button works on). Right before such a device would be flagged, the app sends it a live reachability check first; if it responds, that counts as a sign of life and nothing gets flagged. It’s always recorded in the log either way, so you can still see how often a device needed the nudge, and there’s an option to still fire the Flow trigger even when the test saves it, if you’d rather know regardless.

Q: A device reported a low battery reading for a few seconds and I got a false alert - can I avoid that?

A: Yes - since v1.9.22, set “Delay before low battery counts” (global or per device) to a few minutes. Only a device that’s stayed at/below the threshold continuously for that long gets flagged/notified - a one-off dip (some devices briefly report 1% before settling back to normal) that recovers before the delay elapses never fires anything. Recovery is always instant, never delayed. The raw battery %/status in the Settings UI, widget, and condition cards stays live either way - only the alerting side (Flow trigger, timeline, log, virtual device counter) waits for the delay.

Q: The Test button (or Auto-test) triggers a real action on some devices - e.g. a SwitchBot Bot presses its button. Is that a bug here?

A: No - that’s specific to devices whose “onoff” capability isn’t a persisted state but a one-shot command. SwitchBot Bot is the one reported so far: it physically presses its button on any write to onoff, even resending the exact same value. The Test feature works by resending a device’s current value on a capability that’s normally safe to re-set (onoff, dim, shutter position, thermostat setpoint, volume) - true for the vast majority of devices (lights, plugs, dimmers), just not for a “momentary action” device like this one. If you hit this, just avoid the manual Test button - and don’t enable “Auto-test before flagging” - for that specific device. There’s no capability metadata this app can check to filter these out automatically.

My virtual switches/buttons (e.g. from Virtual Devices), or a button/battery remote (e.g. Hue Tap Dial), always show “not reporting“ — why?

A: A virtual “button”/scene-trigger device only has a momentary button capability, and Homey never records a “last updated” timestamp for that — pressing it just fires a Flow. There’s genuinely no freshness signal to check. As of v1.9.25 these are no longer flagged “not reporting”; their Details panel shows a short note explaining it instead. (This only applies to devices with no real state. A virtual switch that has an on/off value is still checked normally — it just has to actually change at least once within the threshold window. Toggling it counts; re-sending it the value it already holds doesn’t.)
As of v1.9.27 this also covers real button/remote devices whose only other capability is measure_battery/alarm_battery (e.g. a Hue Tap Dial) — they only wake up and report anything, including battery level, on a press, so a months-old reading doesn’t mean it went offline. Low battery itself is still checked separately, as before.

Nice initiative!

It seems to function well.
Two observations:

The timeline messages are still in German, Homey is set to English.

One device reports every minute (global scan interval is set to 59 min). Once a day is more than enough for me :blush:
This concerns a local Tuya device, which is polled or disconnects every 30s continuously

Whoops, I should report @ Github

Thanks a lot for testing and for the detailed feedback! :folded_hands:

1. Good catch - the Timeline notifications (and a couple of internal error messages) were hardcoded in German regardless of Homey’s language setting. Fixed, see 1.2.1

2. That’s actually a scenario I hadn’t fully accounted for - a device that flaps/reconnects constantly (like your Tuya device) would spam the summary notification and Timeline every time it happens. I’ve added a new per-device setting, “Ignore unavailable”, that excludes a specific device from the summary trigger, Timeline, and history log - while its own dedicated Flow trigger card still works if you want to build something around it directly. That’ll already there.

No worries about posting here instead of GitHub - either works for me, happy to take feedback wherever it’s easiest for you. Thanks again!

Thanks for this app!

How does the battery monitoring function relate to Homey’s own battery monitoring?

Homey notifies me on the timeline in case a device’s battery is low (I believe it uses a 20% threshold) and when the battery level is restored again. I don’t think I can switch off Homey’s mechanism.

I assume your app’s monitoring and notifications are separate from the default ones from Homey?

Thanks for the question, good one to clarify!

Yes, Device Watchdog’s battery monitoring is completely separate from Homey’s own built-in low-battery notifications - two independent systems running in parallel. Homey’s own mechanism lets you exclude a device from its battery monitoring in the device’s own settings (though I’m honestly not sure whether that also silences the Timeline notification specifically, or just the monitoring itself) - either way, it doesn’t let you set your own custom threshold.

The main things Device Watchdog adds on top:

  • Configurable threshold - both a global default (30% by default, you can change the global %) and, if you want, a different threshold per individual device
  • Flow cards (trigger + condition) so you can build automations around low battery, not just get a Timeline notification
  • A history log of when each device was flagged
  • A virtual device exposing the count of low-battery devices as a capability, so it shows up in Homey Insights/dashboards over time

Since the two systems are independent, you may see both notifications for the same device if it crosses both thresholds - if that’s not useful for a specific device, you can set “Ignore battery” for just that device in Device Watchdog’s per-device settings, and it’ll only be handled by Homey’s own mechanism from then on.

Edit:

you can disable the timeline information regarding battery (homey’s internal function) in the app → settings → timeline → energy => disable timeline

also in the app:

-> devices → battery (the tile above) → settings (top right corner) → enable/disable devices

This app is completly separate, but much more customizable :slight_smile: i have almost 300 devices and many virtual ones. i also needed quick reactions (e.g. the solar device is offline) to react. that’s why i had a script first - and an app now :slight_smile:

Thanks for clarifying! And I see that your app is much more versatile in that regard indeed :grinning_face:.

All out of desperation (or too many devices) :grin:

Joke aside, I have many battery devices and some didn’t send an empty battery.. (e.g. Thermostat) that’s why I needed something better

Haha yes I understand :sweat_smile:.

Another question: the ‘general alarm’ in the Device Watchdog-device is that trigged by any of the three displayed capabilities or by a specific one:

In my setup I have several battery-powered devices that the app labels as ‘not reporting’, like Zigbee remote buttons/scene switches. Since they will likely remain in that state, would the general alarm be always on?

it’s triggered by either one of them. in my setup i disabled the watchdog for those devices (or just check the setting “only battery”). so they are not calculated in the VD and not for the alarm. let me know if you want a seperate checkbox e.g. ignore for VD :slight_smile:

Edit

Ore a setting / dropdown which capability to alert

new settings (with toggle) for the generic alarm → v1.3.0

Thanks for adding those toggles, that was quick :grinning_face:!

Device Watchdog v1.4.0 is out! (still Testversion)

This update adds a grace period for “unavailable” detection, aimed at cutting down false alarms from brief disconnects.

What’s new:

A device going unavailable no longer counts immediately — you can now set a delay (in seconds or minutes) before it’s treated as a confirmed problem. This is configurable globally in Settings, and can be overridden per device just like the other thresholds.

Why this matters: if another app updates and briefly drops its devices, or Homey itself restarts, devices can flicker to “unavailable” for a few seconds before reconnecting on their own. Previously this could trigger a false Flow trigger, timeline notice, or log entry for something that resolved itself moments later. With a delay configured, only devices that are still unavailable once the grace period has passed get flagged.

This delay applies consistently across the app: the per-device Flow trigger, the summary trigger, timeline notifications, the history log, and the virtual Watchdog device’s counter/alarm all respect it. The only things that stay instant are the live status shown in the Settings UI and the condition cards, plus recovery — a device coming back online is always reported immediately, no delay there.

It also applies across app/Homey restarts: if a device is already unavailable when Device Watchdog starts up, it now goes through the same grace period instead of being counted right away — so a restart with devices still reconnecting won’t cause a spurious alarm.

Default is 0 (instant), so nothing changes unless you configure a delay yourself.

As always, feedback and bug reports welcome here!

going to apply for a testversion eod

Great improvements again, Rick!

Sorting

Can you elaborate on how the zones are sorted?
It kind of follows my manually sorted zones, but not consistently.
It looks like the subzones ended up on the end of the listing.
Maybe it’s the easiest, if it’s possible, to add a “Sort by zone and name (A-Z)” to the dropdown?

Readability

The (tiny) gray on black text is unreadable outdoors > For an older guy like me that is (App is always in dark mode)
Is it possible to change gray to lightblue or something like that?

Great tool! It’s another “why does Homey not provide for such a monitoring tool”!

Hi Peter,

Thanks for the detailed report, both are fixed in the new update.

Sorting - Zone grouping was always following Homey’s own zone tree order, which turned out to not always be reliable (depends on whether Homey’s order field is actually set for a zone). Added your suggested “Sort by zone and name” as a third option in the sort dropdown - it groups zones alphabetically instead, with devices sorted A-Z within each zone. Should give you a predictable, consistent order regardless of what Homey’s zone tree reports.

Readability - You were right, the muted/gray text color was never adjusted for dark mode, so it stayed the same shade meant for a white background. Bumped it up for dark mode by default. Also added an optional “Increase text contrast” toggle in Settings if you want it even brighter - good for bright outdoor light.

Works like a charm. Much appreciated! Thank you.

I have some questions.
Why are all my aqara router marked as not responding?
Why are some of my aqara enddevices marked as not responding though all of them have a last seen timestamp not older than 60 something (~7) minutes?
The so far only exeption is a Nous PIR that only says hello every ~3 hours.


Oh, is there a chance to ignore virtual device by excluding the app? Am refering to the „Advanced virtual devices“ app and others.

I add the info about the nous pir too:

Here info about „Wall Plug 4“. By the way perfectly okay.


Oh, have an idea. Homey uses UTC. The app seems to think it uses local time. Just send a test command to plug 4 at 11:05 and the app displays 10:05 as timestamp.

Quick follow-up on this - v1.6.0 is out and addresses both points:

New optional setting: “Count Homey’s ‘last seen’ toward ‘not reporting’” (Settings → default thresholds, off by default). When enabled, a device is no longer flagged just because a capability value hasn’t changed - if Homey’s own last-seen/keep-alive is more recent than the threshold, that counts as a sign of life too. This should fix the false positives you saw on your Aqara routers and end devices, since those are confirmed connected far more often than they send new data. It’s opt-in rather than the new default, since it does make the check less sensitive to a device that’s connected but whose sensor data is genuinely stuck - if that’s not a concern for your setup, go ahead and enable it.

The virtual “Watchdog status” device no longer monitors itself - fixed as well, it’s now excluded everywhere (device list, scans, counts, Flow card device pickers).

For other virtual devices (or any mains-powered device where staleness/battery just isn’t relevant, e.g. from Advanced Virtual Device) - you don’t need a bulk option for that: just flip the toggle switch next to the device in the “Geräte” tab. That removes it from monitoring entirely, individually, right now.

Let me know if the last-seen setting clears things up for your setup!

EDIT:

This setting is now also available per individual device settings (v1.6.1)

New: detailed informations & FAQ: [APP][Pro] Device Watchdog - Battery, connectivity & staleness monitoring for all your devices - #2 by Rick_D