Connecter enceinte bluetooth Sony HT-CT780 - TTS, Son, Parler, etc

Tags: #<Tag:0x00007f7536a65cb8> #<Tag:0x00007f7536a65bf0>

Bonjour à tou(te)s,

Je n’ai pas réussi à trouver de réponse, alors je vous pose ma question:

  • Est-il possible de relier une enceinte HT-CT780 Sony avec Jeedom ?
  • Et, plus généralement, une enceinte bluetooth « lambda » avec Jeedom ?

J’ai un Jeedom 4.20 DIY sur Rpi 4 avec une clef SENA UD100-G3 et le plugin BLEA d’actifs, pour gestion de présence avec des Nuts.
Le plugin BLEA détecte l’enceinte mais il n’est pas fait pour cela, impossible d’envoyer du son.

  • Est-ce possible d’utiliser le bluetooth en simultané, avec le plugin BLEA et un autre specifique pour enceinte bluetooth ?

Merci par avance :slight_smile:

PS: j’avais vu PulseAudio mais il est en Legacy, et je ne suis pas parvenu à le faire fonctionner sur Jeedom v4.1.20…

Bonjour à tou(te)s,

Comment faites-vous d’habitude pour relier une enceinte bluetooth à Jeedom ?
Possible avec le plugin BLEA actif ?

Merci :slight_smile:

PS: J’ai ce message en testant le scan de l’enceinte en mode apairage avec PulseAudio:

spawn bluetoothctl -a
bluetoothctl: option requires an argument -- 'a'
bluetoothctl ver 5.50
Usage:
bluetoothctl [options]
Options:
--agent 	Register agent handler: <capability>
--timeout 	Timeout in seconds for non-interactive mode
--version 	Display version
--help 		Display help
############################################################################
# Try to power on the Bluetooth device on controller 00:01:95:6D:94:93
############################################################################
send: spawn id exp3 not open
while executing
"send "select $port
""
(file "/var/www/html/plugins/pulseaudio/core/class/../../3rdparty/bluetooth-scan.sh" line 12)

Bonjour,

J’ai fini par jeter l’éponge sur cette idée.
- Pas mal de raisons à cela.

Testé uniquement en mode console (SSH) :
L’appairage : ok
La connexion : erreur (que l’on retrouve des 100ène de fois sur Internet)
Tuto : tous, non fonctionnels (dans l’idée, il faut normalement appairer et connecter)

J’ai, à force de tester TOUS ce qui était conseillé, fini par « truster » l’enceinte et la connexion était alors OK. Mais là, d’autres problèmes arrivaient, pas de son ect…
Tout y passe : correction d’une étape, blocage à l’étape suivante, tous les tutoriels tourne en rond (à les suivre à la lettre, cela ne fonctionne pas) (les distributions évolues, les packages aussi, pas souvent les tutoriels).

Tout cela, pour me faire un serveur LMS sur Raspberry Pi OS en voulant utiliser le Bluetooth (fonctionne très bien avec une enceinte connecté sur le port audio analogique).

J’ai fini par trouver une distribution qui le fait correctement (comme quoi, cela est possible :wink:
- pas certain que Linux se place toujours du coté de l’utilisateur !

Et en plus, il faudra faire avec les mises en veille de l’enceinte elle-même, c’est pas gagné au final, car tout n’est pas forcément gérable.

Tout dépend vraiment de l’usage voulu.

Je ne connais pas votre usage, mais s’il est possible de connecter cette enceinte en HDMI, il ne faut pas s’en priver !

1 J'aime

Je partage ton sentiment @Fabrice, je suis surpris que ce soit mission impossible, Jeedom est tellement ouvert en terme de protocoles, que j’étais surpris de bloquer sur du bluetooth « assez universel » à priori.

L’enceinte est très (très) loin de ma box DIY Jeedom (au tableau élec sous sol dans boitier rail DIN) et je n’ai évidemment pas pensé à tirer un HDMI jusqu’au tableau élec. du garage lors de ma rénovation…

Par contre j’ai tiré des câbles basse tension audio, peut-être que je finirai par connecter l’enceinte sur lentrée AUX via jack qu’il sera facile d’emmener au tableau élec.

C’est dommage qu’il n’y ait pas de plugin simple d’usage pour faire tourner une enceinte bluetooth avec Jeedom, de ce que je comprends ?

J’ai même tenté de soumettre justement, une idée de plugin pour cela :
Plugin pour écouter des Webradio / musique - Plugins / Suggestions de Plugins - Communauté Jeedom

Il ne faut pas oublié que tout va aussi dépendre de l’enceinte. J’en ai qui autorise 2 usages (connexion) simultanément, c’est plutôt pratique. Mais d’autre, si je souhaites l’utiliser avec mon Smartphone par exemple, elle se déconnecte sur Raspberry, il faut alors retourner sur l’interface pour la reconnecter (et ça… c’est pas forcément simple tout le temps, cela passe par le redémarrage de service le plus souvent).

Donc, même si cela semble fonctionner un temps, en poussant l’usage, cela finissait par poser des problème.

J’ai remarqué sur Linux c’était bien pour savoir combien il y a eu de secondes depuis le 1er janvier 1970, mais pour le reste, c’est quand même bien compliqué :slight_smile:

Par contre, si tu as un Pi ou un Debian à proximité de ton enceinte, alors le plugin PlayTTS permet de créer des « satellites » (comme BLEA et ses antennes) et cela fonctionne bien.

Oui, c’est possible. J’ai réussi à envoyer en BlueTooth une musique depuis le RPi4 sur une enceinte BT à 15€ du supermarché ! :grinning:

Je vous raconte mes galères.

Pré-requis ou pas

Echec #0 : le plugin BLEA ne détecte pas mon enceinte BT
Solution : ne pas utiliser ce plugin

PAS besoin de modifier le fichier /boot/config.txt en rajoutant à la fin dtoverlay=miniuart-bt
Vérifier dans ce fichier si la ligne dtoverlay=disable-bt est bien commentée avec un # ou inexistante
Donc, rien à bidouiller dans ce fichier

Pour éviter l’échec #1, j’ai dû tout mettre à jour (voir plus bas)

sudo apt update
sudo apt upgrade

Installation des outils bluetooth. Vous pouvez, en fonction de votre système, essayer une seule des 2 lignes, je ne connais pas la différence.

sudo apt install bluetooth
sudo apt install pi-bluetooth

Mon échec #3 était du à l’incompatibilité de pulseaudio et bluealsa ensemble.
Essayer de NE PAS installer les paquets pulseaudio et pulseaudio-utils avec cette commande

sudo apt install pulseaudio pulseaudio-utils

Ce qui est sûr, le paquet pulseaudio-module-bluetooth est incompatible avec bluealsa.
Donc, NE PAS faire ce qui suit

sudo apt install pulseaudio-module-bluetooth

AH, si connaissait les c_ns qui m’ont fait installer ça !!!

Installation de BlueALSA
sudo apt install bluealsa

Vérification des daemons bluetooth et bluealsa

systemctl status bluetooth.service
systemctl status bluealsa.service

Vérification que le BlueTooth ne soit pas bloqué avec la commande rfkill qui doit retourner quelque chose comme ceci

ID TYPE      DEVICE      SOFT      HARD
 0 wlan      phy0   unblocked unblocked
 1 bluetooth hci0   unblocked unblocked

Activation du contrôleur BlueTooth

sudo systemctl enable hciuart
sudo systemctl start hciuart
sudo hciconfig hci0 down
sudo hciconfig hci0 up

Vérification avec la commande hciconfig ou hciconfig -a

hci0:   Type: Primary  Bus: UART
        BD Address: DC:BA:12:34:56:FE  ACL MTU: 1021:8  SCO MTU: 64:1
        UP RUNNING PSCAN
        RX bytes:330330 acl:232 sco:0 events:40364 errors:0
        TX bytes:50909876 acl:80165 sco:0 commands:189 errors:0

Scan optionnel des appareils BlueTooth avec la commande hcitool scan

Scanning ...
    12:34:56:78:90:12   Mon_Enceinte

Super, mon enceinte est détectée !

Pour éviter l’échec #2, rajouter l’utilisateur pi au groupe lp (voir plus bas)

sudo usermod -a -G lp pi

Redémarrer et ne pas hésiter à relancer les commandes précédentes pour vérifier que tout se relance correctement après le redémarrage.

Configuration du BlueTooth

sudo bluetoothct

Une fois dans le programme [bluetooth]#, entrer les commandes suivantes

power on
agent on

Vérification du contrôleur et de ses options avec la commande list et show

Controller DC:BA:12:34:56:FE MonJeedom [default]

Et les trucs intéressants

	Powered: yes
	Discoverable: no
	Pairable: yes
	Discovering: no

Lancer le scan avec la commande scan on

Echec #1 : bluetoothct ne trouve rien alors que hcitool voit bien mes appareils BT
Solution : tout mettre à jour avant de commencer, la base quoi !

Puis arrêter le scan lorsqu’il a trouvé les appareils avec la commande scan off

Ensuite, la commande devices affiche ce qu’il a trouvé

Device 12:34:56:78:90:12 Mon_Enceinte

Super, c’est comme hcitool scan ! :grinning:
Ensuite, on appaire l’équipement BT, on fait confiance et on connecte

pair 12:34:56:78:90:12
trust 12:34:56:78:90:12
connect 12:34:56:78:90:12

Là, généralement, ça pue !

Oui, impossible de connecter.

Echec #2 : « Failed to connect: org.bluez.Error.Failed »
Solution : rajouter l’utilisateur pi au groupe lp
Merci à https://wiretuts.com/connecting-bluetooth-audio-device-to-raspberry-pi

LA précieuse commande qui aide au débug info 12:34:56:78:90:12

Paired: yes
Trusted: yes
Blocked: no
Connected: yes
LegacyPairing: no

Le Connected: yes c’est comme une médaille. :laughing:
En plus, l’enceinte se connecte toute seule dès que je l’allume, c’est magnifique !

Pour se connecter/déconnecter plus rapidement sans rentrer dans bluetoothctl

echo -e "connect 12:34:56:78:90:12" | bluetoothctl
echo -e "info 12:34:56:78:90:12" | bluetoothctl
echo -e "disconnect 12:34:56:78:90:12" | bluetoothctl

Vérification de la carte son BlueALSA avec la commande alsamixer -D bluealsa

Echec #3 : erreur incompréhensible avec PulseAudio
Solution : installer BlueALSA et non pas les trucs PulseAudio

Si tout va bien, on obtien ceci
bluealsa_plugin

Lecture d’un fichier audio au format PCM (.wav) pour l’envoyer sur la carte son BlueALSA.

aplay -D bluealsa:HCI=hci0,DEV=12:34:56:78:90:12,PROFILE=a2dp mon_fichier_audio.wav

Ça marche pas ! Erreur de m_rd_ !

Echec #4 : erreur incompréhensible avec HCI
Solution : il faut trouver la bonne syntaxe dans le bon tuto !

Finalement, la bonne commande, c’est

aplay -D bluealsa:SRV=org.bluealsa,DEV=12:34:56:78:90:12,PROFILE=a2dp mon_fichier_audio.wav

Lorsque j’ai ententu ma chanson pour la première fois sur mon enceinte, je me suis senti tout puissant ! :rofl:

Playing WAVE 'mon_fichier_audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

Une fois que ça fonctionne bien en SSH, on peut passer côté Jeedom.

Avec le plugin Script, j’ai créé un équipement comme ceci
image

Avec 3 commandes
image

Donc 3 scripts

  1. /var/www/html/plugins/script/data/bt_play.sh
#!/bin/bash
aplay -D bluealsa:SRV=org.bluealsa,DEV=12:34:56:78:90:12,PROFILE=a2dp $1
  1. /var/www/html/plugins/script/data/bt_connect.sh
#!/bin/bash
echo -e "connect 14:05:47:38:50:14" | sudo bluetoothctl > /dev/null 2>&1
  1. /var/www/html/plugins/script/data/bt_disconnect.sh
#!/bin/bash
echo -e "disconnect 14:05:47:38:50:14" | sudo bluetoothctl > /dev/null 2>&1

Voilà, ça fonctionne, mais il faut bien attendre que le fichier audio soit entièrement lu avant d’en lire un autre (pas de possible de couper en flux en cours). Pour envoyer des notifications vocales assez rapprochées, ça pourrait être problématique ! Il faudrait être capable de pouvoir lire plusieurs fichiers audio en même temps et d’envoyer le flux total.

Ouais, elle se met en veille 5 minute après !
Une idée serait d’envoyer un flux audio en continu.

Avec Linux, il m’a fallu 6h pour envoyer du son sur une enceinte BlueTooth ! :upside_down_face:
Si tu n’as pas X heures devant toi, tu ne te lances pas là dedans !

Et après tout ça (oui, on réfléchit toujours mieux après), je pense qu’il y a peut-être plus simple : acheter un dongle BlueTooth (audio seulement) https://www.amazon.fr/gp/product/B088LNPXNN qui fait carte son USB et envoyer tous les sons sur cette carte.

PlayTTS

3 J'aimes

Quel courage ! Bravo @Domatizer :slight_smile: Ça me rappelle mes galères avec ma clef GSM Huawei :wink:

Quelques questions:

  • Utilises-tu le plugin BLEA avec des Nuts par exemple en même temps que ton enceinte ?

  • quelle est ta config hardware ? Raspberry + Bluetooth interne ?

Merci.

En fait, ça fait 1 an que j’avais en tête cette idée de faire parler Jeedom dans une enceinte Bluetooth quelconque, mais pour franchir le pas, je n’avais pas lever la jambe assez haut ! :grin:

Non, je n’ai pas de NUT et je ne sais pas si les 2 ensembles peuvent fonctionner.

Raspberry Pi 4 v1.1 + bluetooth interne
Linux Jeedom 5.10.17-v7l+ #1414 SMP Fri Apr 30 13:20:47 BST 2021 armv7l GNU/Linux

Remarque, le Bluetooth interne fonctionne avec ce gros radiateur https://www.amazon.fr/gp/product/B084S4CFCK

Quand on voit ce que Jeedom sait faire en « natif », cela me surprend encore que lui joindre une enceinte Bluetooth lambda soit aussi complexe…

Merci pour tes précisions de config.
Je gère la présence avec le plugin BLEA + clef Bluetooth SENA et c’est important dans mon installation, il faudrait que j’essaye à l’occasion.

Je sens que ça va se finir en tirant un cable jack de la sortie audio du Pi à l’enceinte :wink:

Ou avec un dongle BlueTooth USB qui est vu comme une carte son par le système. https://www.amazon.fr/dp/B0881X4MB2 Ainsi, on sélectionne une bonne fois pour toute la carte son USB et tout sort en BlueTooth vers l’enceinte. C’est ce que je comptais acheter pour mon Laptop (sous Linux également) pour éviter les bidouilles et avoir la version 5.0

Avec le plugin PlayTTS, je n’arrive toujours pas à faire sortir le son en BlueTooth, ça passe par le truc général Pulse Audio et ça sort par le Jack :wink:

1 J'aime

Oui, dans mon cas cela ferait encore ajouter une clef USB à 40-50€ sur une config qui ressemble deja bcp à une usine à gaz :joy: (Z-wave Aeotec, RFXcomXL, SENA BT, GSM Huawei…)

Oui pour moi PulseAudio est un grand mystère… Rien compris à son fonctionnement, semble assez vieux et non maintenu…

C’est aussi pour cela que je songeais sérieusement au jack filaire… sortie native et éviter d’éventuelles latences avec un son par les ondes…

Oui, de toute façon, en domotique, il faut un hub 10 USB et une clé par protocole. Au final, ça prend une place énorme et plein de filasse pour du sans fil :smiley:

1 J'aime

:sweat_smile:

Yop,

J’utilise la sortie Jack 3.5 native (aussi bien sur Pi3B+ que maintenant sur le Pi4B) et le son est plus que correct, rien à redire.
PlayTTS, pas de configuration particulière à faire.

1 J'aime

Merci @Fabrice, ça me conforté dans l’idée… :wink:

Et en plus… Playtts permet de créer des lecteurs déportés, comme blea et ses antennes.

La suite avec PlayTTS

aplay, c’est bien mais PlayTTS s’appuie sur mplayer
J’ai galéré (comme à chaque fois) pour que mplayer utilise la sortie BT

Il faut créer un fichier de conf /etc/asound.conf

sudo nano /etc/asound.conf

Et on copie dedans

pcm.bt_speaker {
        type plug
        slave.pcm {
                type bluealsa
                device "12:34:56:78:90:12"
                profile "a2dp"
        }
       hint {
            show on
            description "Mon enceinte BT"
        }
}

ctl.bt_speaker {
        type bluealsa
}

Vous pouvez bien sûr changer le non « bt_speaker », il faut juste que ce soit cohérent partout.

Vérification avec la commande aplay -L
La configuration créée « bt_speaker » doit apparaitre dans la liste

bt_speaker
    Mon enceinte BT

Lecture du fichier audio avec MPlayer en sélectionnant la bonne sortie « bt_speaker »

mplayer -ao alsa:device=bt_speaker mon_fichier_audio.wav

Maintenant, dans la configuration du plugin PlayTTS, on rajoute la bonne option pour mplayer
image

Et enfin :champagne:
image

Méthode avec PulseAudio au lieu de BlueALSA

Pour info, j’ai investigué aussi la méthode en installant le module BlueTooth de Pulse à la place de BlueALSA.

sudo apt install pulseaudio-module-bluetooth

Bien sûr BlueALSA est supprimé.
Redémarrage du BlueTooth et de Pulse

sudo systemctl restart bluetooth.service
sudo killall pulseaudio
pulseaudio --start

On connecte l’enceinte (voir post précédent)

Si tout va bien, la commande pactl list sinks short devrait retourner une ligne avec bluez_sink.xx_xx_xx_xx_xx_xx.a2dp_sink

0	alsa_output.platform-bcm2835_audio.analog-stereo	module-alsa-card.c	s16le 2ch 44100Hz	SUSPENDED
1	bluez_sink.12_34_56_78_90_12.a2dp_sink	module-bluez5-device.c	s16le 2ch 48000Hz	SUSPENDED

La commande version Pulse devient

mplayer -ao pulse::bluez_sink.12_34_56_78_90_12.a2dp_sink /chemin/de/mon_fichier_audio.mp3

Dans PlayTTS, il suffit de changer l’option pour mplayer avec
-ao pulse::bluez_sink.12_34_56_78_90_12.a2dp_sink

Echec #5 : mplayer fonctionne en SSH, le script Jeedom fonctionne en SSH
Mais ni le plugin PlayTTS ni le script via le plugin Script ne fonctionnent dans Jeedom
Solution : pas encore trouvé

En effet, dans le log http.error, j’ai la même erreur que @betux ici Problème de droit avec Pulse audio

AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'
Could not open/initialize audio device -> no sound.

J’ai fouillé dans l’ancien forum https://forum.jeedom.com/viewtopic.php?f=142&t=19082&sid=c917417982a1d4f253ebcbaea56791a3&start=340

Il y a un problème de droits quelque part… En vain.

Avantage de la solution Pulse
On pourrait jouer plusieurs fichiers audio en simultané, c’est le flux global qui est envoyé vers la sortie BlueTooth (comme pour le Jack)

1 J'aime

Bonjour,

merci pour les informations.
Je confirme, il est possible de connecter une enceinte Bluetooth avec un peu de travail. J’ai une clé Bluetooth 4.0 (j’avais commandé sur domadoo réf. JEEDOM_USBBT) : la portée est bonne (autre pièce) vers mes enceintes Bluetooth (2 systèmes différents). Je me sers également de la clé Bluetooth pour piloter 2 Jardibric BL-PNR dans le jardin (avec BLEA). J’ai donc abandonné pulseaudio et suis parti avec Bluealsa.

Bluealsa non disponible pour une architecture 64 bits (j’ai une jeedom Smart avec Debian 9 stretch) , j’ai donc compilé en m’inspirant de ce post :
https://forum.armbian.com/topic/6480-bluealsa-bluetooth-audio-using-alsa-not-pulseaudio/
puis suivi la procédure en bas pour installer.

J’ai installé alsa-utils, aplay et mpg123 puis j’ai ajouté une interface sur le dashboard Jeedom pour connecter/déconnecter un système d’enceinte, choisir le système d’enceinte + musique, jouer, stop… (à base de script Bash et virtuel pour créer des listes déroulantes).
J’ai également ajouté PlayTTS : le son part sur l’enceinte par défaut.

J’ai perdu un peu de temps en voulant essayer avec bluealsa-aplay mais ça ne fonctionne pas comme expliqué dans le post armbian. Je suis donc reparti sur aplay et mpg123.

J’ai passé un peu de temps sur un problème de droits :
Bluealsa est prévu pour être utilisé par défaut avec root. Il faut modifier le fichier /etc/dbus-1/system.d/bluetooth.conf pour autoriser un autre utilisateur. Sur ma box Jeedom, l’utilisateur www-data (voir plugin jeedom Script) ne pouvait pas exécuter les scripts bash que j’avais testés en root, j’ai donc ajouté les balises allow own=« org.bluealsa » et allow send_destination=« org.bluealsa » pour le groupe bluetooth. J’ai ajouté www-data au groupe bluetooth.

Ça fonctionne et en bonus, en parallèle du plugin BLEA :grinning: (alors que pulseaudio et BLEA :frowning_face:)

Pour moi, les principaux intérêts d’envoyer du son de Jeedom vers enceinte par Bluetooth:

  • utilisation du matériel disponible sans acheter nouveau matériel (enceinte Bluetooth, clé Bluetooth Jeedom)
  • synchroniser son et lumière pour créer des effets (scénarios)
  • jeedom peut parler (TTS) et si l’enceinte est portable, on peut déplacer où on veut sans fil.
  • pas besoin d’un laptop ou autre pour envoyer du son sur les enceintes en Bluetooth (Jeedom connectée 24h/24)
  • je ne voulais pas passer par le wifi, ethernet, dlna…
2 J'aimes

Merci @marcoo77 pour ton partage :wink:

Je te rejoins sur les avantages qui m’avaient poussé à tester.
C’est quand même pas évident au 1er abord…

1 J'aime

Quel est la fréquence d’échange d’info ?
Avec des Nuts en BLEA, c’est +/- 30 secondes. J’ai peur que ça ne marche pas avec une enceinte qui doit streamer…