J'ai des PCs dédié pour faire certaine tâches à des dates/heures programmées par une action extérieure, donc les dates peuvent changer et il peut y en avoir plusieurs à des dates/heures différentes.
J'ai fait un script bash qui contrôle si des tâches existent, le cas échéant les timestamps de ces tâches sont comparés au timestamp courant.
Un Cronjob inscrit dans un fichier le timestamp et/ou la date UTC de la prochaine tâche à effectuer.
Avec un arduino et un shield ethernet, je lis le contenu de ce fichier afin de garder en mémoire cette "date", ainsi je peux mettre mes PCs en veille ou les éteindre et les rallumer avec l'arduino 5 minutes avant l'execution de cette tâche.
En cas de panne de courant,lors du rétablissement de ce dernier le setup allumerait par défaut les PCs, connecterait l'arduino afin de remettre à jour le timestamp actuel et contrôler si une tâche est programmée.... ça m'évite d'utiliser une carte SD ou l'Eeprom.... de toute façon, en cas de panne de courant, l'arduino n'arrivera pas à allumer les PCs XD
Le problème :
-
Le format UTC, l'aquisition et le traitement de la date est un peux ardue, ensuite, il faut tenir compte des horaires d'été/hiver. Utilisation d'une RTC possible (ds1307), directement utilisable pour lire sur un lcd la prochaine occurrence
-
Le format timestamp Unix, facilité d'aquisition et de traitement, on ne tient compte que d'une différence entre deux timestamp pour lancer l'exécution d'une tâche. Un quartz d'horloge et une interruption par seconde permettrait de tenir à jour "précisement" le timestamp. Il faut convertir dans un autre format pour lire la prochaine occurrence sur un lcd.
Quel format choisir et comment le mettre en oeuvre/convertir ?
La précision ne doit pas être à la seconde, une latence de une à deux minutes est envisageable, le Cronjob ne remet à jour le fichier qu'un fois par minute (d'ailleurs si quelqu'un connait un moyen d'augmenter cette fréquence... )