Bonjour à toutes et tous,
J’espère ne pas vous encombrer avec ce partage, peut-être évident pour vous. Mais vu que j’ai pas mal galéré et que j’arrive, enfin, au résultat escompté, voici qui pourrais peut-être aider certains débutants tel que moi…
Mon projet est d’avoir une enceinte connectée 100% hors ligne (ok, c’est un oxymore).
Avec ce qu’il y a ci-dessous, vous pouvez avec des commandes vocales :
- Faire réciter du texte à votre Rpi (donne l’heure par exemple ou répond à des questions)
- Faire parler (morceau pré-établi) ou jouer de la musique le RPi, sans lecteur sous HA (pas réussi à configurer HA en container pour jouer de la musique, du coup Rhasspy s’en charge, en wav uniquement)
- Commander un appareil en Zwave
Matériel :
- PI3B+ (le dongle Aeotec Z-Wave USB Stick Gen5 ne fonctionne pas sous le PI4, il faut le savoir et j’ai passé un peu de temps à trouver l’info…).
- Dongle Aeotec Z-Wave USB Stick Gen5
- Prise Fibaro wall plug zwave
- Respeaker seed 4-mic : important pour la suite car les Respeaker ne fonctionnent pas avec l’add-on Rhasspy, et donc pas avec HA OS (ni supervised).
- Une enceinte publicitaire avec un raccordement au Rpi en Jack 3.5mm (je n’ai pas réussi à appairer en Bluetooth).
Installation:
Vu que j’ai commencé de… zéro (je me suis mis à linux et Python sur un vieil ordi lors du confinnement…), voici un lien qui m’a beaucoup aidé pour configurer le Rpi, le reSpeaker et Rhasspy : https://www.coxprod.org/domotique/
Les containers sont installés avec les commandes (exhaustives) : https://forum.hacf.fr/t/containers-docker/5980/34?u=damien
Pour les config, il faut installer l’intégration MQTT dans HA en plus de Mosquitto.
Les tutos vidéo décrivent relativement bien comment configurer Mosquitto, les tokens etc. (entre autre https://www.youtube.com/c/JournaldeThomas/videos.
J’ai eu des soucis également avec les networks de docker : mettre Rhasspy et Mosquitto dans Bridge d’une part et d’autre part HA et Zwavejs2mqtt dans le host.
Dernier point quand on est sur docker : installer Portainer…
Automatismes:
Je modifie les fichiers YAML (configuration et automation) grâce à Portainer et la commande en ligne dans le container que celui-ci propose (le -it de la commande en ligne docker n’est pas pratique pour moi).
automations.yaml
- id: '1630703484317'
alias: Reponse Rhasspy
description: ''
trigger:
- platform: event
event_type: rhasspy_GetTime
condition: []
action:
- service: rest_command.rhasspy_speak
data:
payload: '{% set response %} {% if now().hour > 12 %} {% set the_hours = now().hour
- 12 %} {% else %} {% set the_hours = now().hour %} {% endif %} il est {{
the_hours }} heure {{ now().minute }} {% endset %} {{ response }}'
mode: single
- id: '1636309029841'
alias: Commande prise
description: ''
trigger:
- platform: event
event_type: rhasspy_ChangePlugState
condition: []
action:
- type: toggle
device_id: 5005bc48143f66050ab8aed121055a4a
entity_id: switch.nodeid_3_switch
domain: switch
mode: single
- id: '1636909817124'
alias: Il est l or
description: ''
trigger:
- platform: event
event_type: rhasspy_GetTimePlus
condition: []
action:
- service: rest_command.rhasspy_play
data:
payload: /profiles/Media/monsignor.wav
mode: single
et le configuration.yaml
# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:
# Text to speech
tts:
- platform: google_translate
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
#Connexion Mosquitto
mqtt:
broker: 192.168.1.6
username: mqtt
password: *****votre config*******
rest_command:
rhasspy_speak:
url: 'http://192.168.1.6:12101/api/text-to-speech'
method: 'POST'
payload: '{{ payload }}'
content_type: text/plain
rhasspy_play:
url: 'http://192.168.1.6:12101/api/play-wav'
method: 'POST'
payload: '{{ payload }}'