déclencher une action avec l'horloge en python ?
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

déclencher une action avec l'horloge en python ?



  1. #1
    cFranssen

    Arrow déclencher une action avec l'horloge en python ?


    ------

    bonjour, j'ai fai un code qui me permet d'alumer ou d'éteindre 2 relais raccordés au port série:

    Code:
    #-*- coding:Utf8 -*-
    from Tkinter import *
    import serial
    import time
    
    
    def relais_1_on():
        message.configure(text=" le relais est ON ", fg= 'blue')
        ser.setDTR(1)
        
        
    def relais_1_off():
        message.configure(text=" le relais est OFF", fg= 'red')
        ser.setDTR(0)
        
    
    def relais_2_on():
        message2.configure(text=" le relais est ON ", fg= 'blue')
        ser.setRTS(1)
        
    def relais_2_off():
        message2.configure(text=" le relais est OFF", fg= 'red')
        ser.setRTS(0)
    
    fen1 = Tk()
    fen1.title('cFranssen')
    
    message = Label(text=" le relais est ON ",fg="blue")
    message.grid(row=1, column=3, columnspan=2)
    message2 = Label(text=" le relais est ON ",fg="blue")
    message2.grid(row=2, column=3, columnspan=2)
    
    ser = serial.Serial('/dev/ttyS0', 19200)
    
    bou1 = Button(fen1,text='relais 1 ON',state="normal", command=relais_1_on)
    bou1.grid(row=1 , column=1)
    
    bou2 = Button(fen1,text='relais 1 OFF',state="normal",command=relais_1_off)
    bou2.grid(row=1 , column=2)
    
    bou3 = Button(fen1,text='relais 2 ON',state="normal",command=relais_2_on)
    bou3.grid(row=2 , column=1)
    
    bou4 = Button(fen1,text='relais 2 OFF',state="normal",command=relais_2_off)
    bou4.grid(row=2 , column=2)
    
    bou5 = Button(fen1, text='   Quitter   ', command = fen1.destroy)
    bou5.grid(row=4, column=1)
    
    
    fen1.mainloop()
    fen1.destroy()         
    ser.close()
    J'aimerais pouvovir alumer un relais à 6h30 et l'éteindre à 21h (chaque jours). Ainsi qu'afficher l'heur dans le fenêtre tk.

    je suppose qu'il faut utiliser la fonction Threads mais je ne sais pas m'en servir.

    le code de l'heur:
    Code:
    import time
    while True:
        print time.strftime('%d/%m/%Y  %H:%M:%S',time.localtime())
        time.sleep(1)
    merci d'avance

    -----

  2. #2
    umfred

    Re : déclencher une action avec l'horloge en python ?

    je ne connais pas le langage python mais je suppose qu'il doit avoir une structure "if" ou "si".
    si c'est le cas, je pense que l'algorithme de principe serait relativement simple:

    | toutes les minutes, faire:
    | | lire heure
    | | si heure = 6 et minute = 30 alors "allumer" relais
    | | si heure = 21 et minute = 0 alors "éteindre" relais
    | | traiter les autres évènements

  3. #3
    bzh_nicolas

    Re : déclencher une action avec l'horloge en python ?

    C'est un programme qui doit tourner en permanence ou il doit simplement couper à 21h et rallumer à 6h30 ?
    Dans le second cas tu peux faire un petit programme tout simple :
    le programme coupe tes relais, il se met en sleep pour la durée de 21h à 6h30, il rallume les relais.
    Après, il te suffira de planifier ce programme pour qu'il se lance à 21h.

  4. #4
    cFranssen

    Re : déclencher une action avec l'horloge en python ?

    il doit tourner en permanence car l'autre relais doit pouvoir être activer ou désactiver à n'importe quel moment. Et j'aimerais afficher l'heur dans la fenêtre du programme donc l'heur doit tourner en même temps que le reste du programme

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

    Re : déclencher une action avec l'horloge en python ?

    Y en a qui ont du bol que je cherche le même genre de truc...

    on dérive la classe, on ajoute tictac et on l'utilise:
    Code:
    class BaseWindow(Tk):
     
        def __init__(self, parent=None):
            Tk.__init__(self, parent)
            self.tic=0
     
        def tictac(self):
            self.tic +=1
            tac=str(self.tic)
            message.configure(text="tictac: "+tac+ (12-len(tac))*" " )
            self.after(1000, self.tictac)
     
    fen1 = BaseWindow()
    enfin, avant de lancer la fenêtre, on arme le timer (et on en profite pour ajouter le exit qui permet de tuer des thread éventuels (quand le code deviendra très compliqué...):
    Code:
    fen1.tictac()
    fen1.mainloop()
    exit(0)
    Bon, on peut changer le contenu de tictac en comparant avec l'heure (import time et un peu de code)
    (tempo en ms voir doc tkinter)
    Jusqu'ici tout va bien...

  7. #6
    cFranssen

    Re : déclencher une action avec l'horloge en python ?

    et j'applique ça comment sur mon code ?

  8. #7
    polo974

    Re : déclencher une action avec l'horloge en python ?

    Le premier morceau, tu le mets à la place de "fen1 = BaseWindow()" dans ton source.

    Le second, tu le mets à la place de "fen1.mainloop()"

    Le exit(0) ferme ce qui traine, mais si tu veux garder le destroy et le close avant le exit, c'est plus propre...

    Ensuite, la fonction tictac, tu la modifies pour lire l'heure, la comparer aux heures désirées, et faire les actions correspondantes si pas déjà fait.

    Bon, mais on ne sait toujours pas sous quel système tu bosses, car il existe des solutions pour planifier des tâches...
    Jusqu'ici tout va bien...

  9. #8
    cFranssen

    Re : déclencher une action avec l'horloge en python ?

    Linux

    je test tantot

  10. #9
    cFranssen

    Re : déclencher une action avec l'horloge en python ?

    re, désoler pour le retard j'y suis toujours pas arriver

  11. #10
    polo974

    Re : déclencher une action avec l'horloge en python ?

    faire un peu de recherche cron et crontab sur internet ou
    man cron
    et
    man crontab
    pour avoir des infos comment lancer à date et heure donnée une action.

    ensuite écrire un petit bout de programme qui fait le job...
    et programmer une tâche grace à crontab

    Bon, il y même un truc graphique (Gnome-schedule) dans ubuntu pour commencer...
    Jusqu'ici tout va bien...

Discussions similaires

  1. Mesure d'humidité pour déclencher une VMC
    Par invite65658fde dans le forum Bricolage et décoration
    Réponses: 10
    Dernier message: 17/09/2017, 17h17
  2. Réponses: 8
    Dernier message: 14/08/2009, 22h45
  3. Problèmes avec Python
    Par invite8f082fcf dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 16/06/2009, 22h51
  4. prob avec python 3.0.1
    Par invite177078b9 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 26/03/2009, 07h50
  5. Réponses: 2
    Dernier message: 14/08/2008, 22h18
Découvrez nos comparatifs produits sur l'informatique et les technologies.