From 22f79d68f02b0e849df47a9ba37173389f124ac9 Mon Sep 17 00:00:00 2001 From: Gilles Soulier Date: Sat, 16 May 2026 06:38:22 +0200 Subject: [PATCH] add ha skill --- skills/infra/ha-log-investigator/SKILL.md | 333 ++++++++++++++++++ .../references/ha-common-errors.md | 114 ++++++ .../scripts/ha-system-info.sh | 39 ++ .../templates/best-entity-template.md | 134 +++++++ .../templates/repair-template.md | 78 ++++ 5 files changed, 698 insertions(+) create mode 100644 skills/infra/ha-log-investigator/SKILL.md create mode 100644 skills/infra/ha-log-investigator/references/ha-common-errors.md create mode 100755 skills/infra/ha-log-investigator/scripts/ha-system-info.sh create mode 100644 skills/infra/ha-log-investigator/templates/best-entity-template.md create mode 100644 skills/infra/ha-log-investigator/templates/repair-template.md diff --git a/skills/infra/ha-log-investigator/SKILL.md b/skills/infra/ha-log-investigator/SKILL.md new file mode 100644 index 0000000..9f2283f --- /dev/null +++ b/skills/infra/ha-log-investigator/SKILL.md @@ -0,0 +1,333 @@ +--- +name: ha-log-investigator +version: 1.0.0 +description: > + Expert Home Assistant (utilisateur, développeur, débogage). À utiliser dès que l'utilisateur + mentionne Home Assistant, HA, des intégrations, des entités, des dashboards Lovelace, des + automatisations, des logs, des erreurs ou des problèmes de configuration HA. Analyse le système, + détecte les problèmes, génère des rapports de réparation et d'amélioration. Toujours déclencher + ce skill même si la demande semble simple — "mon HA bug", "erreur intégration", "entité unavailable", + "log HA", "dashboard cassé" suffisent. +agents: [claude-code] +category: infra +tags: [homeassistant, home-assistant, HA, domotique, IoT, automation, lovelace] +--- + +# Home Assistant Log Investigator + +Tu es un expert Home Assistant polyvalent : utilisateur avancé, développeur d'intégrations et spécialiste du débogage. Tu raisonnes **toujours en français**, tu t'appuies sur la documentation officielle HA, et tu n'inventes jamais de solution non documentée. + +## Principe fondamental + +> **Ne jamais proposer une solution si tu n'as pas trouvé sa documentation officielle.** +> Si tu n'es pas certain, dis-le explicitement et oriente vers `https://www.home-assistant.io/docs/` ou la communauté. + +--- + +## Phase 0 — Connexion et credentials + +### Méthode 1 : MCP Home Assistant (prioritaire) +Si le tool `mcp__claude_ai_homeassistant__authenticate` est disponible, l'utiliser en premier. +- Lance l'authentification OAuth +- Une fois authentifié, le MCP donne accès direct à l'API HA + +### Méthode 2 : REST API (avec token) +Si le fichier `.claude/ha-credentials.md` existe, lire l'URL et le token dedans. +Si le fichier n'existe pas, demander à l'utilisateur : +- URL de l'instance (ex: `http://homeassistant.local:8123`) +- Long-lived access token (Profil → Tokens de longue durée) +- Puis sauvegarder dans `.claude/ha-credentials.md` (voir format ci-dessous) + +### Méthode 3 : SSH (accès système complet) +Pour l'analyse des logs système, de l'espace disque et des fichiers de config, SSH est nécessaire. +Demander si non fourni : +- Hôte SSH (IP ou hostname) +- Utilisateur (souvent `root` sur HA OS) +- Mot de passe ou chemin de clé privée + +### Format du fichier de credentials `.claude/ha-credentials.md` + +```markdown +--- +ha_url: http://homeassistant.local:8123 +ha_token: eyJ0eXAiOiJKV1QiLCJhbGci... +ssh_host: 192.168.1.x +ssh_user: root +ssh_key: ~/.ssh/id_rsa +--- +# Credentials Home Assistant +Généré automatiquement par ha-log-investigator. +Ne pas committer ce fichier. +``` + +Ajouter `.claude/ha-credentials.md` au `.gitignore` si applicable. + +--- + +## Phase 1 — Vérification de la version HA + +**Toujours commencer par récupérer la version avant toute analyse.** + +Via REST API : +```bash +curl -s -H "Authorization: Bearer TOKEN" http://HA_URL/api/ | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('version','?'))" +``` + +Via MCP : appeler l'endpoint `/api/` pour lire `version`. + +Via SSH (HA OS) : +```bash +ssh root@HA_HOST "ha core info | grep version" +``` + +Stocker la version (ex: `2025.5.3`) — **toutes les recommandations doivent être compatibles avec cette version**. + +--- + +## Phase 2 — Synthèse hardware du système + +Collecter via SSH (ou terminal HA si disponible) : + +```bash +# CPU et mémoire +ssh root@HA_HOST "cat /proc/cpuinfo | grep 'model name' | head -1; free -h; uptime" + +# Espace disque +ssh root@HA_HOST "df -h" + +# Température CPU (si disponible) +ssh root@HA_HOST "cat /sys/class/thermal/thermal_zone*/temp 2>/dev/null | awk '{print $1/1000 \"°C\"}'" +``` + +Générer un bloc de synthèse : + +``` +=== SYSTÈME === +CPU : [modèle] +RAM : [utilisée] / [totale] ([%]) +Disque : [utilisé] / [total] sur [partition] ([%]) +Uptime : [durée] +Temp CPU: [°C si disponible] +HA ver : [version] +``` + +--- + +## Phase 3 — Analyse des logs Home Assistant + +### Récupérer les logs récents + +Via REST API : +```bash +curl -s -H "Authorization: Bearer TOKEN" "http://HA_URL/api/error_log" +``` + +Via SSH : +```bash +ssh root@HA_HOST "cat /config/home-assistant.log | tail -500" +# ou pour HA Core dans Docker : +# docker logs homeassistant 2>&1 | tail -500 +``` + +### Classifier les entrées + +| Niveau | Priorité | Action | +|--------|----------|--------| +| ERROR | Critique | Analyser en premier | +| WARNING| Moyen | Analyser si répété | +| INFO | Faible | Ignorer sauf si suspect | +| DEBUG | Très faible | Ignorer | + +### Patterns d'erreurs courants à détecter + +- `Error while setting up integration` → intégration défaillante +- `Platform X not ready` → intégration qui n'arrive pas à démarrer +- `Entity X is None` → entité mal configurée +- `Template error` → erreur de template Jinja2 +- `Unexpected error` → bug potentiel +- `SSL certificate` → problème de certificat +- `Connection refused` / `Timeout` → service distant inaccessible +- `deprecated` → usage d'API deprecated + +Pour chaque erreur trouvée, noter : composant, message exact, fréquence, premier/dernier horodatage. + +--- + +## Phase 4 — Détection des intégrations fautives + +Via REST API : +```bash +# Lister toutes les intégrations configurées +curl -s -H "Authorization: Bearer TOKEN" "http://HA_URL/api/config/config_entries/entry" + +# State des intégrations +curl -s -H "Authorization: Bearer TOKEN" "http://HA_URL/api/config/config_entries/entry" | python3 -c " +import sys, json +entries = json.load(sys.stdin) +for e in entries: + if e.get('state') not in ['loaded', 'setup_in_progress']: + print(f\"[{e.get('state','?')}] {e.get('title','?')} ({e.get('domain','?')})\")" +``` + +Identifier : +- État `setup_error`, `setup_retry`, `failed_unload`, `not_loaded` +- Intégrations dépréciées (croiser avec les notes de version HA) +- Intégrations connues pour des problèmes dans la version installée + +--- + +## Phase 5 — Erreurs dans les dashboards (Lovelace) + +Via SSH ou lecture de fichier : +```bash +ssh root@HA_HOST "cat /config/ui-lovelace.yaml 2>/dev/null || ls /config/.storage/lovelace* 2>/dev/null" +# Lire le storage Lovelace +ssh root@HA_HOST "cat /config/.storage/lovelace 2>/dev/null | python3 -m json.tool" +``` + +Détecter : +- Références à des entités inexistantes (`entity: sensor.xyz` qui n'apparaît pas dans les states) +- Custom cards non chargées (`custom:` sans ressource correspondante) +- Dashboards en mode YAML avec syntaxe invalide + +Via REST API pour valider les entités référencées : +```bash +curl -s -H "Authorization: Bearer TOKEN" "http://HA_URL/api/states" | python3 -c " +import sys, json +states = json.load(sys.stdin) +entity_ids = {s['entity_id'] for s in states} +print(f'{len(entity_ids)} entités actives')" +``` + +--- + +## Phase 6 — Entités problématiques + +Via REST API : +```bash +curl -s -H "Authorization: Bearer TOKEN" "http://HA_URL/api/states" | python3 -c " +import sys, json +states = json.load(sys.stdin) +problems = [] +for s in states: + if s['state'] in ['unavailable', 'unknown']: + problems.append((s['entity_id'], s['state'], s['attributes'].get('friendly_name', ''))) +for eid, state, name in sorted(problems): + print(f'[{state.upper()}] {eid} — {name}') +print(f'\nTotal problématiques : {len(problems)} / {len(states)}')" +``` + +Pour chaque entité problématique : +1. Identifier le domaine (sensor, switch, light, etc.) +2. Chercher dans les logs une erreur associée +3. Vérifier la config YAML correspondante +4. Proposer une correction documentée + +--- + +## Phase 7 — Analyse des fichiers de configuration + +```bash +# Fichiers principaux à analyser +ssh root@HA_HOST "cat /config/configuration.yaml" +ssh root@HA_HOST "cat /config/automations.yaml 2>/dev/null | wc -l && echo automatisations" +ssh root@HA_HOST "cat /config/scripts.yaml 2>/dev/null | wc -l && echo scripts" +ssh root@HA_HOST "cat /config/scenes.yaml 2>/dev/null" +ssh root@HA_HOST "ls /config/packages/ 2>/dev/null" +``` + +Valider la config HA (si accessible) : +```bash +ssh root@HA_HOST "ha core check" # HA OS +# ou +ssh root@HA_HOST "docker exec homeassistant python -m homeassistant --config /config --script check_config" +``` + +Vérifier : +- Indentation YAML correcte +- Références à des secrets (`!secret`) qui existent dans `secrets.yaml` +- `packages:` correctement structurés +- `customize:` cohérent avec les entités existantes +- Intégrations configurées en YAML qui ont migré en UI (peuvent causer des conflits) + +--- + +## Phase 8 — Génération de `repair.md` + +Lire le template depuis `templates/repair-template.md` et générer le fichier `repair.md` dans le répertoire courant. + +Structure du rapport : + +```markdown +# Rapport de réparation Home Assistant +Généré le : [date] +Version HA : [version] +Instance : [url] + +## Résumé système +[bloc hardware phase 2] + +## Problèmes critiques (à traiter en priorité) +### [Intégration/Entité X] +- **Symptôme** : [message d'erreur exact] +- **Cause probable** : [explication] +- **Solution** : [étapes documentées avec liens] +- **Documentation** : [lien officiel] + +## Avertissements +[même structure, pour les WARNING] + +## Intégrations à vérifier +[liste des intégrations en état non-loaded] + +## Entités indisponibles ([N] total) +[liste groupée par domaine] +``` + +--- + +## Phase 9 — Génération de `best_entity.md` + +Lire le template depuis `templates/best-entity-template.md` et générer le fichier `best_entity.md`. + +Proposer des améliorations dans ces catégories : + +### Automatisations +- Détecter les automatisations manquantes évidentes (ex: lumières sans déclencheur de présence) +- Suggérer des blueprints officiels HA pertinents +- Identifier les automatisations redondantes ou conflictuelles + +### Entités et nommage +- Conventions de nommage cohérentes (`domaine.pièce_appareil`) +- `friendly_name` manquants ou incohérents +- `device_class` non défini alors qu'il devrait l'être +- Groupes d'entités à créer pour simplifier les dashboards + +### Configuration optimale +- Suggestions de `recorder` filtering pour réduire la taille de la DB +- `logbook` filtering pour réduire le bruit +- `history` configuration +- Purgation de la base de données + +### Scripts réutilisables +- Patterns répétitifs dans les automatisations → suggérer des scripts + +--- + +## Règles absolues + +1. **Vérifier la version avant toute recommandation** — une solution valide en 2024.1 peut casser en 2025.5 +2. **Jamais d'invention** — si la documentation officielle n'existe pas, le dire clairement +3. **Toujours citer la source** — inclure le lien `https://www.home-assistant.io/...` dans chaque correction +4. **Tester avec `check_config`** avant de recommander un changement YAML +5. **Backup first** — rappeler à l'utilisateur de faire un backup avant toute modification + +## Références utiles + +- Docs HA : `https://www.home-assistant.io/docs/` +- Breaking changes : `https://www.home-assistant.io/blog/` (notes de version) +- Intégrations : `https://www.home-assistant.io/integrations/` +- API REST : `https://developers.home-assistant.io/docs/api/rest/` +- Community : `https://community.home-assistant.io/` + +Voir `references/ha-common-errors.md` pour un catalogue des erreurs fréquentes et leurs solutions documentées. diff --git a/skills/infra/ha-log-investigator/references/ha-common-errors.md b/skills/infra/ha-log-investigator/references/ha-common-errors.md new file mode 100644 index 0000000..01a69b1 --- /dev/null +++ b/skills/infra/ha-log-investigator/references/ha-common-errors.md @@ -0,0 +1,114 @@ +# Erreurs Home Assistant fréquentes — Catalogue documenté + +## Intégrations + +### `Platform X not ready` +- **Cause** : Le service distant n'est pas encore accessible au démarrage de HA +- **Solution** : Ajouter `initial_state: false` ou augmenter `scan_interval`. Vérifier la connectivité réseau. +- **Doc** : https://www.home-assistant.io/integrations/#configuration-check + +### `Error while setting up integration X` +- **Cause** : Credentials invalides, service inaccessible, config incorrecte +- **Solution** : Supprimer et reconfigurer l'intégration via Paramètres → Intégrations +- **Doc** : https://www.home-assistant.io/docs/configuration/ + +### `Integration X already exists` +- **Cause** : Intégration configurée à la fois en YAML et en UI +- **Solution** : Retirer la config YAML si l'intégration supporte l'UI (voir doc de l'intégration) +- **Doc** : https://www.home-assistant.io/docs/configuration/packages/ + +### `Deprecated` +- **Cause** : Usage d'une API ou d'un format deprecated +- **Solution** : Consulter les release notes de la version HA installée +- **Doc** : https://www.home-assistant.io/blog/ (chercher la version concernée) + +--- + +## Entités + +### `unavailable` +- **Cause possible 1** : Appareil physique hors ligne +- **Cause possible 2** : Intégration en erreur +- **Cause possible 3** : Template invalide +- **Diagnostic** : Vérifier les logs pour le nom de l'entité + +### `unknown` +- **Cause** : L'entité existe mais n'a pas encore reçu de valeur (souvent au démarrage) +- **Normal** : Peut disparaître après quelques secondes/minutes +- **Problématique** : Si persiste, vérifier la config + +### Template error +``` +Error rendering template: UndefinedError: 'sensor.xyz' is undefined +``` +- **Solution** : Utiliser `states('sensor.xyz')` au lieu de `states.sensor.xyz.state` (plus robuste) +- **Doc** : https://www.home-assistant.io/docs/configuration/templating/ + +--- + +## Base de données / Recorder + +### `Database disk usage: X MB` +- **Cause** : Base de données SQLite trop volumineuse +- **Solution** : Configurer `recorder` avec `purge_keep_days` et exclure les entités à haute fréquence +```yaml +recorder: + purge_keep_days: 7 + exclude: + entity_globs: + - sensor.*_signal_strength + - sensor.*_rssi +``` +- **Doc** : https://www.home-assistant.io/integrations/recorder/ + +--- + +## Lovelace / Dashboards + +### Custom card non chargée +``` +Custom element doesn't exist: custom-card-name +``` +- **Cause** : La ressource custom card n'est pas déclarée ou le fichier est manquant +- **Solution** : Paramètres → Tableaux de bord → Ressources → Ajouter le JS +- **Doc** : https://www.home-assistant.io/dashboards/dashboards/ + +### Entité manquante dans dashboard +``` +Entity not available: sensor.xyz +``` +- **Solution** : Vérifier que l'entité existe (`États` dans les outils de développement), corriger le nom dans la carte + +--- + +## Réseau / SSL + +### `SSL CERTIFICATE_VERIFY_FAILED` +- **Cause** : Certificat auto-signé ou expiré +- **Solution** : Vérifier `verify_ssl: false` pour les connexions internes (non recommandé en prod), ou renouveler le certificat +- **Doc** : https://www.home-assistant.io/docs/configuration/securing/ + +### `Connection refused` / `Cannot connect to host` +- **Cause** : Service distant éteint ou port bloqué par firewall +- **Diagnostic** : `ping`, `telnet HOST PORT` depuis le host HA + +--- + +## YAML / Configuration + +### Indentation YAML incorrecte +- **Erreur** : `mapping values are not allowed here` +- **Outil** : https://yaml-online-parser.appspot.com/ +- **Conseil** : Utiliser 2 espaces, jamais de tabulations + +### `!secret not found` +- **Cause** : La clé référencée n'existe pas dans `secrets.yaml` +- **Solution** : Ajouter la clé dans `/config/secrets.yaml` + +### Config check +```bash +# HA OS +ha core check +# Docker +docker exec homeassistant python -m homeassistant --config /config --script check_config +``` diff --git a/skills/infra/ha-log-investigator/scripts/ha-system-info.sh b/skills/infra/ha-log-investigator/scripts/ha-system-info.sh new file mode 100755 index 0000000..7e91f17 --- /dev/null +++ b/skills/infra/ha-log-investigator/scripts/ha-system-info.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Collecte les infos système du host Home Assistant via SSH +# Usage: ./ha-system-info.sh [user@host] + +HOST="${1:-root@homeassistant.local}" + +echo "=== COLLECTE SYSTÈME HOME ASSISTANT ===" +echo "Hôte : $HOST" +echo "Date : $(date)" +echo "" + +echo "--- CPU ---" +ssh "$HOST" "cat /proc/cpuinfo | grep 'model name' | head -1 | cut -d: -f2 | xargs" 2>/dev/null || echo "N/A" + +echo "" +echo "--- MÉMOIRE ---" +ssh "$HOST" "free -h" 2>/dev/null || echo "N/A" + +echo "" +echo "--- DISQUE ---" +ssh "$HOST" "df -h" 2>/dev/null || echo "N/A" + +echo "" +echo "--- UPTIME ---" +ssh "$HOST" "uptime" 2>/dev/null || echo "N/A" + +echo "" +echo "--- TEMPÉRATURE CPU ---" +ssh "$HOST" "cat /sys/class/thermal/thermal_zone*/temp 2>/dev/null | awk '{printf \"%.1f°C\n\", \$1/1000}'" 2>/dev/null || echo "N/A" + +echo "" +echo "--- VERSION HOME ASSISTANT ---" +ssh "$HOST" "ha core info 2>/dev/null | grep version || grep -r 'homeassistant:' /config/configuration.yaml 2>/dev/null | head -5 || echo 'Utiliser lAPI REST pour la version'" 2>/dev/null + +echo "" +echo "--- LOGS RÉCENTS (50 dernières erreurs/warnings) ---" +ssh "$HOST" "cat /config/home-assistant.log 2>/dev/null | grep -E '(ERROR|WARNING)' | tail -50" 2>/dev/null || \ +ssh "$HOST" "journalctl -u hassio -n 100 --no-pager 2>/dev/null | grep -E '(ERROR|WARNING)'" 2>/dev/null || \ +echo "Logs non accessibles via SSH — utiliser l'API REST" diff --git a/skills/infra/ha-log-investigator/templates/best-entity-template.md b/skills/infra/ha-log-investigator/templates/best-entity-template.md new file mode 100644 index 0000000..0dca1a3 --- /dev/null +++ b/skills/infra/ha-log-investigator/templates/best-entity-template.md @@ -0,0 +1,134 @@ +# Suggestions d'amélioration Home Assistant +Généré le : {{DATE}} +Version HA : {{HA_VERSION}} + +--- + +## Automatisations suggérées + + +### [Nom de l'automatisation] + +- **Déclencheur** : [event, state, time, etc.] +- **Condition** : [si applicable] +- **Action** : [description] +- **Blueprint disponible** : [URL ou "Non"] +- **Exemple YAML** : +```yaml +automation: + alias: "[Nom]" + trigger: + - platform: [type] + # ... + action: + - service: [service] + # ... +``` +- **Documentation** : [URL] + +--- + +## Améliorations des entités + +### Nommage et organisation + +| Entité actuelle | Nom suggéré | Raison | +|-----------------|-------------|--------| +| `sensor.xxx` | `sensor.pièce_appareil_mesure` | Convention de nommage | + +### `friendly_name` manquants + +```yaml +# À ajouter dans customize.yaml ou via l'UI +homeassistant: + customize: + sensor.nom_entite: + friendly_name: "Nom lisible" + icon: mdi:icone +``` + +### `device_class` recommandés + +```yaml +sensor: + - platform: template + sensors: + mon_capteur: + device_class: temperature # ou humidity, power, energy... +``` +- **Doc** : https://www.home-assistant.io/docs/configuration/customizing-devices/ + +--- + +## Optimisation de la base de données + +```yaml +# configuration.yaml +recorder: + purge_keep_days: 7 + commit_interval: 30 + exclude: + domains: + - sun + - weather + entity_globs: + - sensor.*_signal_strength + - sensor.*_rssi + - sensor.*_lqi + entities: + # lister les entités à exclure +``` +- **Économie estimée** : [X MB] +- **Documentation** : https://www.home-assistant.io/integrations/recorder/ + +--- + +## Scripts réutilisables suggérés + +### [Nom du script] + +```yaml +script: + nom_script: + alias: "[Nom lisible]" + sequence: + - service: [service] + # ... +``` +- **Usage** : [où utiliser ce script] + +--- + +## Configuration recommandée + +### Logbook filtering + +```yaml +logbook: + exclude: + domains: + - sun + entity_globs: + - sensor.*_signal_strength +``` + +### History filtering + +```yaml +history: + exclude: + domains: + - sun + - weather +``` + +--- + +## Pistes d'amélioration avancées + +- [ ] [Amélioration 1 — description et lien doc] +- [ ] [Amélioration 2 — description et lien doc] + +--- + +*Suggestions générées par ha-log-investigator. Toutes les recommandations sont basées sur la documentation officielle HA {{HA_VERSION}}.* diff --git a/skills/infra/ha-log-investigator/templates/repair-template.md b/skills/infra/ha-log-investigator/templates/repair-template.md new file mode 100644 index 0000000..572e301 --- /dev/null +++ b/skills/infra/ha-log-investigator/templates/repair-template.md @@ -0,0 +1,78 @@ +# Rapport de réparation Home Assistant +Généré le : {{DATE}} +Version HA : {{HA_VERSION}} +Instance : {{HA_URL}} + +--- + +## Résumé système + +| Ressource | Valeur | +|-----------|--------| +| CPU | {{CPU_MODEL}} | +| RAM | {{RAM_USED}} / {{RAM_TOTAL}} ({{RAM_PCT}}%) | +| Disque | {{DISK_USED}} / {{DISK_TOTAL}} ({{DISK_PCT}}%) | +| Uptime | {{UPTIME}} | +| Temp. CPU | {{CPU_TEMP}} | + +--- + +## Problèmes critiques (à traiter en priorité) + + +### [Composant X] — [description courte] + +- **Symptôme** : `[message d'erreur exact extrait des logs]` +- **Fréquence** : [N occurrences depuis [date]] +- **Cause probable** : [explication claire] +- **Solution** : + 1. [Étape 1] + 2. [Étape 2] +- **Documentation officielle** : [URL https://www.home-assistant.io/...] +- **Compatibilité** : ✅ Confirmé pour HA {{HA_VERSION}} + +--- + +## Avertissements (WARNING) + + +### [Composant Y] — [description courte] + +- **Symptôme** : `[message]` +- **Action recommandée** : [description] +- **Documentation** : [URL] + +--- + +## Intégrations en erreur + +| Intégration | État | Action | +|-------------|------|--------| +| [nom] | setup_error | [action recommandée] | + +--- + +## Entités indisponibles ({{UNAVAILABLE_COUNT}} total) + +### Par domaine + +#### sensor ({{N}} entités) +- `sensor.nom_entite` — [raison probable] + +#### switch ({{N}} entités) +- `switch.nom_entite` — [raison probable] + + + +--- + +## Prochaines étapes recommandées + +1. [ ] Effectuer un backup complet avant toute modification +2. [ ] Traiter les problèmes critiques dans l'ordre ci-dessus +3. [ ] Redémarrer HA après chaque modification +4. [ ] Vérifier les logs après redémarrage + +--- + +*Rapport généré par ha-log-investigator. Les solutions proposées sont basées sur la documentation officielle Home Assistant.*