- 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>
262 lines
6.8 KiB
YAML
262 lines
6.8 KiB
YAML
# Configuration Pilot v2 - yoga14 (Lenovo Yoga)
|
|
# Hostname auto-detecte: yoga14
|
|
|
|
device:
|
|
name: $hostname
|
|
identifiers: ["$hostname"]
|
|
manufacturer: "Lenovo"
|
|
model: "Yoga 14"
|
|
sw_version: "2.0.0"
|
|
suggested_area: "Bureau"
|
|
|
|
mqtt:
|
|
host: "10.0.0.3" # <- adresse de ton serveur Home Assistant / broker Mosquitto
|
|
port: 1883
|
|
username: "" # <- si authentification activee sur Mosquitto
|
|
password: ""
|
|
base_topic: "pilot"
|
|
discovery_prefix: "homeassistant"
|
|
client_id: "$hostname"
|
|
keepalive_s: 60
|
|
qos: 1
|
|
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"
|
|
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 integre AMD (desactive - donnees non fiables sur ce modele)
|
|
amd_gpu_usage:
|
|
enabled: false
|
|
discovery_enabled: false
|
|
interval_s: 10
|
|
name: "GPU Usage"
|
|
unique_id: "$hostname_amd_gpu_usage"
|
|
unit: "%"
|
|
device_class: ""
|
|
icon: "mdi:gpu"
|
|
state_class: "measurement"
|
|
amd_gpu_temp_c:
|
|
enabled: false
|
|
discovery_enabled: false
|
|
interval_s: 10
|
|
name: "GPU Temp"
|
|
unique_id: "$hostname_amd_gpu_temp"
|
|
unit: "C"
|
|
device_class: "temperature"
|
|
icon: "mdi:thermometer"
|
|
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: 3600
|
|
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"
|
|
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: ""
|
|
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: false
|
|
allowlist:
|
|
- "shutdown"
|
|
- "reboot"
|
|
- "sleep"
|
|
- "hibernate"
|
|
- "screen"
|
|
- "volume"
|
|
- "system_update"
|
|
- "inhibit_sleep"
|
|
- "app_vacuum_tube"
|
|
- "app_livebox_tv"
|
|
- "bluetooth_k3pro"
|
|
- "bluetooth_g7bts"
|
|
- "livebox_tv_channel"
|
|
|
|
power_backend:
|
|
linux: "linux_logind_polkit"
|
|
windows: "windows_service"
|
|
|
|
screen_backend:
|
|
linux: "gnome_busctl" # si pas GNOME: x11_xset
|
|
windows: "winapi_session"
|
|
|
|
publish:
|
|
heartbeat_s: 30
|
|
availability: true
|
|
|
|
apps:
|
|
- name: "vacuum_tube"
|
|
display_name: "VacuumTube"
|
|
enabled: true
|
|
start_cmd: "flatpak"
|
|
start_args: ["run", "--device=dri", "rocks.shy.VacuumTube"]
|
|
process_check: "vacuumtube"
|
|
- name: "livebox_tv"
|
|
display_name: "Livebox TV"
|
|
enabled: true
|
|
start_cmd: "vlc"
|
|
start_args:
|
|
- "--fullscreen"
|
|
- "--network-caching=1000"
|
|
- "../iptv/france_tv.m3u"
|
|
process_check: "vlc"
|
|
channels_m3u: "../iptv/france_tv.m3u"
|
|
channel_next_key: "KEY_PAGEUP"
|
|
channel_prev_key: "KEY_PAGEDOWN"
|
|
|
|
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"
|
|
|
|
# Lecture des touches clavier/telecommande via evdev
|
|
# Necessite: utilisateur dans le groupe 'input' (sudo usermod -aG input $USER)
|
|
# Pour trouver le device: ls -la /dev/input/by-id/ apres connexion de la telecommande
|
|
keycodes:
|
|
enabled: true
|
|
devices:
|
|
- "G7BTS Keyboard" # nom tel qu'il apparait dans /sys/class/input/*/device/name
|
|
|
|
# Liaisons touches → actions (simple / double appui)
|
|
key_bindings:
|
|
enabled: true
|
|
bindings:
|
|
- key: "KEY_HOMEPAGE"
|
|
single_press: "vacuum_tube" # appui simple → toggle VacuumTube
|
|
double_press: "livebox_tv" # double appui → toggle LiveboxTV
|
|
double_press_ms: 400 # fenetre de detection en ms
|
|
- key: "KEY_OK"
|
|
single_press: "key:28" # touche OK → injecte Enter (code 28) via ydotool
|