Files
pilot/config/config.example.yaml
gilles soulier ffabf65b35 feat(yoga14): remote control, app management, install script
- Add keycode module: G7BTS Rii remote control support (evdev, auto-reconnect)
- Add key bindings: single/double press detection with configurable window
  - KEY_HOMEPAGE: single=VacuumTube, double=LiveboxTV
  - KEY_OK: inject Enter keypress via ydotool
  - KEY_PAGEUP/DOWN: LiveboxTV channel navigation
- Add M3U parser and channel selector for LiveboxTV (51 channels)
- Add volume entity (wpctl/PipeWire, 2s polling)
- Add app management: vacuum_tube, livebox_tv (start/stop/state via MQTT)
- Add grace period to prevent app state bounce after stop
- Fix screen ON via GNOME busctl: add SimulateUserActivity
- Fix power commands: trigger on ON, publish OFF immediately (momentary buttons)
- Disable GPU temp/usage entities
- Add install script: build, deploy to ~/pilot, systemd user service
- Fix service startup: WantedBy=graphical-session.target (full GNOME env at launch)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 17:16:12 +01:00

368 lines
9.9 KiB
YAML

# Codex created 2025-12-29_0224
# Configuration example for Pilot v2
# Special variables:
# $hostname - Will be replaced by the system hostname at runtime
device:
name: $hostname # Use $hostname for automatic hostname, or a custom name like "my-pc"
identifiers: ["$hostname"]
manufacturer: "Pilot" # Manufacturer name shown in Home Assistant
model: "PC Agent" # Model name (e.g., "Laptop", "Desktop", "Server")
sw_version: "2.0.0" # Software version
suggested_area: "Bureau" # Suggested area in Home Assistant (optional)
mqtt:
host: "127.0.0.1"
port: 1883
username: ""
password: ""
base_topic: "pilot"
discovery_prefix: "homeassistant"
client_id: "$hostname" # MQTT client ID - use $hostname or a custom ID
keepalive_s: 60
qos: 0
retain_states: true
features:
telemetry:
enabled: true
metrics:
cpu_usage:
enabled: true
discovery_enabled: true
interval_s: 10
name: "CPU Usage"
unique_id: "$hostname_cpu_usage"
unit: "%"
device_class: ""
icon: "mdi:chip"
state_class: "measurement"
pilot_v2_cpu_usage:
enabled: true
discovery_enabled: true
interval_s: 10
name: "Pilot V2 CPU Usage"
unique_id: "$hostname_pilot_v2_cpu_usage"
unit: "%"
device_class: ""
icon: "mdi:application"
state_class: "measurement"
pilot_v2_mem_used_mb:
enabled: true
discovery_enabled: true
interval_s: 10
name: "Pilot V2 Memory Used"
unique_id: "$hostname_pilot_v2_mem_used"
unit: "MB"
device_class: ""
icon: "mdi:application"
state_class: "measurement"
cpu_temp_c:
enabled: true
discovery_enabled: true
interval_s: 10
name: "CPU Temp"
unique_id: "$hostname_cpu_temp"
unit: "C"
device_class: "temperature"
icon: "mdi:thermometer"
state_class: "measurement"
ssd_temp_c:
enabled: true
discovery_enabled: true
interval_s: 60
name: "SSD Temp"
unique_id: "$hostname_ssd_temp"
unit: "C"
device_class: "temperature"
icon: "mdi:thermometer"
state_class: "measurement"
gpu_usage:
enabled: true
discovery_enabled: true
interval_s: 10
name: "GPU Usage"
unique_id: "$hostname_gpu_usage"
unit: "%"
device_class: ""
icon: "mdi:gpu"
state_class: "measurement"
gpu0_usage:
enabled: true
discovery_enabled: true
interval_s: 10
name: "GPU0 Usage"
unique_id: "$hostname_gpu0_usage"
unit: "%"
device_class: ""
icon: "mdi:gpu"
state_class: "measurement"
gpu1_usage:
enabled: true
discovery_enabled: true
interval_s: 10
name: "GPU1 Usage"
unique_id: "$hostname_gpu1_usage"
unit: "%"
device_class: ""
icon: "mdi:gpu"
state_class: "measurement"
gpu0_temp_c:
enabled: true
discovery_enabled: true
interval_s: 10
name: "GPU0 Temp"
unique_id: "$hostname_gpu0_temp"
unit: "C"
device_class: "temperature"
icon: "mdi:thermometer"
state_class: "measurement"
gpu1_temp_c:
enabled: true
discovery_enabled: true
interval_s: 10
name: "GPU1 Temp"
unique_id: "$hostname_gpu1_temp"
unit: "C"
device_class: "temperature"
icon: "mdi:thermometer"
state_class: "measurement"
gpu0_mem_used_gb:
enabled: true
discovery_enabled: true
interval_s: 10
name: "GPU0 Memory Used"
unique_id: "$hostname_gpu0_mem_used"
unit: "GB"
device_class: ""
icon: "mdi:memory"
state_class: "measurement"
gpu1_mem_used_gb:
enabled: true
discovery_enabled: true
interval_s: 10
name: "GPU1 Memory Used"
unique_id: "$hostname_gpu1_mem_used"
unit: "GB"
device_class: ""
icon: "mdi:memory"
state_class: "measurement"
amd_gpu_usage:
enabled: true
discovery_enabled: true
interval_s: 10
name: "AMD GPU Usage"
unique_id: "$hostname_amd_gpu_usage"
unit: "%"
device_class: ""
icon: "mdi:gpu"
state_class: "measurement"
amd_gpu_temp_c:
enabled: true
discovery_enabled: true
interval_s: 10
name: "AMD GPU Temp"
unique_id: "$hostname_amd_gpu_temp"
unit: "C"
device_class: "temperature"
icon: "mdi:thermometer"
state_class: "measurement"
amd_gpu_mem_used_gb:
enabled: true
discovery_enabled: true
interval_s: 10
name: "AMD GPU Memory Used"
unique_id: "$hostname_amd_gpu_mem_used"
unit: "GB"
device_class: ""
icon: "mdi:memory"
state_class: "measurement"
memory_used_gb:
enabled: true
discovery_enabled: true
interval_s: 10
name: "Memory Used"
unique_id: "$hostname_memory_used"
unit: "GB"
device_class: ""
icon: "mdi:memory"
state_class: "measurement"
memory_total_gb:
enabled: true
discovery_enabled: true
interval_s: 120
name: "Memory Total"
unique_id: "$hostname_memory_total"
unit: "GB"
device_class: ""
icon: "mdi:memory"
state_class: ""
disk_free_gb:
enabled: true
discovery_enabled: true
interval_s: 120
name: "Disk Free"
unique_id: "$hostname_disk_free"
unit: "GB"
device_class: ""
icon: "mdi:harddisk"
state_class: "measurement"
fan_cpu_rpm:
enabled: true
discovery_enabled: true
interval_s: 10
name: "CPU Fan"
unique_id: "$hostname_fan_cpu"
unit: "RPM"
device_class: ""
icon: "mdi:fan"
state_class: "measurement"
fan_gpu_rpm:
enabled: true
discovery_enabled: true
interval_s: 10
name: "GPU Fan"
unique_id: "$hostname_fan_gpu"
unit: "RPM"
device_class: ""
icon: "mdi:fan"
state_class: "measurement"
ip_address:
enabled: true
discovery_enabled: true
interval_s: 120
name: "IP Address"
unique_id: "$hostname_ip"
unit: ""
device_class: ""
icon: "mdi:ip"
state_class: ""
battery_level:
enabled: true
discovery_enabled: true
interval_s: 60
name: "Battery Level"
unique_id: "$hostname_battery_level"
unit: "%"
device_class: "battery"
icon: "mdi:battery"
state_class: "measurement"
battery_state:
enabled: true
discovery_enabled: true
interval_s: 60
name: "Battery State"
unique_id: "$hostname_battery_state"
unit: ""
device_class: ""
icon: "mdi:battery-charging"
state_class: ""
power_state:
enabled: true
discovery_enabled: true
interval_s: 60
name: "Power State"
unique_id: "$hostname_power_state"
unit: ""
device_class: ""
icon: "mdi:power"
state_class: ""
kernel:
enabled: true
discovery_enabled: true
interval_s: 7200
name: "Kernel"
unique_id: "$hostname_kernel"
unit: ""
device_class: ""
icon: "mdi:linux"
state_class: ""
os_version:
enabled: true
discovery_enabled: true
interval_s: 7200
name: "OS Version"
unique_id: "$hostname_os_version"
unit: ""
device_class: ""
icon: "mdi:desktop-classic"
state_class: ""
# Niveau sonore actuel (via wpctl, PipeWire)
volume_level:
enabled: true
discovery_enabled: true
interval_s: 30
name: "Volume Level"
unique_id: "$hostname_volume_level"
unit: "%"
device_class: ""
icon: "mdi:volume-high"
state_class: "measurement"
commands:
enabled: true
cooldown_s: 5
dry_run: true
allowlist:
- "shutdown"
- "reboot"
- "sleep"
- "hibernate"
- "screen"
- "volume"
- "system_update"
- "inhibit_sleep"
- "app_vacuum_tube"
- "app_livebox_tv"
- "bluetooth_k3pro"
- "bluetooth_g7bts"
power_backend:
linux: "linux_logind_polkit" # or linux_sudoers
windows: "windows_service"
screen_backend:
linux: "gnome_busctl" # or x11_xset
windows: "winapi_session" # or external_tool
publish:
heartbeat_s: 30
availability: true
# Applications pilotables depuis Home Assistant
# start_args: arguments passes au demarrage (ex: --fullscreen)
# process_check: motif pour pgrep/pkill (recherche dans le nom complet du processus)
apps:
- name: "vacuum_tube"
display_name: "VacuumTube"
enabled: true
start_cmd: "flatpak"
start_args: ["run", "rocks.shy.VacuumTube"]
process_check: "rocks.shy.VacuumTube"
- name: "livebox_tv"
display_name: "Livebox TV"
enabled: true
start_cmd: "vlc"
start_args:
- "--fullscreen"
- "--network-caching=1000"
- "/home/gilles/pilot/iptv/france_tv.m3u" # ou chemin local apres installation
process_check: "vlc"
channels_m3u: "/home/gilles/pilot/iptv/france_tv.m3u" # active le selecteur de chaine HA
# Appareils Bluetooth a surveiller et controler
# mac: adresse MAC (obtenue via: bluetoothctl paired-devices)
# Prerequis: utilisateur dans le groupe 'bluetooth'
bluetooth:
enabled: true
devices:
- name: "k3pro"
mac: "F1:B7:7F:BC:7B:00"
display_name: "ThinkPlus K3 Pro"
- name: "g7bts"
mac: "AA:23:02:16:32:6F"
display_name: "Rii G7BTS"
paths:
linux_config: "/etc/pilot/config.yaml"
windows_config: "C:\\ProgramData\\Pilot\\config.yaml"