Skip to content

Commit 50305b5

Browse files
committed
Fixed hub_event update of datetime entities
1 parent bf91257 commit 50305b5

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

custom_components/dirigera_platform/base_classes.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626

2727
logger = logging.getLogger("custom_components.dirigera_platform")
2828

29+
DATE_TIME_FORMAT:str = "%Y-%m-%dT%H:%M:%S.%fZ"
30+
2931
def induce_properties(class_to_induce, attr):
3032
for key in attr.keys():
3133
logger.debug(f"Inducing class {class_to_induce.__name__} property {key} : value {attr[key]}")
@@ -824,7 +826,7 @@ def __init__(self, device):
824826
icon="mdi:lightning-bolt-outline",
825827
device_class=SensorDeviceClass.ENERGY,
826828
state_class=SensorStateClass.TOTAL_INCREASING)
827-
829+
828830
@property
829831
def native_value(self):
830832
return getattr(self._device, "energy_consumed_at_last_reset")
@@ -841,6 +843,19 @@ def __init__(self, device):
841843
def native_value(self):
842844
return getattr(self._device, "time_of_last_energy_reset")
843845

846+
@property
847+
def time_of_last_energy_reset(self):
848+
return self.native_value()
849+
850+
@time_of_last_energy_reset.setter
851+
def time_of_last_energy_reset(self, value):
852+
# This is called from hub events where its a str
853+
try:
854+
dt_value = datetime.datetime.strptime(value, DATE_TIME_FORMAT)
855+
setattr(self._device,"time_of_last_energy_reset",dt_value)
856+
except:
857+
logger.warning(f"Failed to set time_of_last_energy_reset in sensor using value : {value}")
858+
844859
class total_energy_consumed_last_updated_sensor(ikea_base_device_sensor, DateTimeEntity):
845860
def __init__(self, device):
846861
super().__init__(device,"total_energy_consumed_last_updated","%Y-%m-%dT%H:%M:%S.%f%z","TECLU01"," Time Energy Consumed Last Updated")
@@ -854,4 +869,17 @@ def __init__(self, device):
854869

855870
@property
856871
def native_value(self):
857-
return getattr(self._device, "total_energy_consumed_last_updated")
872+
return getattr(self._device, "total_energy_consumed_last_updated")
873+
874+
@property
875+
def total_energy_consumed_last_updated(self):
876+
return self.native_value()
877+
878+
@total_energy_consumed_last_updated.setter
879+
def time_of_last_energy_reset(self, value):
880+
# This is called from hub events where its a str
881+
try:
882+
dt_value = datetime.datetime.strptime(value, DATE_TIME_FORMAT)
883+
setattr(self._device,"total_energy_consumed_last_updated",dt_value)
884+
except:
885+
logger.warning(f"Failed to set total_energy_consumed_last_updated in sensor using value : {value}")

0 commit comments

Comments
 (0)