Assist Pipeline, event et WebSocket

Bonjour à tous !

Déjà, je tiens à saluer tout le monde, je viens (enfin) de m’inscrire.

Pour la petite présentation rapide, j’ai 41 ans, je suis utilisateur d’Home Assistant depuis 2 ans environ. Je suis developpeur de métier, ce qui fait que j’ai tendance à precher la bonne parole d’Home Assistant autour de moi, et que j’ai aussi tendance à finir par coder les scripts des gens :slight_smile:
Si je viens vers vous aujourd’hui, c’est pour essayer d’avoir une réponse sur une situation que je n’arrive pas à démeler.

Ma problématique

Je suis en train de développer une application mobile 3D qui se connecte à Home Assistant (par le WebSocket et l’API) pour gérer et m’enregistrer à tout un tas de choses (je n’en dis pas plus sur le projet pour l’instant tant que je n’ai pas dérisqué tous les élements dont j’ai besoin pour réaliser cette application).
Je reviendrai vers vous pour vous presenter ce « petit » projet quand il sera beaucoup plus concret.

Ma problématique du jour concerne l’utilisation, par le WebSocket de l’Assist Pipeline. Je suis vraiment ravi de cette nouveauté et elle sera au coeur de mon application.

Actuellement, j’ai tout un tas de connexions qui fonctionnent bien, que ce soit au niveau du WebSocket, de l’API, des events ou de la récupération de tous les élements dont j’ai besoin.
J’arrive à appeler des services, récuperer tout un tas de choses, m’abonner à des evenements…
Avant de venir vers vous, j’ai essayé tant bien que mal de trouver par moi-même mais vu l’ancienneté de cette fonctionnalité, autant dire qu’il n’y a pas grand chose.

Lorsque j’ai voulu utiliser l’assist pipeline par le WebSocket, je n’ai pas eu de soucis particulier pour communiquer les informations nécessaires pour « lancer » l’execution d’un pipeline.

Je me sers de cette documentation (aussi succincte soit elle) : https://developers.home-assistant.io/docs/voice/pipelines/

D’après cette documentation, je suis censé recevoir tout un tas d’events permettant de streamer les flux audio générés par le pipeline :
run-start, run-end, stt-start, etc… (la liste complète est toujours sur la même page).

Dans mes tests, j’arrive bien à formuler la demande d’execution du pipeline et tout fonctionne parfaitement avec par exemple cette demande :


{
  "type": "assist_pipeline/run",
  "start_stage": "intent",
  "end_stage": "intent",
  "input": {
    "text ": "Allume la lumière de la cuisine",
  }
}

Cependant, aucun event ne se declenche. Et ce même avec une demande d’envoi de flux audio SST de ce type :

{
  "type": "assist_pipeline/run",
  "start_stage": "sst",
  "end_stage": "tts",
  "input": {
    "sample_rate": 16000,
  }
}

D’après la documentation, le pipeline est censé déclencher ces events, en l’occurence avec ce test, un event de type « stt-start ».

Pour investiguer un peu plus, je suis evidemment passé par les outils de développements pour essayer d’« attraper » cet event, mais rien ne se declenche, même lorsque j’utilise l’assistant integré. Je precise que je n’ai aucun autre soucis pour ecouter et m’abonner aux autres evenements et que tout fonctionne parfaitement avec d’autres events que ceux de l’assist pipeline.
Toujours dans Home Assistant, je suis evidemment aller sur la console Debug de l’Assistant et je vois bien mes demandes arriver, mais elles tombent en erreur dès que je fais autre chose que de l’« intent »(ce qui est normal, car je n’ai pas envoyé de flux, vu que j’attend l’event pour commencer à l’envoyer).

Voila, avant de vous déranger, j’ai fait comme à mon habitude, j’ai essayé de trouver la solution par moi-même, mais là, j’avoue que je ne comprend pas.
J’ai essayé d’être le plus succinct possible pour cette explication.

Merci d’avance pour votre aide !

Ma configuration


version core-2023.8.2
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.11.4
os_name Linux
os_version 6.1.21-v8
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4996
Installed Version 1.32.1
Stage running
Available Repositories 1268
Downloaded Repositories 20
Home Assistant Cloud
logged_in true
subscription_expiration 25 août 2023 à 02:00
relayer_connected true
relayer_region eu-central-1
remote_enabled true
remote_connected true
alexa_enabled false
google_enabled true
remote_server eu-central-1-0.ui.nabu.casa
certificate_status ready
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 10.4
update_channel stable
supervisor_version supervisor-2023.08.1
agent_version 1.5.1
docker_version 23.0.6
disk_total 116.7 GB
disk_used 21.9 GB
healthy true
supported true
board rpi4-64
supervisor_api ok
version_api ok
installed_addons Samba share (10.0.2), MariaDB (2.6.1), File editor (5.6.0), Terminal & SSH (9.7.1), AirSend (1.0), ArgonOne Active Cooling (30a), Samba Backup (5.2.0), ESPHome (2023.7.1), Mosquitto broker (6.2.1)
Dashboards
dashboards 3
resources 23
views 26
mode storage
Recorder
oldest_recorder_run 6 août 2023 à 07:10
current_recorder_run 13 août 2023 à 07:40
estimated_db_size 487.22 MiB
database_engine mysql
database_version 10.6.12
Spotify api_endpoint_reachable | ok -- | --
2 « J'aime »

Je me permet de rajouter le lien de la discussion avec l’auteur de la DLL d’origine. Si d’autres personnes ont le même problème que moi, cela permettra d’aider un peu.

GitHub de l’auteur de la DLL

1 « J'aime »