3.2 KiB
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>/availabilityutilisé pour toutes les entités. - Logs debug ajoutés sur publications MQTT + discovery.
RUST_LOGrespecté (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_busctlnon dispo (SetPowerSaveMode absent).x11_xsetOK 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_usageetpilot_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$hostnameremplacé 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.rspilot-v2/src/runtime/mod.rspilot-v2/src/telemetry/mod.rspilot-v2/src/ha/mod.rspilot-v2/src/mqtt/mod.rspilot-v2/src/platform/linux/mod.rspilot-v2/src/main.rspilot-v2/config.yamlconfig.yamlconfig/config.example.yaml
Commandes utiles
- Build + run:
cargo build --releaseRUST_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_inputcat /sys/class/hwmon/hwmon10/fan2_input
- GPU metrics:
nvidia-smi --query-gpu=utilization.gpu,memory.used,temperature.gpu --format=csv,noheader,nounits
Notes
dry_rundoit être false pour exécuter les commandes.x11_xsetrequis pour écran en X11.- GPU1 peut rester “Inconnu” si inactive (hybride).