Assistant vocal local ESP32 : étapes 1 à 15, et 15b écrite

État du projet au premier commit :
- firmware ESP32 : micro I2S, lecture anti-gigue, MQTT (état retenu, testament),
  mains libres, domotique de démonstration, chien de garde, présence du serveur ;
- serveur Python : sessions, VAD, faster-whisper, pyannote, identification,
  droits par profil, domotique, mot de réveil, Piper ;
- broker Mosquitto : configuration, comptes et ACL (non activés en développement) ;
- étape 15b écrite, en attente d'essai : agent MQTT pour machines Linux.

Étapes 1 à 15 validées. 203 tests, pyright sans erreur.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Denis Defolie
2026-09-30 17:40:55 +02:00
commit d20976fea2
108 changed files with 15022 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
# Agent de l'assistant vocal (étape 15b) : UNE machine Linux commandée par la voix.
#
# Installé par « make agent-install » dans /etc/voice-agent/agent.yaml (lisible par root
# seulement : il peut contenir un mot de passe MQTT). Après modification :
# sudo systemctl restart voice-agent
#
# L'agent n'exécute QUE les actions listées ici. Le serveur n'envoie qu'un nom
# d'action : il ne peut ni changer la commande, ni lui ajouter un argument.
# Nom de la machine pour l'assistant : topics agent/<id>/..., et même nom dans
# server/config.yaml (machines.list), où l'on dit comment on l'appelle à voix haute.
id: pc-bureau
mqtt:
host: 192.168.1.104 # adresse IP du broker
port: 1883
username: "" # compte MQTT (étape 15), nom = id ; vide : broker anonyme
password: ""
topic_prefix: agent
# true : l'agent journalise la commande sans l'exécuter. Pour les essais : on peut
# dire « éteins le PC du bureau » sans l'éteindre.
dry_run: false
# Nom de l'action (le serveur connaît ces noms : shutdown, reboot, lock ; « wake »
# est géré par le serveur) → commande, en LISTE : pas de shell, donc pas de « ; »,
# de « | » ni de « $( ) » possibles. Le service tourne en root.
actions:
shutdown:
command: [systemctl, poweroff]
reboot:
command: [systemctl, reboot]
lock:
command: [loginctl, lock-sessions] # verrouille les sessions graphiques ouvertes
# Action propre à cette machine : l'ajouter aussi dans server/config.yaml
# (machines.actions : mots et phrases) et, si besoin, dans access.rules.machine.
# backup:
# command: [/usr/local/bin/sauvegarde.sh]
# timeout_s: 3600