jessikitty 72f7ac4129 Add bash-only version of cleanup script
- Works directly in SSH add-on (no Python required)
- Line-by-line YAML parsing
- Preserves indentation and structure
- Color-coded output
- Automatic backups with restore script
- Removes 19 input_booleans and 10 scripts
2025-12-23 01:29:43 +11:00

Home Assistant Chore Cleanup Script

Automatically removes unused chore-related entities from your Home Assistant YAML configuration files.

🎯 What It Does

This script identifies and removes 46 unused entities from your Home Assistant configuration:

  • 19 Input Booleans: Unused task tracking booleans (personal desk/room cleaning, generic tasks)
  • 7 Duplicate Scripts: Old naming convention (complete_task_* versions)
  • 3 Generic Scripts: Unused completion scripts

Safety Features

  • Automatic Backups: Creates timestamped backups before making ANY changes
  • Restore Script: Generates a one-click restore script in case you need to undo
  • Dry-run Capable: Review what will be removed before committing
  • Error Handling: Continues even if some files fail, reports all errors at end

📋 What Gets Removed

Input Booleans (19 items)

task_lou_clean_desk_pending
task_jess_clean_desk_pending
task_william_clean_desk_pending
task_xander_clean_desk_pending
task_bella_clean_desk_pending
task_lou_clean_room_pending
task_jess_clean_room_pending
task_william_clean_room_pending
task_xander_clean_room_pending
task_bella_clean_room_pending
task_tidy_lounge_pending
task_vacuum_room_pending
task_get_school_ready_pending
task_clean_desks_done_this_week
task_clean_rooms_done_this_week
task_tidy_lounge_done_this_week
task_tidy_kitchen_done_today
task_clean_dining_table_done_today
task_vacuum_room_done_today

Scripts (10 items)

complete_task_dishwasher_unload       (duplicate)
complete_task_washing_machine_unload  (duplicate)
complete_task_dryer_unload            (duplicate)
complete_task_bins_out                (duplicate)
complete_task_bins_in                 (duplicate)
complete_task_kitty_litter_clean      (duplicate)
complete_task_kitty_litter_change     (duplicate)
complete_tidy_lounge                  (unused)
complete_vacuum_room                  (unused)
complete_get_school_ready             (unused)

🚀 Usage

Method 1: Run Directly on Home Assistant

# SSH into your Home Assistant instance
ssh root@homeassistant.local

# Copy the script to your config directory
# (You can upload via File Editor add-on or SCP)

# Make it executable
chmod +x /config/ha_chore_cleanup.py

# Run the script
python3 /config/ha_chore_cleanup.py

Method 2: Run from Any Machine (with path)

# If your Home Assistant config is mounted elsewhere
python3 ha_chore_cleanup.py /path/to/your/config

Method 3: Via Home Assistant Terminal Add-on

  1. Install "Terminal & SSH" add-on
  2. Upload script via File Editor
  3. Run in terminal:
cd /config
python3 ha_chore_cleanup.py

📂 What Files Get Modified

The script will search and modify these files if they exist:

  • configuration.yaml (if entities are defined inline)
  • input_boolean.yaml or input_booleans.yaml
  • scripts.yaml or script.yaml
  • helpers.yaml (if it exists)
  • Any files in packages/ directory containing the target entities

🔄 Backup Location

Backups are saved to:

/config/backups/cleanup_YYYYMMDD_HHMMSS/

Each backup directory contains:

  • Original YAML files before modification
  • restore.sh - One-click restoration script

⚠️ Important Notes

What's KEPT (Safe to Keep)

The script does NOT remove these items because they're actively used:

Tracking Booleans (used in automation conditions):

  • task_bella_clothes_done_today
  • task_xander_clothes_done_today
  • task_william_clothes_done_today
  • task_handwash_dishes_done_today
  • task_feed_chips_done_today
  • task_feed_harper_done_today
  • task_water_chips_done_today
  • task_water_harper_done_today
  • task_kitty_litter_clean_done_today
  • task_kitty_litter_change_done_fortnight

These prevent duplicate task creation and are referenced in your automations.

Files with !include Directives

If the script encounters YAML files with !include or !secret directives, it will:

  • Create a backup
  • Skip automatic modification
  • Report the file for manual review

📊 Expected Output

======================================================================
Home Assistant Chore Cleanup Script
======================================================================
✓ Created backup directory: /config/backups/cleanup_20241223_150000

Processing configuration.yaml...
  ✓ Backed up: configuration.yaml
  Removed 5 input_boolean entries
  Removed 3 script entries
  ✓ Saved: configuration.yaml

Processing input_boolean.yaml...
  ✓ Backed up: input_boolean.yaml
  ✓ Removed 14 input_boolean entries
  ✓ Saved: input_boolean.yaml

Processing scripts.yaml...
  ✓ Backed up: scripts.yaml
  ✓ Removed 7 script entries
  ✓ Saved: scripts.yaml

======================================================================
CLEANUP SUMMARY
======================================================================

✓ Backups saved to: /config/backups/cleanup_20241223_150000

📋 Input Booleans Removed: 19
  - task_bella_clean_desk_pending
  - task_clean_desks_done_this_week
  [... full list ...]

📜 Scripts Removed: 10
  - complete_get_school_ready
  - complete_task_bins_in
  [... full list ...]

======================================================================
NEXT STEPS:
======================================================================
1. Review the changes in your YAML files
2. Run 'ha core check' to verify configuration
3. If everything looks good, restart Home Assistant
4. If issues occur, restore from backups
======================================================================

🔧 Post-Cleanup Steps

1. Verify Configuration

# Check configuration is valid
ha core check

2. Review Changes (Optional)

# Compare backup to current
diff /config/backups/cleanup_YYYYMMDD_HHMMSS/scripts.yaml /config/scripts.yaml

3. Restart Home Assistant

ha core restart

4. Verify Everything Works

  • Check your Dailies dashboard (dashboard-chores)
  • Test a few task completions
  • Check for any errors in logs

🔙 How to Restore (If Needed)

Option 1: Use the Restore Script

cd /config/backups/cleanup_YYYYMMDD_HHMMSS
./restore.sh
ha core restart

Option 2: Manual Restore

# Copy backup files back
cp /config/backups/cleanup_YYYYMMDD_HHMMSS/*.yaml /config/
ha core restart

🐛 Troubleshooting

"Permission Denied"

chmod +x ha_chore_cleanup.py

"Module 'yaml' not found"

pip3 install pyyaml

Configuration Check Fails After Cleanup

  1. Don't panic - your backups are safe
  2. Run the restore script
  3. Review what was removed
  4. Report any issues

Script Reports Errors

  • Check the error messages in the summary
  • Review those specific files manually
  • The script continues even if some files fail

📝 Logs & Debugging

The script outputs detailed information about:

  • Which files it's processing
  • How many items it removed from each file
  • Any errors encountered
  • Full list of removed items

All output is also printed to console for your review.

🤝 Support

If you encounter issues:

  1. Check the backup directory - your files are safe
  2. Review the error messages
  3. Restore from backup if needed
  4. Report the issue with the full output

📜 License

Created for Jess's Home Assistant setup Use freely, modify as needed


Last Updated: December 23, 2024 Version: 1.0.0

Description
Python script to clean up unused chore-related entities from Home Assistant YAML configuration files. Removes 46 unused input_booleans and scripts with automatic backups and restore capability.
Readme 36 KiB
Languages
Shell 53.6%
Python 46.4%