debug

系统化诊断并修复 Home Assistant 集成中的错误与异常行为,通过日志分析、代码追溯和异步逻辑检查定位问题根源,结合调试工具验证修复效果,确保稳定性与兼容性。

快捷安装

在终端运行此命令,即可一键安装该 Skill 到您的 Claude 中

npx skills add Thank-you-Linus/Linus-Dashboard --skill "debug"

Debug Errors and Bugs Systematically

Debug errors, bugs, and unexpected behavior in the Linus Dashboard Home Assistant integration.


Context Loading

Before debugging, load:

  1. .aidriven/memorybank.md - Project architecture
  2. .aidriven/rules/clean_code.md - Code standards
  3. .aidriven/rules/homeassistant_integration.md - HA patterns
  4. .aidriven/rules/async_patterns.md - Async best practices

Debug Process

Step 1: Understand the Error

Collect Information:

  • Error message (full stack trace)
  • When does it occur? (startup, service call, state change)
  • Which file/function is involved?
  • User actions that trigger it
  • Home Assistant version and logs

Questions to Ask:

  1. Is this a Python exception or HA-specific error?
  2. Does the error occur consistently or randomly?
  3. Are there related errors in home-assistant.log?
  4. What changed recently (code, config, HA version)?

Step 2: Analyze Root Cause

Common Error Categories:

1. Async/Await Issues

# Symptoms:
# - "coroutine was never awaited"
# - Event loop blocking
# - Timeouts

# Check for:
await missing_function()  # Missing await
blocking_io_call()  # Blocking I/O in async context

2. Home Assistant Integration Errors

# Symptoms:
# - Integration fails to load
# - Config flow errors
# - Entity not showing up

# Check for:
# - Missing async_setup_entry/async_unload_entry
# - Incorrect platform registration
# - Missing unique_id on entities
# - Data not stored in hass.data correctly

3. API/Network Errors

# Symptoms:
# - Connection refused
# - Timeouts
# - 4xx/5xx HTTP errors

# Check for:
# - Supabase URL/key configuration
# - Network connectivity
# - API rate limits
# - Timeout values

Step 3: Investigate

Review Code:

  • Read the file where error occurs
  • Trace the execution path
  • Check function signatures
  • Review recent changes with git log

Check Logs:

# Home Assistant logs
tail -f /config/home-assistant.log | grep linus

# Check for warnings
grep -i "warning.*linus" /config/home-assistant.log

Add Debug Logging:

import logging
_LOGGER = logging.getLogger(__name__)

_LOGGER.debug("Variable value: %s", variable)
_LOGGER.info("Entering function with args: %s", args)

Step 4: Fix the Issue

Apply Fix:

  • Make minimal changes to fix root cause
  • Follow code standards from .aidriven/rules/clean_code.md
  • Add error handling if missing
  • Update documentation if behavior changed

Test the Fix:

  1. Restart Home Assistant
  2. Reproduce the original error scenario
  3. Verify error is gone
  4. Check logs for new errors
  5. Test related functionality

Step 5: Verify and Document

Verification:

  • Error no longer occurs
  • No new errors introduced
  • Related features still work
  • Logs are clean

Documentation:

  • Update inline comments if needed
  • Note the fix in commit message
  • Update CHANGELOG if user-facing

Common Issues and Solutions

Issue: “coroutine was never awaited”

Solution: Add await before async function calls

# Before
result = async_function()

# After
result = await async_function()

Issue: Integration doesn’t load

Solution: Check entry setup and platform registration

# Ensure proper setup
async def async_setup_entry(hass, entry):
    await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
    return True

Issue: Entity not updating

Solution: Verify state updates and coordinator refresh

# Ensure coordinator updates
await self.coordinator.async_request_refresh()

Issue: Timeout errors

Solution: Increase timeout or optimize slow operations

# Add proper timeout
async with timeout(30):
    result = await slow_operation()

Debug Tools

Home Assistant Developer Tools:

  • Services tab - Test service calls
  • States tab - Check entity states
  • Events tab - Monitor events
  • Template tab - Test templates

Python Debugging:

# Add breakpoint (if debugging locally)
import pdb; pdb.set_trace()

# Add detailed logging
_LOGGER.debug("State: %s, Attrs: %s", self.state, self.extra_state_attributes)

Git Tools:

# Find when bug was introduced
git log --oneline -- path/to/file.py

# Check recent changes
git diff HEAD~5 -- path/to/file.py

Checklist

Before completing debug:

  • Root cause identified
  • Fix implemented following code standards
  • Error no longer reproduces
  • Related functionality tested
  • Logs reviewed for new issues
  • Changes documented