Pilot v2: Core implementation + battery telemetry

Major updates:
- Complete Rust rewrite (pilot-v2/) with working MQTT client
- Fixed MQTT event loop deadlock (background task pattern)
- Battery telemetry for Linux (auto-detected via /sys/class/power_supply)
- Home Assistant auto-discovery for all sensors and switches
- Comprehensive documentation (AVANCEMENT.md, CLAUDE.md, roadmap)
- Docker test environment with Mosquitto broker
- Helper scripts for development and testing

Features working:
 MQTT connectivity with LWT
 YAML configuration with validation
 Telemetry: CPU, memory, IP, battery (Linux)
 Commands: shutdown, reboot, sleep, screen (dry-run tested)
 HA discovery and integration
 Allowlist and cooldown protection

Ready for testing on real hardware.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Gilles Soulier
2025-12-30 06:23:00 +01:00
parent b7e67c6501
commit c5381b7112
4453 changed files with 78647 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
/home/gilles/projects/pilot/pilot-v2/target/debug/deps/async_lock-4d7615b53c137535.d: /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/lib.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/barrier.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/mutex.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/once_cell.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/rwlock.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/rwlock/futures.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/rwlock/raw.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/semaphore.rs
/home/gilles/projects/pilot/pilot-v2/target/debug/deps/libasync_lock-4d7615b53c137535.rlib: /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/lib.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/barrier.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/mutex.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/once_cell.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/rwlock.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/rwlock/futures.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/rwlock/raw.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/semaphore.rs
/home/gilles/projects/pilot/pilot-v2/target/debug/deps/libasync_lock-4d7615b53c137535.rmeta: /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/lib.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/barrier.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/mutex.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/once_cell.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/rwlock.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/rwlock/futures.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/rwlock/raw.rs /home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/semaphore.rs
/home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/lib.rs:
/home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/barrier.rs:
/home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/mutex.rs:
/home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/once_cell.rs:
/home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/rwlock.rs:
/home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/rwlock/futures.rs:
/home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/rwlock/raw.rs:
/home/gilles/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-lock-2.8.0/src/semaphore.rs: