Skip to content

Ajouter les gestes configurables des satellites audio - #22

Merged
lfpoulain merged 1 commit into
lfpoulain:betafrom
IM-Lab-france:codex/satellite-gestures
Nov 9, 2026
Merged

lfpoulain merged 1 commit into
lfpoulain:betafrom
IM-Lab-france:codex/satellite-gestures

Conversation

@IM-Lab-france

@IM-Lab-france IM-Lab-france commented Nov 3, 2026 •

Copy link
Copy Markdown

Les satellites équipés d’un PAJ7620 peuvent associer sept gestes au volume, à la veilleuse, à la coupure du micro, à l’arrêt de leur conversation ou aux équipements Home Assistant explicitement sélectionnés. Les commandes gestuelles sont désactivées par défaut.

  • Le serveur reconnaît gestures et mic_toggle dans hello.features. Il demande uniquement la coupure du micro, que l’utilisateur peut rouvrir au bouton physique.
  • Le volume passe par settings. Un geste d’arrêt publie le nouvel état de session.
  • Le catalogue Home Assistant est lu une fois par requête. L’interface interroge les réglages quand la section des gestes est ouverte.
  • La migration préserve les réglages des anciennes versions expérimentales et ajoute les tables attendues par beta. Le protocole et le changelog sont documentés.

Validation après rebase : compilation TypeScript et Vite, 51 tests ciblés et un parcours Chromium réussis. La flotte mixte, la reconnexion sans capacités, la coupure du micro et la migration d’une base expérimentale sont couvertes.

Firmware associé dans la PR Cornelius Satellite #2.

@lfpoulain

Copy link
Copy Markdown
Owner

Merci pour cette PR, très complète. Côté serveur, tout est couvert et testé : commandes désactivées par défaut, lampes limitées aux entités light et switch choisies par satellite, anciens firmwares acceptés. tsc et les 35 tests ciblés passent contre main.

Procédure

La PR vise main, alors que beta est en avance de plusieurs commits et que la 0.3.0 vient d'être publiée. Pourriez-vous la rebaser sur beta et changer la base de la PR ? Les conflits seront mécaniques (server/satellites.ts, server/storage.ts, tests/satellites.test.ts, CHANGELOG.md). Attention, #34 (le bouton ferme la conversation) et #38 (volume à la voix) sont maintenant dans beta et touchent le même gestionnaire de messages.

À corriger

  1. Doc et CHANGELOG absents. Les nouveaux champs hello.gestures et hello.micToggle et les messages gesture et mute ne sont pas décrits dans docs/developpement/satellites-protocole.md. CONTRIBUTING.md demande la doc et le CHANGELOG.
  2. Convention de capacités. Sur beta, un ajout compatible s'annonce dans hello.features (par exemple ["ring"], et welcome.features pour session_end). Ici, ce sont des booléens. Il faudrait annoncer ["gestures", "mic_toggle"], avec le changement correspondant dans le firmware (cornelius-satellite feat(camera): utiliser facultativement la caméra du navigateur #2).
  3. Performance de GET /api/admin/satellites/:id/gestures (server/satellite-gestures.ts) : le .filter(...) appelle this.deps.home.view() pour chaque entité, et view() reconstruit et trie tout le catalogue à chaque appel. Environ 500 ms de CPU synchrone par requête à 1500 entités, et le composant SatelliteGestureSettings.tsx interroge cette route toutes les 2 s, même <details> replié, pour chaque satellite. Un seul appel à view() règle le problème.

À trancher ou à vérifier

  • Domaine switch : l'interface parle de « lampes », mais n'importe quelle prise peut être associée. Voulu ?
  • Réglage « réservé aux personnes reconnues » : les gestes le contournent, par conception (« sans conversation ni caméra »). Nous voulons le confirmer côté mainteneurs.
  • Capacité mute : hub.mute() envoie mute sans vérifier micToggle, contrairement à toggleMic.
  • Geste « stop » : controller.close(...) sans controller.publish(), alors que Satellite : fermer la conversation au bouton #34 publie pour le bouton.
  • Retour de volume : hub.refresh() envoie déjà settings, puis volumeFeedback envoie le message volume (déprécié sur beta). Le firmware applique le changement deux fois.
  • Nettoyage : satelliteGesturesMigration est exporté mais inutilisé (storage.ts redéfinit le SQL), la map last n'est jamais purgée à la suppression d'un satellite, et config() ne valide pas la structure du JSON lu.

@lfpoulain lfpoulain added satellites Satellites audio ESP32 et leur protocole modifications demandées Relue : des corrections sont attendues avant la fusion à rebaser À mettre à jour depuis la branche beta labels Nov 9, 2026
@IM-Lab-france
IM-Lab-france force-pushed the codex/satellite-gestures branch from 46bd238 to 488f99c Compare November 9, 2026 16:56
@IM-Lab-france
IM-Lab-france changed the base branch from main to beta November 9, 2026 16:56
@lfpoulain
lfpoulain merged commit fa309ae into lfpoulain:beta Nov 9, 2026
@lfpoulain

Copy link
Copy Markdown
Owner

Merci, fusionnée dans beta avec le firmware (cornelius-satellite #1 et #2). Il reste la doc du protocole à compléter, dans une petite PR : les messages gesture et mute dans les tableaux de docs/developpement/satellites-protocole.md, gestures et mic_toggle dans la description de features, la liste des 7 gestes, et une mention dans docs/fonctionnalites/satellites.md.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

modifications demandées Relue : des corrections sont attendues avant la fusion à rebaser À mettre à jour depuis la branche beta satellites Satellites audio ESP32 et leur protocole

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants