Iaorana,
je commence en bash mais voila, par manque de temps je dois m’arrêter là. Mon reveil matin semble fonctionnel (enfin sur mon AAO/Lenny en tout cas) mais j’aurai aimé pouvoir le peaufiner, apurer le code et pourquoi pas mettre une interface graphique. Alors voilà je laisse le bidule ici. Si cela intéresse quelqu’un tant mieux sinon c’est pas grave.
Le reveil matin en bash comporte 2 fichiers à installer dans un même dossier :
WakeUpAndLive.sh est le fichier de programmation de la date de sortie d’hibernation du PC portable posé ouvert sur votre table de nuit.
musicReveil.sh est le fichier qui vous permet de choisir de la musique dans la discothèque du disque dur du PC. musicReveil.sh est invoqué par WakeUpAndLive.sh par le biais du démon atd (à installer s’il est absent)
nana.
Contenu du fichier : WakeUpAndLive.sh
[code]#!/bin/bash
#Utilisation d’un portable (non fermé) mis en veille sur disque (pm-hibernate) ou en ram (pm-suspend) comme reveil matin
#Auteur : Douarn
#Licence : GPL
#Recommandation : dans un premier temps, valider le fonctionnement du présent script en parallèle d’un vrai reveil
#Important : je décline toute responsabilité en cas de grasse matinée intempestive ou de reveil à la mauvaise heure
#Dependance : pm-hibernate et/ou pm-suspend fonctionnel, demon atd démarré, mpg123, xterm
#Configuration : autoriser l’user à lancer pm-hibernate et/ou pm-suspend en ajoutant ces commandes au fichier /etc/sudoers (voir ligne ci-dessous)
$USER ALL=NOPASSWD: /usr/sbin/pm-suspend, /usr/sbin/pm-hibernate, /usr/sbin/pm-suspend-hybrid
#Autre : ajouter quelques fichiers mp3 pour se reveiller (wake up and live de Bob Marley est plus que recommandé de mon point de vue)
HEUREREVEILDEFAUT="07:00"
HEURE=$(date +%R)
#declaration d’entiers
declare -i datePosixJour0heure datePosixDemain0heure datePosixReveilDefaut datePosixChoixDate dateReveilPosix dateReveilHeurePosixUTC heureReveilPosixAt
#NETTOYAGE DU TERMINAL ET AFFICHAGE DU CALENDRIER
clear
echo "Etat de la pile de l’horloge système $(cat /proc/driver/rtc | grep -i batt_status | cut -f2)"
echo "========================================================== "
ncal
#AFFICHAGE DE LA DATE, L’HEURE ET DES MINUTES
datePosixJour0heure=$(date -d $(date +%F) +%s)
dateJour=$(date +%A" “%d” "%B -d @$datePosixJour0heure)
echo "nous sommes le $dateJour, il est $HEURE"
echo "========================================================== "
CALCUL DE LA DATE DU PROCHAIN MATIN
let datePosixDemain0heure=datePosixJour0heure+86400
if [ $(date +%k) -le 12 ]; then
dateReveil=$(date +%A" “%d” “%B -d @$datePosixJour0heure)
let datePosixReveilDefaut=datePosixJour0heure
else
dateReveil=$(date +%A” “%d” "%B -d @$datePosixDemain0heure)
let datePosixReveilDefaut=datePosixDemain0heure
fi
SAISIE DE LA DATE ET DE L’HEURE DE REVEIL
echo "Je vous propose de vous reveiller le $dateReveil"
echo "sinon saisissez une autre date (AA-M-J)“
read reponse
if [[ $reponse != “” ]]; then
datePosixChoixDate=$(date -d $(date +%F -d “$reponse”) +%s)
dateReveilPosix=$datePosixChoixDate
#echo “datePosixChoixDate= $datePosixChoixDate et datePosixReveilDefaut= $datePosixReveilDefaut"
if (( $datePosixChoixDate >= $datePosixReveilDefaut )); then
dateReveil=”$(date +%A” “%d” "%B -d @$datePosixChoixDate)"
dateReveilPosix=$datePosixChoixDate
#echo "choixDate: $dateReveil soit $datePosixChoixDate (posix time)"
else
echo "ERREUR : date de reveil saisie antérieure à la date actuelle !"
echo "Veuillez recommencer la procédure"
exit 1
fi
else
echo "je vous reveil donc le $dateReveil"
dateReveilPosix=$datePosixReveilDefaut
fi
echo "A quelle heure désirez vous vous reveiller (defaut= 07:00)"
echo "sinon saisissez une autre heure (format 24-heures hh:mm)?"
read heureReveil
if [[ $heureReveil == “” ]]; then
heureReveil=$HEUREREVEILDEFAUT
fi
dateReveilHeurePosix=$(date -d “$(date +%F -d @$dateReveilPosix) $heureReveil” “+%s”)
if (( $dateReveilHeurePosix <= $(date +%s) )); then
echo "ERREUR, l’heure saisie est antérieure à l’heure courrante !!"
echo "veuillez recommancer la procédure"
exit 1
fi
#AFFICHAGE DE LA DATE ET DE L’HEURE DE REVEIL
echo “vous désirez vous reveiller le $dateReveil à $heureReveil ?”
#Programmation de la sortie de suspend to disk du PC
if [ -e /sys/class/rtc/rtc0/wakealarm ]; then
echo 0 > /sys/class/rtc/rtc0/wakealarm
echo $dateReveilHeurePosix > /sys/class/rtc/rtc0/wakealarm
else
echo "ERREUR, /sys/class/rtc/rtc0/wakealarm manquant !!"
exit 1
fi
echo "La programmation du reveil s’est elle correctement réalisée ?"
echo “mise en route de l’alarme $(cat /proc/driver/rtc | grep -i alarm_IRQ|cut -f2), le$(cat /proc/driver/rtc | grep -i alrm_date|cut -f2), à$(cat /proc/driver/rtc | grep -i alrm_time|cut -f2) heure UTC”
Programmation de la mise en action du lecteur de fichier mp3 pour le reveil
on ajoute 90 secondes pour laisser le temps au PC de sortir de sa veille avant de lancer la musique de reveil
let heureReveilPosixAt=$dateReveilHeurePosix+90
dateAT="$(date +%R" “%D -d @$heureReveilPosixAt)”
#echo “Date donnée à at en paramètre $dateAT”
#ligne suivante à décommenter pour activer le demon en charge de la lecture de la musique de reveil
#at -f ./musicReveil.sh -v $dateAT
#on se laisse 10 seconde pour lire si la programmation du reveil s’est bien effectuée
sleep 10
#mise en veillle sur disque du pc (Attention : autoriser le user à lancer pm-hibernate)
#ligne suivante à décommenter pour activer l’hibernation sur disque
#sudo /usr/sbin/pm-hibernate
#ligne suivante à décommenter pour activer l’hibernation en ram
#sudo /usr/sbin/pm-suspend
[/code]
Contenu du fichier : musicReveil.sh
#!/usr/bin
xterm -display :0.0 -e mpg123 -CZ /Le/chemin/vers/votre/discothèque/*.mp3