# Historique Session - 30 Décembre 2025 ## Résumé Session de développement pour aligner le payload MQTT discovery de Pilot v2 avec la spécification Home Assistant et le format v1 qui fonctionne. ## Objectif Faire fonctionner la découverte automatique Home Assistant pour le device "asus" sur le broker MQTT 10.0.0.3:1883. ## Problèmes identifiés et résolus ### 1. Configuration MQTT ✅ - **Problème**: Device configuré avec $hostname, broker à 10.0.0.3:1883 - **Solution**: Configuration validée dans `pilot-v2/config.yaml` - **Résultat**: Hostname "asus" correctement expansé ### 2. Device Info non configurable ✅ - **Problème**: manufacturer, model, sw_version hardcodés - **Solution**: Ajout de ces champs dans `config/mod.rs` avec valeurs par défaut - **Commit**: `df871dd` - "Fix Home Assistant MQTT discovery compliance" ### 3. Payload discovery non conforme ✅ - **Problème initial**: Plusieurs champs manquants par rapport à v1 - **Corrections apportées**: - ✅ Ajout `payload_available: "online"` et `payload_not_available: "offline"` - ✅ Suppression device_class "power" incorrect pour cpu_usage - ✅ Ajout puis suppression du champ `"type"` (non requis par HA spec) - ✅ Topics de découverte: `homeassistant/{component}/{node_id}/{entity_name}/config` - ✅ Entity naming: `{metric}_{device}` (ex: cpu_usage_asus) ### 4. Topics MQTT restructurés ✅ - **Sensors**: - State topic: `pilot/{device}/{metric}` (sans /state/) - Availability: `pilot/{device}/{metric}/available` - **Switches**: - State topic: `pilot/{device}/{metric}/state` (avec /state) - Availability: `pilot/{device}/{metric}/available` - Command topic: `pilot/{device}/cmd/{action}/set` ### 5. Fonction publish_switch_state ajoutée ✅ - **Raison**: Sensors et switches ont des formats de topics différents - **Fichier**: `pilot-v2/src/mqtt/mod.rs` - **Fonction**: Ajoute `/state` à la fin du topic pour les switches ## Structure du payload final (conforme HA) ```json { "name": "cpu_usage_asus", "unique_id": "asus_cpu_usage", "state_topic": "pilot/asus/cpu_usage", "availability_topic": "pilot/asus/cpu_usage/available", "payload_available": "online", "payload_not_available": "offline", "device": { "identifiers": ["asus"], "name": "asus", "manufacturer": "Asus", "model": "Laptop", "sw_version": "2.0.0", "suggested_area": "Bureau" }, "unit_of_measurement": "%", "icon": "mdi:chip" } ``` **Topic de publication**: `homeassistant/sensor/asus/cpu_usage_asus/config` ## Commits créés 1. **df871dd** - Fix Home Assistant MQTT discovery compliance - Ajout payload_available/not_available - Device info configurable - Correction device_class 2. **60b622c** - Align MQTT discovery with v1 format and HA specification - Restructuration topics (sensors vs switches) - Fonction publish_switch_state - Entity naming corrigé 3. **ff3fc65** - Remove 'type' field from discovery payload per HA spec - Suppression du champ "type" non requis ## Problème en cours ⚠️ ### Connexion MQTT refuse (Connection refused os error 111) - **Symptôme**: `rumqttc` ne parvient pas à se connecter au broker 10.0.0.3:1883 - **Tests effectués**: - ✅ `nc -zv 10.0.0.3 1883` → Port ouvert - ✅ `telnet 10.0.0.3 1883` → Connexion réussie - ❌ Pilot v2 → Connection refused - **Note importante**: L'utilisateur a confirmé avoir VU le device dans HA, mais il est maintenant déconnecté - **Hypothèse**: Une instance précédente a réussi à se connecter et publier la découverte, puis s'est déconnectée ### Actions à faire après redémarrage 1. Vérifier que le broker MQTT est bien démarré 2. Vérifier s'il y a des logs du broker expliquant les refus de connexion 3. Tester si une autre application (Python v1) arrive à se connecter depuis "asus" 4. Vérifier les pare-feu locaux 5. Essayer de relancer Pilot et vérifier les logs détaillés ## Fichiers modifiés ``` pilot-v2/src/ha/mod.rs - Structure discovery, topics, payload pilot-v2/src/mqtt/mod.rs - Fonction publish_switch_state pilot-v2/src/runtime/mod.rs - Utilisation publish_switch_state pilot-v2/src/config/mod.rs - Device info configurable pilot-v2/config.yaml - Configuration asus config/config.example.yaml - Documentation device info ``` ## État actuel - ✅ Payload discovery 100% conforme à HA spec - ✅ Tous les topics correctement formatés - ✅ Code compilé sans erreur - ✅ Device détecté dans HA (confirmation utilisateur) - ❌ Problème de connexion MQTT persistant ## Commandes utiles pour debug ```bash # Vérifier si Pilot tourne ps aux | grep pilot-v2 # Tester la connexion MQTT nc -zv 10.0.0.3 1883 # Lancer Pilot avec logs RUST_LOG=debug ./pilot-v2/target/release/pilot-v2 # Voir les logs tail -f /tmp/pilot_reconnect.log # Tuer toutes les instances pkill -9 pilot-v2 ``` ## Prochaines étapes 1. **Résoudre le problème de connexion MQTT** 2. Vérifier que le device reste "online" dans HA 3. Tester les commandes (shutdown, reboot, etc.) 4. Désactiver dry_run mode si les tests sont concluants 5. Configurer le service systemd pour démarrage automatique