Files
pilot/HISTORIQUE_SESSION_20251230_DEVLOG.md
2026-01-10 20:24:11 +01:00

78 lines
3.2 KiB
Markdown

# 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/<device>/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/<device>/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.<metric>` (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).