mirror of
https://github.com/deunix-educ/voice-assistant.git
synced 2026-10-13 00:11:57 +02:00
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:
@@ -0,0 +1,33 @@
|
||||
"""Aiguillage des commandes autorisées vers leur exécutant (étapes 11 et 15b)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
|
||||
from voice_server.home_control import HomeController
|
||||
from voice_server.machine_control import Command, MachineCommand, MachineController
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class CommandRouter:
|
||||
"""Domotique vers HomeController, machines vers MachineController."""
|
||||
|
||||
def __init__(self, home: HomeController | None, machines: MachineController | None) -> None:
|
||||
"""
|
||||
Args:
|
||||
home: domotique ; None si le serveur n'a pas de lien MQTT.
|
||||
machines: agents Linux ; None si le serveur n'a pas de lien MQTT.
|
||||
"""
|
||||
self._home = home
|
||||
self._machines = machines
|
||||
|
||||
def execute(self, board: str, command: Command, speaker: str | None, session: str) -> list[str]:
|
||||
"""Exécute la commande ; rend les destinations (journal, tests)."""
|
||||
if isinstance(command, MachineCommand):
|
||||
if self._machines is not None:
|
||||
return self._machines.execute(board, command, speaker, session)
|
||||
elif self._home is not None:
|
||||
return self._home.execute(board, command, speaker, session)
|
||||
logger.warning("%s : pas d'executant pour %s %s", board, command.action, command.device)
|
||||
return []
|
||||
Reference in New Issue
Block a user