You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

29 lines
1.2 KiB

import time
from datetime import datetime
from .weather_mail import send_mail
def percentage(old, new, operator, percent):
'''Check if numbers are within range'''
if operator == '+':
return bool(round((old + old * percent / 100.0), 1) == new)
elif operator == '-':
return bool(round((old - old * percent / 100.0)) == new)
def process(data):
'''Check incoming data for +40% temp and -50% ground humidity'''
if len(data) > 0:
latest_measurement = data[len(data)-1]
for measurement in data:
if measurement != data[len(data)-1]:
tdelta = datetime.strptime(latest_measurement['time'], '%H:%M:%S') - datetime.strptime(measurement['time'], '%H:%M:%S')
if tdelta.seconds < 300:
if percentage(measurement['temperature'], latest_measurement['temperature'], '+', 40) and percentage(measurement['air-humidity'], latest_measurement['air-humidity'], '-', 50):
send_mail(measurement['temperature'], latest_measurement['temperature'], measurement['air-humidity'], latest_measurement['air-humidity'])
else:
data.remove(measurement)