Lancement de script periodiquement Raspberry PI
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Lancement de script periodiquement Raspberry PI



  1. #1
    electroniXien

    Lancement de script periodiquement Raspberry PI


    ------

    Bonjour à tous !!!

    Je suis actuellement en train d'essayer de faire des backups automatiques sur ma raspberry Pi.

    Je lis des capteurs sur un BUS SPI en continu, et envoi via SFTP mes resultats 1 fois par jour.

    J'ai 3 scripts à utiliser:

    1) Un script d'initialisation

    - lancement du module SPI

    - mise en place de l'arborescence de mes fichiers de sortie

    2) Un script de prise de mesures qui écrit dans mes fichiers de sortie

    3) Un script qui envoi par SFTP le dossier de mesures 1 fois par jour

    Pour le script d'initialisation, j'ai compris que il me fallait modifier /etc/rc.local et /etc/init.d pour initialiser mon environnement apres le boot du systeme.

    Pour le script de Backup (3), j'ai compris qu'il me fallait utiliser la CRONTAB pour l'executer 1 fois par jour à une heure donnée.

    Mon probleme concerne le script de mesures (2):

    Il me semble avoir compris que la crontab ne peut periodiser des executions 1 fois par minute au minimum. Mais je dois lancer mon script en continu..

    Du coup comment faire? Faut il le lancer via /etc/rc.local et /etc/init.d et mettre un "while 1" dans mon script?

    Merci pour vos réponses et bonne journée à tous

    -----

  2. #2
    lou_ibmix_xi

    Re : Lancement de script periodiquement Raspberry PI

    Du coup comment faire? Faut il le lancer via /etc/rc.local et /etc/init.d et mettre un "while 1" dans mon script?
    En gros oui, même si il serait de bon goût de pouvoir arrêter proprement le script (interrompre la boucle) lorsque le système s'arrête.
    Par contre, ta phase 1) ne me plaît pas trop: je ferais l'installation "à la main" une bonne fois pour toute (via un script), et le chargement du pilote SPI dans le noyau devrait se faire logiquement au plus proche de son utilisation, soit à mon avis au moment du lancement du script de prise de mesures.

  3. #3
    electroniXien

    Re : Lancement de script periodiquement Raspberry PI

    Merci pour ta réponse @lou_ibmix_xi

    J'y ai pensé, surtout que le chargement du SPI peut se faire depuis raspi-config, mais j'ai choisi de tout de meme faire un script d'initialisation pour que l'arborescence soit OK a chaque demarrage.
    Ainsi, si mon prog plante et que je reboot en debranchant l'alim, je n'aurai pas de conflits.

    Apres il est vrai que je pourrai vérifier l'arborescence dans mon programme de lecture/ecriture des données, mais ca me semblait moins propre, vu que cela consommerait du temps de proc dans mon programme principal.

    Tu resterais quand meme sur ce que tu m'as conseillé dans ton premier message?

    Merci pour votre aide

    Bonne journée !!

  4. #4
    Jack
    Modérateur

    Re : Lancement de script periodiquement Raspberry PI

    Çà me semble disproportionné de lire les données en continu. Le bus SPI est extrêmement rapide, ce qui doit te conduire à échantillonner tes données avec une période LARGEMENT inférieure à la µs. Tu as besoin d'échantillonner à quelle fréquence? Ta période d'échantillonnage doit-elle être extrêmement précise ou pas?.

  5. A voir en vidéo sur Futura
  6. #5
    electroniXien

    Re : Lancement de script periodiquement Raspberry PI

    J'echantillonne effectivement à moins d'1 µS, et la période d'echantillonnage n'a pas besoin d'être précise.

    J'ai proposé de passer par une boucle du type while(1) car j'ai cru comprendre que la crontab ne peut executer de programme plus d'1 fois par minute, et l'execution de mon script dur moins d'une minute. Donc pour ne pas avoir de creux de plusieurs dizaines secondes dans la prise de mes mesures, je me suis dit que je ne pouvait utiliser la crontab.

    Est ce que tu essaye de me dire qu'il est préferable de passer par la crontab, et donc que je dois me débrouiller pour que mon script dure presque 1 minute?

    Merci pour votre aide, et bonne journée

  7. #6
    Jack
    Modérateur

    Re : Lancement de script periodiquement Raspberry PI

    Est ce que tu essaye de me dire qu'il est préferable de passer par la crontab, et donc que je dois me débrouiller pour que mon script dure presque 1 minute?
    Non, j'essaie toujours d'éviter les boucles qui chargent le processeur au maximum pour ne passer son temps que dans des boucles d'attente.

    Mais je ne vois pas comment dans un système linux on pourrait réveiller et activer une tâche dans un intervalle de temps aussi court.

    Je me pose également une question: imaginons que tu échantillonnes toutes les µs. Linux étant multitâches, le scheduler va affecter du temps aux autres processus, ce qui fait que l'échantillonnage va cesser durant ce temps à mon avis.

  8. #7
    lou_ibmix_xi

    Re : Lancement de script periodiquement Raspberry PI

    Apres il est vrai que je pourrai vérifier l'arborescence dans mon programme de lecture/ecriture des données, mais ca me semblait moins propre, vu que cela consommerait du temps de proc dans mon programme principal.
    J'imaginais un script du genre (en pseudo code)
    Code:
    si arborescence foireuse
        reinstallation de l'arborescence
    fin si
    si module SPI non chargé
        chargement module SPI
    fin si
    tant acquisition vraie
         acquisition SPI >> fichier
         sleep PERIOD_ms
    fin tant que
    J'ai proposé de passer par une boucle du type while(1) car j'ai cru comprendre que la crontab ne peut executer de programme plus d'1 fois par minute, et l'execution de mon script dur moins d'une minute. Donc pour ne pas avoir de creux de plusieurs dizaines secondes dans la prise de mes mesures, je me suis dit que je ne pouvait utiliser la crontab.
    Effectivement, comme le dit Jack, il faut que tu mettes une "tempo" dans ta routine de lecture, c'est tellement évident à mes yeux que j'ai considéré ça comme acquis!

    Mais je ne vois pas comment dans un système linux on pourrait réveiller et activer une tâche dans un intervalle de temps aussi court.
    Je ne sais pas quel est ta version linux, ni quel est la valeur de "tick" que tu utilises, mais le programme "sleep" prends un argument en seconde pouvant être un nombre à virgule, donc insérer un "sleep 0.25" dans ta boucle la ferra s'endormir 250ms, ce qui peut suffire pour faire une période d'échantillonnage approximative, car "sleep" garantie uniquement qu'il dormira "au moins" le temps précisé, mais si comme le dit Jack le scheduler à quelque chose à faire, (réveil en retard), et à la granularité imposée par le "ticks": 250ms sur un tick de 10Hz ce n'est pas possible, ça s'arrondira à 300ms.

  9. #8
    electroniXien

    Re : Lancement de script periodiquement Raspberry PI

    Merci pour votre aide, j'ai pris note de vos conseils, et vais ajouter une tempo a mon script, et supprimer le script d'init..

    Je vous tiendrai au courant de mon l'avancée

    Merci encore et bonne journée

Discussions similaires

  1. Réponses: 29
    Dernier message: 29/10/2014, 07h39
  2. [Brun] Image de tv lg qui coupe périodiquement toute les seconde
    Par invite8e73f07c dans le forum Dépannage
    Réponses: 3
    Dernier message: 06/11/2010, 11h49
  3. Inverser periodiquement un moteur 22V
    Par invite930a6c0d dans le forum Électronique
    Réponses: 10
    Dernier message: 08/09/2009, 06h43
  4. Différence Lancement Navette/lancement Ariane ?
    Par invitef1f93b74 dans le forum Astronautique
    Réponses: 11
    Dernier message: 01/05/2009, 11h39