Python la boucle while avec une syntaxe non valide

Juste pour donner un peu de fond sur le projet que je suis en train de travailler sur avant de me montrer le code. Je suis en train de développer un script en Python qui sera en cours d'exécution sur un Raspberry Pi pour contrôler l'interrupteur à flotteur à partir d'une pompe de puisard dans mon sous-sol. Ce code va vérifier pour voir si la pompe de puisard est pas le travail de ces deux critères:

  1. Si l'interrupteur est sur pendant plus de trois minutes
  2. Si le commutateur s'allume et s'éteint de plus de 10 fois en trois minutes

Je ne suis pas fait avec le reste du code, mais voici ce que j'ai:

import time

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN)
floatSwitch = GPIO.input(17)

import smtplib

running = True
log = open("sumpPumpLog.txt", "r+")
startTime = time.time()


def elapsedTime():
    """This function checks how much time
    has elapsed since the timer has started"""
    endtime = time.time()
    elapsed = endtime - starttime
    return elapsed


def sendEmail(*msg):
    """This function sends an email to selected recipients with a custom
    message as well as the log file attached."""
    #enter the code that sends an email to the family with the log attached

    fromaddr = '[email protected]'
    toaddrs = [to@email.com']
    msg = """Please see the Pi and the data log file for more details."""

    # Credentials (if needed)
    username = 'my_username'
    password = 'my_password'

    msg.attached()

    # The actual mail send
    server = smtplib.SMTP('smtp.gmail.com:587')
    server.starttls()
    server.login(username, password)
    server.sendmail(fromaddr, toaddrs, msg)
    server.quit()


if running is True:
    if floatSwitch is True:
        #Write the time and what happened to the file
        log.write(str(time.time() + "Float switch turned on")
        #Wait until switch is turned off

        while floatSwitch is True:
            startTime = time.time()
            if floatSwitch is False:
                log.write(str(now) + "Float switch turned off")
                break
        #if elapsedTime > 3 min (in the form of 180 seconds)
        elif elapsedTime() > 180:
            log.write(str(now) + "Sump Pump has been deemed broaken")
            sendEmail("The sump pump is now broken.")

else:
    log.write(str(time.time() + "The sctipt has stopped.")
    sendEmail("The script has been stopped.")

Mon problème est que sur la ligne 52, quand il est dit

while floatSwitch is True:

Il y a une erreur dans le code, et tout ce qu'elle dit est "syntaxe non valide'
Je suis très nouveau à Python, et c'est mon premier vrai projet avec elle. Je suis pas familier avec beaucoup de la syntaxe, ce qui pourrait être un très élémentaire erreur. Quelqu'un peut-il m'aider corrigé la syntaxe de cette instruction afin que je puisse obtenir mon code de travail. Je sais qu'il existe de nombreuses autres erreurs sans le reste du code, mais je prévois de travailler sur les bugs quand je le trouve. J'ai cherché partout, mais je ne peux pas trouver un autre exemple de ce genre. Toute aide est très appréciée!

  • Vous avez un choix incomparable de elif après le temps. Je pense que vous vouliez dire, que d'être simplement un si.
InformationsquelleAutor cmbrooks | 2013-09-29