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>
6.1 KiB
PROMPT CODEX — Redev V2 : Agent MQTT de pilotage PC + Analyse V1
0) Rôle et objectif
Tu es Codex, expert senior Python / Windows+Linux / MQTT / packaging / sécurité. Tu dois analyser un projet existant (application de pilotage d’un ordinateur via messages MQTT), en comprendre l’architecture et produire une documentation d’état des lieux.
Ensuite, tu dois préparer une méthode de re-développement / re-déploiement sous forme de consignes de prompts (itératives), afin que l’utilisateur puisse compléter les besoins supplémentaires avant de lancer l’implémentation.
Contraintes :
- Ne modifie rien tant que l’analyse n’est pas terminée.
- Sois factuel : si une info n’est pas trouvée dans le projet, indique “Non trouvé”.
- Structure claire, utilisable comme base de refonte.
Livrables attendus :
analyse_version_1.md(créé à la racine du repo)prompt_method_redev.md(créé à la racine du repo)
1) Étape A — Scan & compréhension du projet
1.1 Cartographie
- Liste l’arborescence (équivalent
tree -a -I "node_modules|.git|__pycache__|dist|build"). - Identifie :
- langage(s), frameworks, dépendances
- points d’entrée (main, service, CLI, daemon)
- modules clés (mqtt, commandes système, sécurité, config, logs, UI éventuelle)
1.2 Exécution et cycle de vie
Déduis et documente :
- comment l’app se lance (commande, service systemd, tâche planifiée Windows, docker ?)
- comment elle s’arrête proprement
- gestion de l’état (retained, availability, LWT, reconnexion, QoS)
- compatibilité OS (Windows/Linux), permissions nécessaires
1.3 MQTT : topics & payloads
Reconstitue précisément (si présent) :
- broker, auth (user/pass, TLS), client_id
- topics (commandes / état / availability / logs / télémétrie)
- structure des messages (JSON ? champs, valeurs possibles)
- mapping “topic → action exécutée”
- sécurité : validation d’input, allowlist, anti-injection
1.4 Configuration
- Où sont les configs ? (
.env, yaml, json, ini, registry, args CLI) - paramètres supportés, valeurs par défaut, variables d’environnement
- secrets : comment sont-ils stockés ?
1.5 Dépendances & packaging
requirements.txt,pyproject.toml,package.json, etc.- version Python/Node/Go
- build : exe (pyinstaller), wheel, docker image, service
- fichiers docs existants (README, CHANGELOG, etc.)
1.6 Journalisation & observabilité
- logs (format, rotation)
- niveaux de logs
- métriques éventuelles
- gestion erreurs / retries / backoff
2) Étape B — Générer analyse_version_1.md
Crée un fichier analyse_version_1.md structuré comme suit (remplis avec ce que tu trouves) :
2.1 Résumé exécutif
- Objectif de l’app
- OS supportés
- Dépendances majeures
- Mode d’exécution (service/cli/etc.)
2.2 Architecture
- Diagramme textuel (ASCII) des composants
- Points d’entrée, modules, flux de données
2.3 MQTT
2.3.1 Connexion
- Broker, auth, TLS, client_id, keepalive, LWT
2.3.2 Topics
- Tableau : Topic | Direction (in/out) | QoS | Retain | Payload | Action/usage
2.3.3 Commandes supportées
- Liste exhaustive + exemples de payloads si trouvés
2.4 Commandes système exécutées
- actions (shutdown/reboot/sleep/commands) + méthode utilisée
- risques sécurité + mitigations actuelles
2.5 Configuration
- sources (env/files/args)
- paramètres et defaults (tableau)
2.6 Stockage / état
- fichiers, DB, mémoire, cache
- persistence (oui/non)
2.7 Déploiement actuel
- comment installer
- comment lancer
- comment update
- comment rollback
2.8 Points faibles / dettes techniques
- liste priorisée (P0/P1/P2)
- éléments manquants / non trouvés
2.9 Suggestions de refonte (sans coder)
- “quick wins”
- architecture cible probable (optionnelle)
- axes sécurité
3) Étape C — Générer prompt_method_redev.md (méthode de redev)
Crée un fichier prompt_method_redev.md qui explique comment on va re-développer en itérations, sous forme de “prompts à donner à Codex”, avec checkpoints.
Format attendu :
Méthode de re-développement / re-déploiement (V2)
1) Pré-requis
- outils, versions, conventions repo, structure attendue
2) Liste des informations que l’utilisateur doit compléter
Crée une section “À compléter par l’utilisateur” avec des champs vides, par exemple :
- OS cibles : [ ]
- Broker MQTT : [ ]
- Auth/TLS : [ ]
- Liste commandes à supporter : [ ]
- Politique de sécurité (allowlist, signature, ACL broker) : [ ]
- Packaging désiré (exe windows, systemd linux, docker) : [ ]
- Intégration Home Assistant autodiscovery : [oui/non] + détails : [ ]
- Availability / birth / will : [ ]
- Fréquence télémétrie : [ ]
- etc.
3) Plan itératif (prompts)
Donne une séquence de prompts “copier-coller” :
- Prompt 1 : “Génère l’architecture cible + conventions”
- Prompt 2 : “Implémente le noyau MQTT + config + logs”
- Prompt 3 : “Implémente le moteur de commandes avec allowlist”
- Prompt 4 : “Ajoute availability/LWT + heartbeat”
- Prompt 5 : “Ajoute autodiscovery Home Assistant (si demandé)”
- Prompt 6 : “Packaging Windows (service/tâche)”
- Prompt 7 : “Packaging Linux (systemd)”
- Prompt 8 : “Tests + harness MQTT + doc + exemples”
Chaque prompt doit :
- préciser les fichiers à créer/modifier
- imposer une checklist de validation (tests, lint, doc)
- définir une sortie attendue (ex:
docs/deploy_windows.md,docker-compose.yml, etc.)
4) Procédure de re-déploiement
- stratégie : in-place vs nouveau dossier
- migration config
- compatibilité topics (versioning)
- rollback
4) Règles de sortie
- Crée uniquement les 2 fichiers demandés.
- Si tu dois exécuter des commandes pour comprendre (ex: grep), fais-le localement dans ton environnement.
- Termine en affichant :
- un résumé de 10 lignes
- le chemin des fichiers créés
- 5 questions “À compléter par l’utilisateur” (copiées depuis la section correspondante)
5) Action immédiate
Commence maintenant l’analyse du projet présent dans le dossier courant.