Bonsoir à tous,

Alors voilà, je suis en Terminale STI2D SIN et j'ai en projet de commander un portail automatique selon des horaires définis à partir d'un site web (jusque là aucun soucis). J'utilise une base de donnée MySQL pour les horaires, ainsi je peux facilement marier site et script Python géré par un Raspberry PI 3.

En attendant la livraison du moteur, je simule l'ouverture et la fermeture avec des LED rouge (portail fermée) et verte (ouvert). Je compare donc les horaires de la base de donnée par rapport à l'heure actuelle. Tout fonctionne concernant l'heure d'ouverture. Si l'heure récupérée est inférieur à l'heure actuelle, LED rouge et inversement.

Néanmoins j'ai une double comparaison mais elle ne s'effectue pas. J'ai comme l'impression que le script ne prend en compte que l'heure d'ouverture et pas de fermeture, comment résoudre ce soucis ?


Désolé si mes explications ne sont pas claires mais je vous laisse en dessous une photo de ma DB sur PHPmyAdmin ainsi que mon script.

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
47
48
49
import RPi.GPIO as GPIO
from twilio.rest import TwilioRestClient
import time
import datetime
import threading
import MySQLdb
 
 
GPIO.setmode(GPIO.BOARD)
GPIO.setup(40, GPIO.OUT)
GPIO.setup(38, GPIO.OUT)
 
db = MySQLdb.connect(host="localhost",    # your host, usually localhost
                    user="root",         # your username
                   passwd="Orel_27130",  # your password
                    db="projet")        # name of the data base
 
 
 
 
day = datetime.datetime.now()
day = day.isoweekday()
 
 
if day == 3 :
    while day == 3:
        # calcul du time delta + affichage de l'heure actuelle au format H24
        midnight = datetime.datetime.combine(datetime.date.today(), datetime.time.min)
        now_relative = datetime.datetime.now() - midnight
        print time.strftime("%H:%M:%S")
 
        # Requete SQL
        cursor1 = db.cursor()
        cursor1.execute("SELECT time_open FROM time WHERE id = 3")
        time_open = cursor1.fetchone()
        cursor2 = db.cursor()
        cursor2.execute("SELECT time_close FROM time WHERE id = 3")
        time_close = cursor2.fetchone()
 
 
        # Si Time open est superieur ou egale a l'heure actuelle et si time close est inferieur a l'heure actuelle
        if(time_open[0] >= now_relative and time_close[0] < now_relative):
            print ("Fermee")
            GPIO.output(38, False)
            GPIO.output(40, True)   
        else:
            print ("Ouvert")
            GPIO.output(38, True)
            GPIO.output(40, False)
Nom : XjYiS.png
Affichages : 136
Taille : 51,3 Ko

Merci d'avance,
iDezwin