1) Objectif
En cas d'appel manqué sur skype ou de mail arrivé je veux:
Si mamie est devant l'ordi :
- que ça affiche le profil de la personne qui à essayé d'appeler (cf script gestion d'évènement skype) / affiche fenêtre thunderbird
- que ça attende qu'elle revienne
- que ça joue un son pour dire qu'elle à manqué un appel / qu'un mail est arrivé
- que ça affiche le profil / affiche thunderbird
2) Le script
Le script est assez détaillé et commenté. Ci dessous le script pour skype. Celui pour Thunderbird est quasiment identique mais ce n'est pas le même son joué et c'est thunderbird qu'on affiche à la place du script d'évènement skype.
#En bleu les lignes de commentaires et inutiles (genre echo)
Code:
#!/bin/bash #Vérifie si motion est déjà en marche MOTION=$(pidof motion)"0" echo "pid de motion=$MOTION" while [ "$MOTION" != "0" ] do #on attend que motion s'arrête sleep 3 MOTION=$(pidof motion)"0" echo "pid de motion=$MOTION" if [ "$MOTION" = "0" ]; then { echo "motion vient de s'arrêter, qq est devant l'ordi" #on lance le script de notification SCRIPT EVENEMENT et on quitte sleep 5 /home/mamie/.motion/motion-wait-phone.sh exit 0; } else { echo "on continu la boucle while" } fi done #motion n'est pas en fonctionnement alors on continue #lancer motion #si un autre programme utilise déjà la cam alors motion attends #que la cam soit dispo et continu motion -c /home/mamie/.motion/motion-2.conf & sleep 15 #on vérifie si quelqu'un est déjà devant l'ordi #si oui il y a des images dans le dossier /tmp/motion IMG=$(du /tmp/motion | cut -f1) #efface le contenu du dossier temporaire rm /tmp/motion/* service motion stop if [ $IMG -gt 30 ]; then { echo "il y a du monde près de l'ordinateur !!!!!!!" #on vérifie maintenant si le screensaver est actif ou non SCREEN=$(xscreensaver-command -time | cut -f3-4 -d " ") echo result = $SCREEN # résult peut être : screen blanked ou screen non-blanked if [ "$SCREEN" = "screen blanked" ] ; then { echo "le screensaver marche " #SCRIPT EVENEMENT #on désactive le screensaver xscreensaver-command -deactivate #on joue un son play /home/mamie/.son/phone-missed-skype.ogg & #on lance le clic sur l'évènement skype /home/mamie/.motion/click-event-skype.sh #/FIN SCRIPT EVENEMENT } else { echo "le screensaver marche pas" #on lance seulement le clic sur l'évènement skype /home/mamie/.motion/click-event-skype.sh } fi } else { echo "personne est devant l'ordi" #on lance la détection de mouvement qui déclenchera en cas de mouvement le SCRIPT EVENEMENT motion -c /home/mamie/.motion/motion-phone.conf & } fi exit 0;
Et bien sûr dans le fichier motion-phone.conf , en cas d'évènement ça pointe vers le script suivant (qui est idem à SCRIPT EVENEMENT du code ci-dessus) :
Code:
#!/bin/bash #mamie est de retour devant l'ordi (script lancé par l'évènement configuré dans motion conf) # on désactive motion service motion stop & #on désactive le screensaver xscreensaver-command -deactivate #Vérifie si un son est déjà en marche (si plusieurs évènements) SON=$(pidof play)"0" echo "pid de son=$SON" while [ "$SON" != "0" ] do #on attend que le son en cours s'arrête sleep 3 SON=$(pidof play)"0" echo "pid de son en cours=$SON" done echo "le son a fini de jouer" #on joue un son play /home/mamie/.son/phone-missed-skype.ogg & #on lance le clic sur l'évènement skype /home/mamie/.motion/click-event-skype.sh rm /tmp/motion/* exit 0;
Ce script permet en plus de gérer les situations si il y a plusieurs évènements qui se produisent pour les exécuter les uns après les autres quand mamie reviens devant l'ordi.
Ca fait plaisir quand ça marche bien! Mais à écrire, ça fait mal à la tête!
En tous cas, je suis épaté de la puissance des script shell qu'on peut écrire sous UBUNTU et du nombre de programme qui acceptent les lignes de commandes. Ca n'aurait pas été possible sur windows.
Allez, promis si j'ai plus compliqué à faire, la prochaine fois je programme pour de vrai en python!
Ordinateur pour grand-parents, ordinateur pour papy, ordinateur pour personnes âgée, linux pour mamie, linux pour papy, linux pour personne âgée, linux pour grands-parents.
Bravo, c'est vraiment beau :)
RépondreSupprimerJe suis épatée aussi par la concision des scripts. C'est vraiment puissant. Ça donnerait presque envie de s'y mettre.... presque ! ;)