# Historique Dev - 30 Décembre 2025 (reboot) ## Contexte Objectif: stabiliser Pilot v2 (MQTT discovery HA, telemetry avancée, commandes), ajouter métriques détaillées configurables par YAML, et logs debug. ## État courant (ok) - MQTT OK, topics publiés, discovery HA pilotée par config. - Avail: `pilot//availability` utilisé pour toutes les entités. - Logs debug ajoutés sur publications MQTT + discovery. - `RUST_LOG` respecté (env filter) - Commandes MQTT reçues et logs des commandes. ## Problèmes rencontrés - Déconnexions MQTT “connection closed by peer” → mitigé en doublant les intervals + backoff - Ancien topics retained (`*_mb`, `pilot//state/...`) visibles: nettoyage nécessaire (mqtt_pub -r -n) - Écran: backend `gnome_busctl` non dispo (SetPowerSaveMode absent). `x11_xset` OK en X11. ## Changements principaux dans le code - **Config par métrique** (interval, unit, device_class, name, unique_id, icon, state_class, discovery_enabled) - **Scheduling par métrique** (intervals distincts) - **Telemetry**: - CPU/mem/disk/IP/battery/power - GPU NVIDIA (gpu0/gpu1 usage, temp, mem) via `nvidia-smi` - AMD iGPU (usage via sysfs, mem via sysfs, temp via sysinfo components) - Temp CPU/SSD via sysinfo components - Fans CPU/GPU via `/sys/class/hwmon` - OS/kernel via sysinfo - Process metrics `pilot_v2_cpu_usage` et `pilot_v2_mem_used_mb` - **Logs**: - publish_state / publish_switch_state / publish_discovery - mqtt incoming publish + command received - x11 env logs + stderr for screen command - publish stats (nb msg/min) - backoff reconnect ## Config YAML (nouveau format) - `features.telemetry.metrics.` (dict) - `enabled`, `discovery_enabled`, `interval_s`, `unit`, `name`, `unique_id`, `icon`, `device_class`, `state_class` - `$hostname` remplacé dans name/unique_id ## Metrics ajoutées (principales) - Temps: `cpu_temp_c`, `ssd_temp_c`, `gpu0_temp_c`, `gpu1_temp_c`, `amd_gpu_temp_c` - GPU NVIDIA: `gpu0_usage`, `gpu1_usage`, `gpu0_mem_used_gb`, `gpu1_mem_used_gb`, `gpu_usage` (moyenne) - AMD iGPU: `amd_gpu_usage`, `amd_gpu_mem_used_gb` - Fans: `fan_cpu_rpm`, `fan_gpu_rpm` - Process: `pilot_v2_cpu_usage`, `pilot_v2_mem_used_mb` ## Fichiers modifiés (principaux) - `pilot-v2/src/config/mod.rs` - `pilot-v2/src/runtime/mod.rs` - `pilot-v2/src/telemetry/mod.rs` - `pilot-v2/src/ha/mod.rs` - `pilot-v2/src/mqtt/mod.rs` - `pilot-v2/src/platform/linux/mod.rs` - `pilot-v2/src/main.rs` - `pilot-v2/config.yaml` - `config.yaml` - `config/config.example.yaml` ## Commandes utiles - Build + run: - `cargo build --release` - `RUST_LOG=pilot_v2=debug,rumqttc=debug ./target/release/pilot-v2` - MQTT test: - `mosquitto_sub -h 10.0.0.3 -p 1883 -t 'pilot/asus/#' -v` - Screen OFF (x11): - `mosquitto_pub -h 10.0.0.3 -p 1883 -t 'pilot/asus/cmd/screen/set' -m 'OFF'` - Check fans: - `cat /sys/class/hwmon/hwmon10/fan1_input` - `cat /sys/class/hwmon/hwmon10/fan2_input` - GPU metrics: - `nvidia-smi --query-gpu=utilization.gpu,memory.used,temperature.gpu --format=csv,noheader,nounits` ## Notes - `dry_run` doit être false pour exécuter les commandes. - `x11_xset` requis pour écran en X11. - GPU1 peut rester “Inconnu” si inactive (hybride).