Skip to content

Instantly share code, notes, and snippets.

@ZerooCool
Created October 3, 2023 17:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ZerooCool/68a8c310b4136dd05895965e4c0d1a51 to your computer and use it in GitHub Desktop.
Save ZerooCool/68a8c310b4136dd05895965e4c0d1a51 to your computer and use it in GitHub Desktop.
Script shell bash horloge parlante
#! /bin/bash
######################
## Horloge parlante ##
######################
## Donner les droits d'exécution :
# chmod +x horloge.sh
## Installer espeak :
# sudo apt install espeak
## Ajouter le paquet de langue améliorée pour la commande " mb/mb-fr1 " :
## Télécharger la voix Mbrola FR1 :
# cd /usr/share
# sudo mkdir mbrola
# cd mbrola
# sudo mkdir fr1
# cd fr1
# sudo wget https://raw.githubusercontent.com/numediart/MBROLA-voices/master/data/fr1/fr1
## Lancer l'horloge parlante pour tester le script :
# sh horloge.sh
## Changer d'heure en changeant de fuseau horaire :
# cp /usr/share/zoneinfo/Europe/Athens /etc/localtime
# cp /usr/share/zoneinfo/Europe/Lisbon /etc/localtime
# cp /usr/share/zoneinfo/Europe/Paris /etc/localtime
## Démarrer le script avec une tâche cron 1 minute avant le changement d'heure.
# crontab -e
# 59 * * * * sh /home/utilisateur/chemin/chemin/horloge.sh
## Aucune action n'est requise ci-dessous !
## L'horloge parlante est configurée !
hmem=$(date +%-H)
hnow=$(date +%-H)
while :
do
# Vérifier l'heure actuelle à l'intérieur de la boucle.
hnow=$(date +%-H)
# Afficher l'heure actuelle et l'heure mémorisée :
# echo "Heure actuelle : $hnow - Heure mémorisée : $hmem "
if [ $hnow != $hmem ]
then
# echo "Heure changée"
# Afficher un son différent, 11.mp3 12.mp3 ... pour chaque possibilité :
# DISPLAY=:0 /usr/bin/mplayer /home/utilisateur/chemin/chemin/$hnow.mp3
# Synthèse vocale avec espeak :
# date "+Il est %H heure %M" | espeak -v fr
# Affecter l'heure actuelle à une variable heure qui sera lue par espeak :
heure=$hnow
# Mettre en place une exception pour 21h qui se dit "vingt et une" :
if [ $heure = 21 ]
then
heure="vingt et une"
fi
# Mettre en place une exception pour 00h qui se dit "minuit" :
if [ $heure = 0 ]
then
heure="minuit"
fi
# Mettre en place une exception pour 1h qui se dit "une" et pas "un" :
if [ $heure = 1 ]
then
heure="une heure"
else
heure="$heure heures"
fi
# Après avoir installé le fichier mbrola fr1 cette alerte de voix devient très sympa :
espeak "L'heure change ! ... Il est $heure" -s 100 -v mb/mb-fr1
# On affecte la nouvelle valeur à l'heure mémorisée pour que la condition ne soit plus réalisée :
hmem=$hnow
# Tuer le script qui tournerait sinon pendant une heure. Le script sera relancé avec une tâche cron.
exit 0
else
#echo "L'heure n'a pas changée"
# espeak "L'heure n'a pas changée !" -s 100 -v mb/mb-fr1
sleep 5
fi
done
# Note concernant les processus fantômes durant les tests :
# Identifier les processus qui tournent :
# ps aux
# Tuer un processus avec son pid :
# sudo kill -9 26550
# Lister tous les processus lancés pour le script horloge.sh
# ps -ef | grep horloge.sh
# Pour n'avoir que le pid :
# pgrep horloge.sh
# D'après la vidéo suivante : https://youtu.be/UbqU7rxu-eU
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment