78 lines
3.2 KiB
Markdown
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).
|