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

3.2 KiB

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).