mirror of
https://github.com/Findus23/suntracking.git
synced 2024-08-27 19:52:18 +02:00
init
This commit is contained in:
commit
165c69e4c3
5 changed files with 133 additions and 0 deletions
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
config.py
|
||||||
|
sonnenuntergang.txt
|
||||||
|
.idea/
|
||||||
|
__pycache__/
|
||||||
|
average.txt
|
35
guess.py
Normal file
35
guess.py
Normal 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
40
import.py
Normal 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
38
main.py
Normal 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
15
sendmail.py
Normal 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())
|
Loading…
Reference in a new issue