mirror of
https://github.com/Findus23/suntracking.git
synced 2024-08-27 19:52:18 +02:00
36 lines
887 B
Python
36 lines
887 B
Python
|
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))
|