Следующий скрипт для отправки уведомления по электронной почте, по какой-то причине он держит в обход флаг я поставил .. Сценарий держит поднимая флаг не удовлетворяет заданному условию
############################################################
## MAIN ##
############################################################
Open_serial()
while True:
line = ser.readline()
if line:
tmp = line.split()
if 'tank' in line:
tank_temp = tmp[1]
print 'Tank temperature:',tank_temp
if tank_temp >= 27:
flag = raise_flag()
if flag:
send_email('Tank temperature overheat',tank_temp)
flag = False
elif tank_temp <= 23:
flag = raise_flag()
if flag:
send_email('Tank temperature too low',tank_temp)
flag = False
if 'led' in line:
led_temp = tmp[1]
print 'Lights temperature:',led_temp
if led_temp >= 55:
flag = raise_flag()
if flag:
send_email('Lights temperature Overheat',led_temp)
flag = False
if 'White' in line:
white_pwm = tmp[1]
print 'White lights PWM value:',white_pwm
white_per = white_percent(white_pwm)
print 'White lights % value:',white_per
if 'Blue' in line:
blue_pwm = tmp[1]
print 'Blue lights PWM:',blue_pwm
blue_per = blue_percent(blue_pwm)
print 'Blue lights % value:',blue_per
А вот функция флаг:
def raise_flag():
global start
interval = 900
if start > interval:
start = 0
flag = True
return flag
else:
flag = False
start = start + 1
time.sleep(1)
return flag
сценарий продолжает отправлять электронные письма, когда темп находится в диапазоне от 25 ° C, я не знаю, почему он продолжает отправлять электронные письма? Я поместил флаг так, что когда условие выполнено, оно не отправляет 1000 писем, только 1 каждые 15 минут ...
Пример отправленного электронного письма: Произошла предупреждающая ошибка! Температура перегрева в цистернах: 25.31 ... Как вы можете видеть, темп был ОК, и он не должен был поднимать флаг для отправки электронной почты ... – celamb