corrige temperature
This commit is contained in:
147
HISTORIQUE_SESSION_20251230.md
Normal file
147
HISTORIQUE_SESSION_20251230.md
Normal file
@@ -0,0 +1,147 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user