Created
October 3, 2023 17:17
-
-
Save ZerooCool/68a8c310b4136dd05895965e4c0d1a51 to your computer and use it in GitHub Desktop.
Script shell bash horloge parlante
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /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