Horloge numérique pour Mamie suite…

Horloge digitale

 (suite de l'article cité plus haut)

Bon on a la date, l’heure mais il manque encore un truc : c’est les faits marquants pour Mamie : printemps, été, Noël, Armistice, la fête de l’arrière petite-fille ou du neveu.. ce que l’on appelle les éphémérides. Pas de problèmes ces données sont presque immuables dans nos contrées, mis à part le problème du jour supplémentaire des années bissextiles (29 février).

On va donc rajouter une ligne à notre horloge, qui affichera l’éphéméride du jour. Pour chaque jour il faut donc trouver l’information. Il y a plusieurs façons de faire, j’ai opté pour la création d’une base de données, en Sqlite qui contient toutes les données pour tous les jours de l’année et tous le jours à 2h du matin (on peut changer l’heure bien sûr) le programme va lire la base, récupérer l’info concernant le jour dit et l’afficher.

Note : On peut très facilement modifier et personnaliser le contenu de la base de données et l’adapter à ses envies ou besoins : supprimer les noms des saints pour les remplacer par les prénoms de la famille quand c’est le jour etc..

N’étant pas un expert du langage Python j’ai assemblé des bouts de codes trouvés à droite et gauche et suis arrivé à mes fins d’une façon, certes, pas très élégante mais qui fonctionne.

Programme python

Principe : le programme, en Python, est lancé, il affiche les infos, à 2h00 du matin un script est lancé par l’intermédiaire du gestionnaire de tache ‘cron‘ (je travaille sous GNU/Linux) qui stoppe le programme (plutôt brutalement). 2 mn plus tard un autre script relance le programme ! (La méthode est frustre mais permet de rafraîchir la valeur de l’éphéméride, je n’ai pas su/pu/voulu faire autrement, ou j’y serai encore !)

Vous pouvez télécharger le programme ici.

 Voici les deux script en bash (penser à les rendre éxécutables !)

script.sh qui lance le programme :
#!/bin/bash
export DISPLAY=:0 ;
cd /home/utilisateur/Chemin/Vers/Programme/
python3 Horloge1.py
exit 0;

script2.sh qui ‘tue’ le programme :
#!/bin/bash
pid=$(ps -C python3 -o pid=)
kill -9 $pid
exit 0;

Le lancement des scripts par cron :
MAILTO=""
00 2 * * * /home/utilisateur/Chemin/Vers/Programme/script2.sh
02 2 * * * /home/utilisateur/Chemin/Vers/Programme/script.sh

La première ligne empêche cron d’envoyer un email en cas d’erreur. Penser aussi à créer le fichier /etc/cron.allow, s’il n’existe pas déjà, contenant le nom de l’utilisateur, sinon seul root pourra lancer cron…