Aucun risque entre le bluetooth et domoticz.
Je te confirme avoir passé bien plus de temps pour la config bluetooth permanente ainsi qu'une reconnexion au démarrage que pour le script
vocale.
Voici le bout de code pour une connection auto du bluetooth :
Code : Tout sélectionner
echo "connect 78:44:05:5F:8A:AF" | bluetoothctl
sleep 5
pacmd set-default-sink bluez_sink.78_44_05_5F_8A_AF
Le mieux est de faire un appareillage manuel puis une fois fait, tu peux te reconnecter facilement. Remplace la MAC adresse par celle de ton enceinte.
la dernière ligne permet de définir la sortie bluetooth par défaut dans pulseaudio.
Pour la partie
vocale, je génère un fichier texte avec les infos dont j'ai besoin que je synthétise avec google, puis je lis le fichier wav dans ma sortie bluetooth.
Il y a surement des améliorations à effectuer mais j'ai pas trouver mieux. J'ai donc 3 scripts :
- Génération du texte de l'
annonce
- Envoi à google du texte pour récupérer un wave
- Lecture du wav
Voici le bloc de génération de mon
annonce :
Code : Tout sélectionner
#!/bin/bash
##Script de génération de texte lisible par TTS
#Fichier de sortie texte
data='/home/pi/domoticz/scripts/bash/data.txt'
#Suppression du fichier existant
su - pi -c 'rm "'${data}'"'
su - pi -c 'touch "'${data}'"'
#Intro, Date, Heure, Saint du jour
echo 'Bonjour Monsieur, nous somme le ' $(date | cut -d"," -f1) ' et il est '$(date +%H)' heure '$(date +%M)'.' >> $data
echo "Nous fétons aujourd'hui les " $(curl -s "http://domogeek.entropialux.com/feastedsaint/now" | sed 's/,/, /g')'.' >> $data
#Météo du jour
#meteo=$(curl -s "http://api.openweathermap.org/data/2.5/weather?q=cagnes-sur-mer,france&lang=fr&units=metric&appid=CLE_API" | jq -r '.weather[0].description')
#temp_max=$(curl -s "http://api.openweathermap.org/data/2.5/weather?q=cagnes-sur-mer,france&lang=fr&units=metric&appid=CLE_API" | jq -r '.main.temp_max')
echo "Au niveau de la météo voici les infos :" >> $data
#echo "Aujourd hui le temps est" $meteo", avec une température maximum de" $temp_max>> $data
echo $(curl -s "http://api.wunderground.com/api/CLE_API/forecast/lang:FR/q/France/Cagnes-sur-mer.json" | jq -r '.forecast.txt_forecast.forecastday[0].fcttext_metric' | cut -d'.' -f1,2,4) ".">> $data
#Test si vacance scolaire
if (curl -s http://domogeek.entropialux.com/schoolholiday/B/now | grep True) then
echo "C'est les vacances, la route sera tranquille." >> $data
fi
#Test si c'est Mercredi
if [ $(date +%A) = "mercredi" ]; then
echo "C'est mercredi la route devrait être plus tranquille." >> $data
fi
#Test si c'est le weekend ce soir
if [ $(date +%A) = "vendredi" ]; then
echo "Courage ce soir c'est le weekend." >> $data
fi
#Test si c'est férié le lendemain
if (curl -s http://domogeek.entropialux.com/holiday/tomorrow | grep True) then
echo "Relax, demain c'est férié." >> $data
fi
#cat $data
su - pi -c '/home/pi/domoticz/scripts/bash/speech.sh "$(cat '${data}')"'
A modifier avec ton adresse pour la météo.
Puis le script qui permet de récupérer le wave auprès de google car google limire le nombre de caractère :
Code : Tout sélectionner
#!/bin/bash
#################################
# Speech Script by Dan Fountain #
# TalkToDanF@gmail.com #
#################################
INPUT=$*
STRINGNUM=0
ary=($INPUT)
echo "---------------------------"
echo "Speech Script by Dan Fountain"
echo "TalkToDanF@gmail.com"
echo "---------------------------"
for key in "${!ary[@]}"
do
SHORTTMP[$STRINGNUM]="${SHORTTMP[$STRINGNUM]} ${ary[$key]}"
LENGTH=$(echo ${#SHORTTMP[$STRINGNUM]})
#echo "word:$key, ${ary[$key]}"
#echo "adding to: $STRINGNUM"
if [[ "$LENGTH" -lt "100" ]]; then
#echo starting new line
SHORT[$STRINGNUM]=${SHORTTMP[$STRINGNUM]}
else
STRINGNUM=$(($STRINGNUM+1))
SHORTTMP[$STRINGNUM]="${ary[$key]}"
SHORT[$STRINGNUM]="${ary[$key]}"
fi
done
for key in "${!SHORT[@]}"
do
#echo "line: $key is: ${SHORT[$key]}"
echo "Playing line: $(($key+1)) of $(($STRINGNUM+1))"
mpg123 -q "http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl=Fr-fr&q=${SHORT[$key]}"
done
Comme tu peux le voir le script de génération d'
annonce crée un fichier texte puis ce fichier est envoyé à google qui retourne un fichier wave lu directement avec mpg123 dans la sortie audio par défaut.
Vas y étapes par étape :
- Connexion bluetooth
- Test de la synthétisation de texte
- Script de génération de texte
- Puis automatisation dans domoticz.
Bon courage et have fun
