Voici un truc qui ne sert à rien, mais de ce fait est totalement indispensable
je l'ai pour ma pomme arrangé à ma sauce, mais si cela intéresse certains
voici une horloge parlante (heu qui ne "papote" qu'au changement d'heure, je ne veux pas non plus qu'elle me pollue les oreilles..)
cela ne sert pas a grand chose, mais pour moi cela me permet d'apprendre plein de choses au niveau du codage et de commencer à, petit à petit, m'aguerrir à celui-ci!
Code : Tout sélectionner
#! /bin/bash
######################
## Horloge parlante ##
######################
## Donner les droits d'exécution :
# chmod +x 3699.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 3699.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/3699.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 00h qui se dit "minuit" :
if [ $heure = 00 ]
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 "Attention L'heure à changé ! ... Il est $heure" -s 100 -v mb/mb-fr6
# 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 3699.sh
# ps -ef | grep 3699.sh
# Pour n'avoir que le pid :
# pgrep 3699.sh
# Partagé sur : https://wiki.visionduweb.fr/index.php?title=Programmation_en_Shell_Bash_Linux#Cr.C3.A9er_son_horloge_parlante_en_Bash_sous_Linux
# D'après la vidéo suivante : https://youtu.be/UbqU7rxu-eU