1
0
Fork 0
mirror of https://github.com/Findus23/suntracking.git synced 2024-08-27 19:52:18 +02:00
This commit is contained in:
Lukas Winkler 2018-05-18 21:59:06 +02:00
commit 165c69e4c3
No known key found for this signature in database
GPG key ID: 94AFBE7C2656A5B5
5 changed files with 133 additions and 0 deletions

5
.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
config.py
sonnenuntergang.txt
.idea/
__pycache__/
average.txt

35
guess.py Normal file
View file

@ -0,0 +1,35 @@
from datetime import datetime, timedelta, time
midday = time(12)
import astropy.coordinates as coord
from astropy.time import Time
import config
def time2altitude(time: datetime) -> float:
astro_time = Time(time.astimezone())
altaz = coord.AltAz(location=config.loc, obstime=astro_time)
sun = coord.get_sun(astro_time)
return sun.transform_to(altaz).alt.degree
def get_time(altitude, time=False):
lower = datetime.combine(datetime.now().date(), midday)
upper = lower + timedelta(hours=12)
while upper - lower > timedelta(seconds=30):
middle = lower + (upper - lower) / 2
if time2altitude(middle) > altitude:
lower = middle
else:
upper = middle
# print(upper, lower)
return lower + (upper - lower) / 2
if __name__ == "__main__":
target = 14.480046611643763
print(get_time(target))

40
import.py Normal file
View file

@ -0,0 +1,40 @@
from datetime import datetime
from statistics import mean, stdev
import astropy.coordinates as coord
from astropy.time import Time
import config
loc = coord.EarthLocation(lon=config.lon,
lat=config.lat, height=config.height)
with open("sonnenuntergang.txt") as f:
content = f.readlines()
lines = [line.strip() for line in content]
angles = []
for line in lines:
if "#" in line:
print("skipped")
continue
parsetime = datetime.strptime("2018 " + line, "%Y %d.%m %H:%M").astimezone()
print(parsetime.isoformat())
time = Time(parsetime)
print(time)
altaz = coord.AltAz(location=loc, obstime=time)
sun = coord.get_sun(time)
altitude = sun.transform_to(altaz).alt.degree
print(altitude)
angles.append(altitude)
average = mean(angles)
stdev = stdev(angles, average)
print(stdev)
print(average)
with open("average.txt", "w") as f:
f.write(str(average) + "\n" + str(stdev))

38
main.py Normal file
View file

@ -0,0 +1,38 @@
import time
import schedule
import guess
def send_notification(on_time=False):
print("DAS IST EIN TEST")
return schedule.CancelJob
def create_schedule():
with open("average.txt") as file:
lines = file.readlines()
altitude = float(lines[0].strip())
standard_derivation = float(lines[1].strip())
print(altitude, standard_derivation)
s = schedule.every().day
s.at_time = guess.get_time(altitude).time()
s.at_time = guess.get_time(altitude).time()
s.do(send_notification, on_time=True)
s = schedule.every().day
print(guess.get_time(altitude + standard_derivation * 3).time())
s.at_time = guess.get_time(altitude + standard_derivation * 3).time()
s.do(send_notification)
create_schedule()
schedule.every().day.at("12:00").do(create_schedule)
while True:
schedule.run_pending()
time.sleep(1)

15
sendmail.py Normal file
View file

@ -0,0 +1,15 @@
import smtplib
from email.mime.text import MIMEText
from config import by, to
def sendmail():
msg = MIMEText("test")
msg['Subject'] = "subject"
msg['From'] = by
msg['To'] = to
s = smtplib.SMTP('localhost')
s.sendmail(by, [to], msg.as_string())