2********************************************************************************
4@brief get day light status for automatic theme
5********************************************************************************
9from datetime
import datetime, timezone, timedelta
14log = logging.getLogger(__title__)
17def get_sun_light_time(lat: float, long: float, date: datetime, i_timezone: int) -> tuple[datetime, datetime]:
19 @brief Get sun light time (rise and down time)
20 @param lat : latitude of observer in degrees
21 @param long : longitude of observer in degrees
22 @param date : actual datetime
23 @param i_timezone : timezone
24 @return rise and down time of sun
26 observer = ephem.Observer()
27 observer.lat = str(lat)
28 observer.long = str(long)
32 delta_timezone = timedelta(hours=i_timezone)
33 sunrise = observer.previous_rising(sun).datetime() + delta_timezone
34 sundown = observer.previous_setting(sun).datetime() + delta_timezone
36 return sunrise, sundown
39def is_day(date: datetime, sunrise: datetime, sundown: datetime) -> bool:
41 @brief Check if actual time is day (depend on rise and down time of sun)
42 @param date : Latitude position
43 @param sunrise : longitude position
44 @param sundown : timezone
47 return sunrise.time() <= date.time() <= sundown.time()
52 @brief Get timezone from time settings
53 @return timezone in hours
55 timezone_info = datetime.now(timezone.utc).astimezone().tzinfo
56 utcoffset = timezone_info.utcoffset(datetime.now())
if timezone_info
else None
57 if utcoffset
is not None:
58 i_timezone = int(utcoffset.total_seconds() / 60) // 60
66 @brief Get sun light status
67 @return sun light status
68 @bug Sonnenzeit stimmt nur für die hinterlegten Daten. Koordinaten anhand der Zeitzone automatisch abschätzen.
78 sun_light_status =
is_day(date, sunrise, sundown)
80 return sun_light_status
int get_timezone()
Get timezone from time settings.
tuple[datetime, datetime] get_sun_light_time(float lat, float long, datetime date, int i_timezone)
Get sun light time (rise and down time)
bool get_sun_light_status()
Get sun light status.
bool is_day(datetime date, datetime sunrise, datetime sundown)
Check if actual time is day (depend on rise and down time of sun)