IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Sortir d'un if au bout de x minutes


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Novembre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Novembre 2014
    Messages : 1
    Par défaut Sortir d'un if au bout de x minutes
    Bonjour à tous,

    Je suis en train de développer sur un raspberry un système domotique.

    Avec ce système je veux pouvoir allumer un halogène à l'extérieur de ma maison.

    J'ai donc créé un programme en python qui active un relais pour l'allumage ou l'extinction de l'halogène. En même temps une led de contrôle sur le module domotique fait la même chose.

    Tout fonctionne très bien.

    Maintenant je veux rajouter une protection à ce système. En effet je veux éteindre automatiquement cet halogène au bout de 5 minutes (je n'ai pas envie que l'halogène reste allumé pendant des heures - facture électricité).

    je vous poste donc mon petit programme en python et attend avec impatience vos commentaires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #!/usr/bin/env python
     
    import os
    import RPi.GPIO as GPIO
    import time
     
    GPIO.setwarnings(False)
    GPIO.cleanup()
    GPIO.setmode(GPIO.BCM)
    # set BCM pin number for the halogene.
    HALO = 27
    HALOLED = 5
    GPIO.setup(HALO, GPIO.OUT)
    GPIO.output(HALO, GPIO.HIGH)
    GPIO.setup(HALOLED, GPIO.OUT)
    GPIO.output(HALOLED, GPIO.LOW)
     
    # set desired status halogene using consigne file from sms or switch               
    def consigne():
            readconsigne = open("/script/consigne_statut/halogene/consigne")
            setconsigne = readconsigne.readline(11)
            readconsigne.close()
            return setconsigne
     
    def holdconsigne():
            if consigne() == "Halogene ON":
                    GPIO.output(HALO, GPIO.LOW)
                    GPIO.output(HALOLED, GPIO.HIGH)
                    print("CONSIGNE ON")
                    time.sleep(1)
            elif    consigne() == "Halogene OF":
                    GPIO.output(HALO, GPIO.HIGH)
                    GPIO.output(HALOLED, GPIO.LOW)
                    print ("CONSIGNE OFF")
                    time.sleep(1)
            else:
                    print ("MESSAGE INCONNU")
                    GPIO.output(HALO, GPIO.HIGH)
                    GPIO.output(HALOLED, GPIO.LOW)
                    time.sleep(1)
     
    # this constructs an infinite loop
    infloop = 1
    while infloop == 1 :
            holdconsigne()

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Première question : qui est supposer changer la consigne dans le fichier ?

    Ensuite, sur le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    infloop = 1
    while infloop == 1 :
        passs
    pourrait plutôt être :
    , non ?

    Je suis quasiment certain qu'on ne dit pas "consigne" en anglais, je trouve que ça pique le franglais

    Le principe de tout le temps lire le fichier, toutes les secondes, et à chaque fois d'activer les GPIOs me semble un peu brutal. Mais c'est sans doute lié à ma première question.

    Je ne vois rien dans ton code qui fasse penser à une temporisation. Tu as déjà fait quelque chose ou tu nous demandes comment modifier ce code pour y arriver ? En fait n'est pas tant de sortir d'un if, mais de sortir d'un while qu'il te faudrait. Ou alors faire en sorte de ne plus respecter la consigne donnée dans le fichier.

    Il faudrait que tu clarifies un peu ta question et surtout il faudrait que tu réfléchisses à ta logique de contrôle pour pouvoir rendre plus modulable.

  3. #3
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Les module time et tmeit gèrent le temps et je pense que cela pourrait répondre à ta demande.

Discussions similaires

  1. [Freebox - Wifi] Internet se coupe au bout de quelques minutes
    Par 4rocky4 dans le forum Dépannage et Assistance
    Réponses: 8
    Dernier message: 10/03/2009, 10h54
  2. Connexion à internet au bout de quelques minutes
    Par saigon dans le forum Windows XP
    Réponses: 5
    Dernier message: 25/08/2008, 04h06
  3. Réponses: 4
    Dernier message: 02/04/2008, 16h31
  4. Réponses: 3
    Dernier message: 01/04/2008, 22h44
  5. Réponses: 9
    Dernier message: 10/05/2006, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo