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>
77 lines
3.6 KiB
Markdown
77 lines
3.6 KiB
Markdown
# Methode de re-developpement / re-deploiement (V2)
|
||
## 1) Pre-requis
|
||
- Python 3.10+ (ou version a valider), paho-mqtt, psutil, optionnel pynvml.
|
||
- Repo structuree : `src/`, `configs/`, `docs/`, `scripts/`, `tests/`.
|
||
- Conventions : configuration centralisee (env/yaml), logs JSON, topics versionnes.
|
||
|
||
## 2) Liste des informations que l’utilisateur doit completer
|
||
Section : A completer par l’utilisateur
|
||
- OS cibles : [ ]
|
||
- Broker MQTT (host:port) : [ ]
|
||
- Auth/TLS (user/pass, CA, client cert) : [ ]
|
||
- Client_id et keepalive : [ ]
|
||
- Prefix topics (ex: pilot/v2) : [ ]
|
||
- Liste commandes a supporter : [ ]
|
||
- Politique de securite (allowlist, validation, ACL broker) : [ ]
|
||
- Packaging desire (exe Windows, systemd Linux, docker) : [ ]
|
||
- Integration Home Assistant autodiscovery : [oui/non] + details : [ ]
|
||
- Availability / birth / will : [ ]
|
||
- Frequence telemetrie (par capteur) : [ ]
|
||
- Metriques a exposer (CPU, RAM, GPU, IP, batterie, etc.) : [ ]
|
||
- Politique de logs (format, rotation) : [ ]
|
||
|
||
## 3) Plan iteratif (prompts)
|
||
Prompt 1 :
|
||
"Genere l’architecture cible + conventions. Cree `docs/architecture.md` et `docs/topics.md`. Liste modules, flux, schemas de payload, et conventions de config."
|
||
- Fichiers : `docs/architecture.md`, `docs/topics.md`
|
||
- Checklist : schema topics, flux MQTT, decisions securite
|
||
- Sortie attendue : docs completes
|
||
|
||
Prompt 2 :
|
||
"Implemente le noyau MQTT + config + logs. Cree `src/app.py`, `src/config.py`, `src/logging.py`. Ajoute `configs/example.env`."
|
||
- Fichiers : `src/app.py`, `src/config.py`, `src/logging.py`, `configs/example.env`
|
||
- Checklist : connexion MQTT, LWT, logs JSON, chargement config
|
||
- Sortie attendue : demarrage local + doc config
|
||
|
||
Prompt 3 :
|
||
"Implemente le moteur de commandes avec allowlist. Cree `src/commands/` et `docs/commands.md`."
|
||
- Fichiers : `src/commands/__init__.py`, `src/commands/linux.py`, `docs/commands.md`
|
||
- Checklist : validation payload, allowlist, dry-run option
|
||
- Sortie attendue : commandes securisees + doc
|
||
|
||
Prompt 4 :
|
||
"Ajoute availability/LWT + heartbeat + etats. Etends `src/app.py` et `docs/topics.md`."
|
||
- Fichiers : `src/app.py`, `docs/topics.md`
|
||
- Checklist : LWT, availability topic, cadence heartbeat
|
||
- Sortie attendue : etats en retained
|
||
|
||
Prompt 5 :
|
||
"Ajoute autodiscovery Home Assistant (si demande). Cree `src/hass.py` et `docs/hass.md`."
|
||
- Fichiers : `src/hass.py`, `docs/hass.md`
|
||
- Checklist : discovery payloads, device_info, tests de base
|
||
- Sortie attendue : entites visibles dans HA
|
||
|
||
Prompt 6 :
|
||
"Packaging Windows (service/tache). Cree `docs/deploy_windows.md` et scripts."
|
||
- Fichiers : `docs/deploy_windows.md`, `scripts/install_windows.ps1`
|
||
- Checklist : lancement automatique, permissions, rollback
|
||
- Sortie attendue : procedure Windows claire
|
||
|
||
Prompt 7 :
|
||
"Packaging Linux (systemd). Cree `docs/deploy_linux.md`, `scripts/install_linux.sh`, `packaging/mqtt_pilot.service`."
|
||
- Fichiers : `docs/deploy_linux.md`, `scripts/install_linux.sh`, `packaging/mqtt_pilot.service`
|
||
- Checklist : user/service, restart policy, logs journald
|
||
- Sortie attendue : service systemd fonctionnel
|
||
|
||
Prompt 8 :
|
||
"Tests + harness MQTT + doc + exemples. Cree `tests/`, `scripts/mqtt_harness.py`, `docs/examples.md`."
|
||
- Fichiers : `tests/test_topics.py`, `scripts/mqtt_harness.py`, `docs/examples.md`
|
||
- Checklist : tests unitaires, exemples payload, validation topics
|
||
- Sortie attendue : test suite + exemples
|
||
|
||
## 4) Procedure de re-deploiement
|
||
- Strategie : nouveau dossier (V2) + migration progressive.
|
||
- Migration config : convertir valeurs hardcodees vers env/yaml.
|
||
- Compatibilite topics : versionner `pilot/v2` et garder mapping legacy.
|
||
- Rollback : conserver ancien service et bascule via systemd.
|