5.1 KiB
5.1 KiB
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.rsavec 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"etpayload_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)
- ✅ Ajout
4. Topics MQTT restructurés ✅
- Sensors:
- State topic:
pilot/{device}/{metric}(sans /state/) - Availability:
pilot/{device}/{metric}/available
- State topic:
- Switches:
- State topic:
pilot/{device}/{metric}/state(avec /state) - Availability:
pilot/{device}/{metric}/available - Command topic:
pilot/{device}/cmd/{action}/set
- State topic:
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)
{
"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
-
df871dd- Fix Home Assistant MQTT discovery compliance- Ajout payload_available/not_available
- Device info configurable
- Correction device_class
-
60b622c- Align MQTT discovery with v1 format and HA specification- Restructuration topics (sensors vs switches)
- Fonction publish_switch_state
- Entity naming corrigé
-
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:
rumqttcne 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
- Vérifier que le broker MQTT est bien démarré
- Vérifier s'il y a des logs du broker expliquant les refus de connexion
- Tester si une autre application (Python v1) arrive à se connecter depuis "asus"
- Vérifier les pare-feu locaux
- 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
# 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
- Résoudre le problème de connexion MQTT
- Vérifier que le device reste "online" dans HA
- Tester les commandes (shutdown, reboot, etc.)
- Désactiver dry_run mode si les tests sont concluants
- Configurer le service systemd pour démarrage automatique