Skip to content

Releases: nenadjokic/Cardio4HA

v1.1.5

Choose a tag to compare

@nenadjokic nenadjokic released this 04 Mar 15:43

Changes

  • Remove notification system — deleted NotificationEngine, rate limiting, daily digest, all notification config/constants, WS command, and panel UI
  • Fix panel disappearing on settings save — sidebar panel no longer removed during options reload (added _reloading guard flag)
  • Simplify config flow — single-step options (thresholds & exclusions only, no notifications step)

Dashboard (sidebar panel) remains fully functional.

v1.1.4

Choose a tag to compare

@nenadjokic nenadjokic released this 01 Mar 19:35

Bug Fixes

Panel crash on settings save

  • Fixed CustomElementRegistry error when integration reloads after saving settings
  • Panel now automatically reconnects WebSocket after settings save (retries up to 15 seconds)
  • No more blank panel - shows "Settings applied!" toast when reconnected

v1.1.3

Choose a tag to compare

@nenadjokic nenadjokic released this 01 Mar 19:05

What's New

Clickable Critical Issues Banner

  • The "X critical issues require attention" banner is now clickable - click to expand and see all critical devices
  • Each device shows:
    • Name of the device
    • Issue type badge (Unavailable, Low Battery, Weak Signal)
    • Detail (duration, battery %, LQI/RSSI value)
    • Area where the device is located
  • Click any device in the list to open its Home Assistant more-info dialog
  • Click the banner again to collapse the list

v1.1.2

Choose a tag to compare

@nenadjokic nenadjokic released this 01 Mar 18:57

What's New

GitHub Update Check

  • Automatic check for new releases every 24 hours via GitHub API
  • Gold update banner on Overview tab when a newer version is available
  • Update indicator icon in the panel header

Settings Tab

  • New Settings tab (6th tab) in the sidebar panel
  • Edit all thresholds directly from the panel: battery, signal, unavailable, scan interval
  • Save button applies changes and auto-reloads the integration
  • Reset to Defaults button restores all factory settings

Internal Improvements

  • Single source of truth for version via CURRENT_VERSION constant
  • New WebSocket command cardio4ha/update_config for live config updates

v1.1.1

Choose a tag to compare

@nenadjokic nenadjokic released this 01 Mar 18:43

What's Changed

Virtual Device Filtering

  • Only physical devices (with MAC/Zigbee IEEE/BLE connections) are now monitored
  • Added 40+ default excluded integrations (OpenAI, template sensors, system monitor, etc.)
  • Entities from virtual/software devices are automatically filtered out

Config UI Fix

  • Added translations/en.json - the CONFIGURE button now appears in HA UI
  • You can now configure thresholds: Settings → Devices & Services → Cardio4HA → CONFIGURE

Developer

  • Added /release skill for automated patch version releases

Full Changelog: v1.1.0...v1.1.1

v1.1.0 - Per-Device Ignore, Startup Delay, Physical Devices Only

Choose a tag to compare

@nenadjokic nenadjokic released this 01 Mar 17:55

What's New

Per-Device Ignore

Permanently hide specific devices from all monitoring views with one click.

  • Ignore button on every expanded device row (Unavailable, Battery, Signal)
  • Ignored devices disappear immediately from all views and health score
  • "Ignored Devices" section in Maintenance tab with Un-ignore & Clear All
  • Persistent across HA restarts

Startup Delay (2 minutes)

Prevents false positives while HA initializes devices.

  • Animated countdown with progress bar in the panel
  • First real scan starts automatically when countdown reaches zero

Physical Devices Only

Virtual entities are now excluded by default. No more seeing conversation.openai, automations, scripts, or input helpers in your device health views.

Excluded domains: automation, script, scene, schedule, input_*, timer, counter, group, tag, zone, person, conversation, tts, stt, wake_word, calendar, todo, event, update, persistent_notification, sun, weather, updater

Only real device domains are monitored: sensor, binary_sensor, switch, light, lock, cover, climate, fan, camera, etc.

Maintenance Button Fixed

  • Works at device level (hides entire device)
  • Triggers instant refresh
  • Shows device name and area in Maintenance tab
  • Backward compatible with cached browser JS (accepts both old and new format)

Cache Busting

Panel JS URL now includes version query param — no more stale browser cache after updates.

New Services

Service Description
cardio4ha.set_ignore Permanently ignore a device
cardio4ha.clear_ignore Un-ignore a device or all

Upgrade

Automatic — no config migration needed. Clear browser cache after update for best experience.

v1.0.0 - Health Score, Smart Notifications & Apple Home UI

Choose a tag to compare

@nenadjokic nenadjokic released this 01 Mar 14:22

What's New in v1.0.0

This is a major release that transforms Cardio4HA into a premium, intelligent device health monitoring solution.

Health Score (0-100)

  • Weighted score combining unavailable devices (40%), low batteries (25%), weak signals (20%), and flaky devices (15%)
  • New sensor.cardio4ha_health_score entity for automations

Flaky Device Detection

  • Statistical analysis identifies unstable devices (frequent offline/online cycles)
  • Devices flagged with purple "Unstable" badge across all views
  • New sensor.cardio4ha_flaky_devices entity

Battery Prediction

  • Linear regression on 30-day battery readings
  • "X days left" prediction shown in battery view
  • Expandable rows show battery trend chart

30-Day Device History

  • Persistent event tracking (offline/online, battery, signal)
  • Statuspage.io-style timeline bar per device
  • Signal and battery trend mini-charts in expanded rows

Smart Notifications

  • Instant alerts: Device offline, battery critically low, mass offline (3+ devices)
  • Recovery notifications: When devices come back online
  • Daily digest: Morning summary when critical issues exist
  • 3-layer rate limiting: Global hourly limit, per-device cooldown, mass offline grouping
  • Configurable via options flow (Step 2: Notifications)

Apple Home Style Panel

  • Large animated health score ring
  • Expandable device rows with detail panels
  • 30-day uptime timeline bars
  • 5-bar signal strength indicators
  • Battery bars with prediction badges
  • Critical issues banner
  • Recent notifications feed
  • Responsive design (desktop/tablet/mobile)

Other Changes

  • Config flow upgraded to v2 with automatic migration for existing users
  • 2-step options: Thresholds & Exclusions → Notifications
  • New WebSocket commands: get_device_timeline, get_notification_history
  • New service: clear_device_history
  • Old Lovelace card removed (sidebar panel only)

Upgrade Notes

  • Existing v0.3.0 installations will auto-migrate config to v2
  • All existing stores (unavailable tracking, maintenance) preserved
  • New stores (device_history) initialize empty and populate over time
  • Battery predictions require ~5 readings to start (a few hours of operation)
  • Flaky detection needs 30 days of history for accurate results

v0.1.7 - Phase 2: Advanced Exclusions & Custom Thresholds

Choose a tag to compare

@nenadjokic nenadjokic released this 08 Feb 13:02

🎉 Phase 2: Advanced Exclusions & Custom Thresholds

This release brings powerful new configuration options and fixes dashboard issues!

✨ New Features

Advanced Exclusion System

  • Wildcard pattern exclusions: Add patterns like sensor.temp_* or *_battery to exclude matching entities
  • Integration-based exclusions: Exclude entire integrations/platforms from monitoring with multi-select UI
  • Area-based exclusions: Exclude all entities in specific areas (e.g., exclude all "Garage" devices)
  • Zigbee2MQTT Override: Special toggle to always monitor Zigbee2MQTT entities (enabled by default)
    • Even if excluded by other rules, Z2M entities will be monitored since they commonly lose signals in practice

Customizable Thresholds

  • Signal strength thresholds: Separate configuration for Zigbee linkquality and WiFi RSSI warnings
  • Unavailable duration thresholds: Configure both warning and critical thresholds for unavailable devices
  • All thresholds now accessible in the Options UI

🐛 Dashboard Fixes

  • Added dashboard-examples.md with corrected entity IDs and clickable entity links
  • All example cards now use correct entity IDs (sensor.cardio4ha_*)
  • Entities are clickable using markdown link syntax - click to open entity popup
  • Fixed warning/critical issues display in dashboard cards
  • More compact card layouts

🔧 Technical Improvements

  • Enhanced configuration UI with organized settings sections
  • Dynamic multi-select dropdowns for integrations and areas
  • Advanced wildcard matching using fnmatch
  • Smarter exclusion logic with proper evaluation order

📦 Installation

HACS (Recommended)

  1. Go to HACS → Integrations → 3-dot menu → Custom repositories
  2. Add: https://github.com/nenadjokic/Cardio4HA
  3. Category: Integration → Add
  4. Search for "Cardio4HA" and install

Manual Installation

  1. Download cardio4ha.zip from this release
  2. Extract to custom_components/cardio4ha/
  3. Restart Home Assistant

Full Changelog: v0.1.6...v0.1.7

v0.1.6 - Smart Unavailable Detection

Choose a tag to compare

@nenadjokic nenadjokic released this 08 Feb 08:42

🛠️ Critical Bug Fixes

This release fixes two major issues that were causing false positives and inaccurate device tracking.

1. 🎯 Smart Unavailable Detection

Problem: Devices were marked as unavailable if even ONE sensor was offline, leading to false alarms.

Solution: A device is now only marked as unavailable if ALL its entities are unavailable.

Example:

  • Before v0.1.6: iPad has 10 sensors → 9 unavailable, 1 available → ❌ iPad shown as UNAVAILABLE (false positive!)
  • After v0.1.6: iPad has 10 sensors → 9 unavailable, 1 available → ✅ iPad NOT unavailable (accurate!)

This dramatically improves accuracy and prevents false alarms for devices that are actually functioning.

2. 🚫 Self-Sensor Filtering

Problem: Cardio4HA's own sensors were being tracked, causing nonsensical entries like "Cardio4HA - 9.0%" in low battery devices.

Solution: The integration now automatically excludes its own sensors from all tracking categories (unavailable, battery, signal).


What Changed?

Fixed:

  • Device unavailable detection now requires ALL entities to be unavailable (not just one)
  • Cardio4HA's own sensors are excluded from tracking
  • Eliminated false positive unavailable device alerts
  • Removed circular self-tracking references

Technical Details:

  • Implemented two-pass entity counting algorithm
  • Added device_entity_counts structure to track total vs unavailable entities per device
  • Added platform-based filtering to exclude integration's own sensors
  • Standalone entities (without device_id) continue to be tracked individually

Upgrade Notes:

After upgrading to v0.1.6:

  1. Restart Home Assistant
  2. Wait 60 seconds for the first scan
  3. You should see significantly fewer unavailable devices (more accurate!)
  4. No "Cardio4HA" entries in battery/signal lists

This is a recommended upgrade for all users experiencing false unavailable device alerts.


Full Changelog: v0.1.5...v0.1.6

v0.1.5 - Device-Level Tracking

Choose a tag to compare

@nenadjokic nenadjokic released this 08 Feb 08:03

🎯 Major Improvement: Device-Level Tracking

This release introduces device-level tracking instead of sensor-level tracking - a significant UX improvement!

What Changed?

Previously, if you had a device like "iPad" with 10+ sensors, you would see all 10 sensors listed separately in unavailable/battery/signal lists. This created massive clutter.

Now: Each device appears only once, regardless of how many sensors it has! 🎉

Example:

Before v0.1.5:

  • ❌ iPad sensor 1 - unavailable
  • ❌ iPad sensor 2 - unavailable
  • ❌ iPad sensor 3 - unavailable
  • ❌ iPad sensor 4 - unavailable
  • ❌ ... (10+ entries for one device!)

After v0.1.5:

  • ✅ iPad - unavailable

Benefits:

  • Cleaner lists - No more sensor clutter
  • Easier monitoring - See device status at a glance
  • Accurate counts - Sensor counts now reflect actual device count
  • Better UX - More intuitive and user-friendly

What's Affected:

This improvement applies to all monitoring categories:

  • 🔴 Unavailable Devices
  • 🔋 Low Battery Devices
  • 📡 Weak Signal Devices

Technical Details:

  • Added device deduplication using device_id tracking
  • Prioritizes device name over sensor name
  • Standalone entities (without parent devices) still tracked individually
  • No breaking changes - just better organization!

Full Changelog: v0.1.4...v0.1.5