Skip to content

Commit

Permalink
refactor: Datetime platform _attr_native_value
Browse files Browse the repository at this point in the history
  • Loading branch information
davidrapan committed Oct 5, 2024
1 parent 9486725 commit 44f5739
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 6 deletions.
8 changes: 5 additions & 3 deletions custom_components/solarman/datetime.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import logging

from zoneinfo import ZoneInfo
from datetime import datetime, time
from datetime import datetime
from functools import cached_property, partial

from homeassistant.config_entries import ConfigEntry
Expand Down Expand Up @@ -54,10 +54,12 @@ def __init__(self, coordinator, sensor):
if registers_length > 3 and registers[3] == registers[0] + 3:
self._multiple_registers = True

@cached_property
@property
def native_value(self) -> datetime | None:
"""Return the value reported by the datetime."""
return self._attr_native_value.replace(tzinfo = ZoneInfo(self.coordinator.hass.config.time_zone))
if not self._attr_native_value:
return None
return datetime.strptime(self._attr_native_value, '%y/%m/%d %H:%M:%S').replace(tzinfo = ZoneInfo(self.coordinator.hass.config.time_zone))

async def async_set_value(self, value: datetime) -> None:
"""Change the date/time."""
Expand Down
4 changes: 3 additions & 1 deletion custom_components/solarman/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,9 @@ def try_parse_datetime(self, rawData, definition, start, length):
value = value[:-1]

try:
self.set_state(key, datetime.strptime(value, '%y/%m/%d %H:%M:%S'))
if not "platform" in definition:
value = datetime.strptime(value, '%y/%m/%d %H:%M:%S')
self.set_state(key, value)
except Exception as e:
_LOGGER.debug(f"ParameterParser.try_parse_datetime: start: {start}, length: {length}, rawData: {rawData}, definition: {definition} [{format_exception(e)}]")

Expand Down
4 changes: 2 additions & 2 deletions custom_components/solarman/time.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ def __init__(self, coordinator, sensor):
if registers_length > 1 and registers[1] == registers[0] + 1:
self._multiple_registers = True

@cached_property
@property
def native_value(self) -> time | None:
"""Return the state of the setting entity."""
if not self._attr_native_value:
return None
if isinstance(self._attr_native_value, list):
if isinstance(self._attr_native_value, list) and len(self._attr_native_value) > 1:
return datetime.strptime(f"{self._attr_native_value[0]}:{self._attr_native_value[1]}", "%H:%M").time()
return datetime.strptime(self._attr_native_value, "%H:%M").time()

Expand Down

0 comments on commit 44f5739

Please sign in to comment.