Я хочу выполнять этот скрипт каждую минуту и ​​отправлять мне сообщение каждый раз, когда он меняет состояние - PullRequest
1 голос
/ 11 июня 2019

Я работаю над raspberrypi, я хочу помещать этот код в crontab, который будет выполняться каждую минуту, он должен понизить gpio с 19:00 до 19: minute_max (и эта часть работает), затем он должен отправить мне электронное письмо когда это меняет состояние GPIO. Я могу отправить мне письмо, когда оно установлено на LOW. С этим кодом:

from time import localtime
import  RPi.GPIO as  GPIO

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.OUT)

ore = 19
minuti_max=30
minuti = range(0,minuti_max)

if (localtime()[3]==ore) and (localtime()[4] in minuti):
    if GPIO.input(26)==1:
        GPIO.output(26, GPIO.LOW)
        #send_mail_to_me("ON","yeye")
        print("on")
else:
    GPIO.output(26, GPIO.HIGH)

Если я добавлю функцию send_mail_to_me в оператор else, он будет отправлять ее каждую минуту. Но я хочу, чтобы он отправлялся только тогда, когда он впервые установил высокий уровень gpio.

Я попробовал следующее, но это не работает:

from time import localtime
import  RPi.GPIO as  GPIO

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.OUT)

ore = 19
minuti_max=30
minuti = range(0,minuti_max)

if (localtime()[3]==ore) and (localtime()[4] in minuti):
    if GPIO.input(26)==1:
        GPIO.output(26, GPIO.LOW)
        #send_mail_to_me("ON","yeye")
        print("on")
        flag=1
elif (localtime()[4] not in minuti) and flag==1:
    GPIO.output(26, GPIO.HIGH)
    #send_mail_to_me("OFF","yoyo")
    print("off")
    flag=0
else:
    GPIO.output(26, GPIO.HIGH)
...