add ha skill
This commit is contained in:
@@ -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.
|
||||
@@ -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
|
||||
```
|
||||
@@ -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"
|
||||
@@ -0,0 +1,134 @@
|
||||
# Suggestions d'amélioration Home Assistant
|
||||
Généré le : {{DATE}}
|
||||
Version HA : {{HA_VERSION}}
|
||||
|
||||
---
|
||||
|
||||
## Automatisations suggérées
|
||||
|
||||
<!-- Pour chaque automatisation recommandée -->
|
||||
### [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}}.*
|
||||
@@ -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é)
|
||||
|
||||
<!-- Répéter ce bloc pour chaque ERROR trouvé -->
|
||||
### [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)
|
||||
|
||||
<!-- Répéter ce bloc pour chaque WARNING significatif -->
|
||||
### [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]
|
||||
|
||||
<!-- etc. -->
|
||||
|
||||
---
|
||||
|
||||
## 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.*
|
||||
Reference in New Issue
Block a user