Skip to content

Commit 032f7c5

Browse files
committed
Implement TimeHandler.get_timezone() for getting timezone information
1 parent 391de16 commit 032f7c5

File tree

4 files changed

+14
-12
lines changed

4 files changed

+14
-12
lines changed

source/abscence_handler.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from datetime import datetime
22

3-
from dateutil.tz import tz
43
from energy_amount import EnergyAmount, Power
54
from environment_variable_getter import EnvironmentVariableGetter
65
from logger import LoggerMixin
6+
from time_handler import TimeHandler
77

88

99
class AbsenceHandler(LoggerMixin):
@@ -12,8 +12,6 @@ class AbsenceHandler(LoggerMixin):
1212
def __init__(self):
1313
super().__init__()
1414

15-
self.timezone = tz.gettz()
16-
1715
def check_for_current_absence(self) -> bool:
1816
absence_input = ""
1917
try:
@@ -42,7 +40,7 @@ def _check_for_current_absence(self, absence_input: str) -> bool:
4240
if timestamp.tzinfo is None:
4341
raise ValueError(f'"{absence_start_raw}" has no timezone information')
4442

45-
if absence_start < datetime.now(tz=self.timezone) < absence_end:
43+
if absence_start < datetime.now(tz=TimeHandler.get_timezone()) < absence_end:
4644
return True
4745

4846
return False

source/inverter_charge_controller.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import pause
44
from abscence_handler import AbsenceHandler
55
from aiohttp import ClientError
6-
from dateutil import tz
76
from energy_amount import EnergyAmount
87
from environment_variable_getter import EnvironmentVariableGetter
98
from goodwe import OperationMode
@@ -13,6 +12,7 @@
1312
from sems_portal_api_handler import SemsPortalApiHandler
1413
from sun_forecast_handler import SunForecastHandler
1514
from tibber_api_handler import TibberAPIHandler
15+
from time_handler import TimeHandler
1616

1717

1818
class InverterChargeController(LoggerMixin):
@@ -21,8 +21,7 @@ def __init__(self):
2121

2222
self.log.info("Starting application")
2323

24-
self.timezone = tz.gettz()
25-
24+
self.timezone = TimeHandler.get_timezone()
2625
self.sems_portal_api_handler = SemsPortalApiHandler()
2726
self.sun_forecast_handler = SunForecastHandler()
2827
self.inverter = Inverter()

source/tibber_api_handler.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
from datetime import datetime, timedelta
22

3-
from dateutil import tz
43
from energy_amount import EnergyRate
54
from environment_variable_getter import EnvironmentVariableGetter
65
from gql import Client, gql
76
from gql.transport.aiohttp import AIOHTTPTransport
87
from logger import LoggerMixin
8+
from time_handler import TimeHandler
99

1010

1111
class TibberAPIHandler(LoggerMixin):
@@ -244,8 +244,9 @@ def _check_if_minimum_is_at_end_of_day_and_energy_rates_of_tomorrow_are_unavaila
244244
"""
245245

246246
# We use 00:01 instead of 00:00 since the software runs just a few (milli)seconds after the start of the hour
247-
timezone = tz.gettz()
248-
end_of_day = (datetime.now(tz=timezone) + timedelta(days=1)).replace(hour=0, minute=1, second=0, microsecond=0)
247+
end_of_day = (datetime.now(tz=TimeHandler.get_timezone()) + timedelta(days=1)).replace(
248+
hour=0, minute=1, second=0, microsecond=0
249+
)
249250
three_hours_before_end_of_day = end_of_day - timedelta(hours=3)
250251

251252
is_price_minimum_near_end_of_day = price_minimum.timestamp >= three_hours_before_end_of_day

source/time_handler.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from datetime import datetime, time, timedelta
22

3-
from dateutil.tz import tz
3+
from dateutil.tz import tz, tzfile
44

55

66
class TimeHandler:
@@ -63,7 +63,7 @@ def calculate_day_night_duration(
6363
duration_day = timedelta(seconds=0)
6464
duration_night = timedelta(seconds=0)
6565

66-
timezone = tz.gettz()
66+
timezone = TimeHandler.get_timezone()
6767

6868
current_time = timestamp_start
6969

@@ -91,3 +91,7 @@ def calculate_day_night_duration(
9191
current_time = day_end
9292

9393
return duration_day, duration_night
94+
95+
@staticmethod
96+
def get_timezone() -> tzfile:
97+
return tz.gettz()

0 commit comments

Comments
 (0)