Releases: nenadjokic/Cardio4HA
Release list
v1.1.5
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
_reloadingguard flag) - Simplify config flow — single-step options (thresholds & exclusions only, no notifications step)
Dashboard (sidebar panel) remains fully functional.
v1.1.4
Bug Fixes
Panel crash on settings save
- Fixed
CustomElementRegistryerror 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
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
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_VERSIONconstant - New WebSocket command
cardio4ha/update_configfor live config updates
v1.1.1
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
/releaseskill for automated patch version releases
Full Changelog: v1.1.0...v1.1.1
v1.1.0 - Per-Device Ignore, Startup Delay, Physical Devices Only
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
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_scoreentity 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_devicesentity
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
🎉 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*_batteryto 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.mdwith 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)
- Go to HACS → Integrations → 3-dot menu → Custom repositories
- Add:
https://github.com/nenadjokic/Cardio4HA - Category: Integration → Add
- Search for "Cardio4HA" and install
Manual Installation
- Download
cardio4ha.zipfrom this release - Extract to
custom_components/cardio4ha/ - Restart Home Assistant
Full Changelog: v0.1.6...v0.1.7
v0.1.6 - Smart Unavailable Detection
🛠️ 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_countsstructure 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:
- Restart Home Assistant
- Wait 60 seconds for the first scan
- You should see significantly fewer unavailable devices (more accurate!)
- 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
🎯 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_idtracking - 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