Skip to content

Commit 588be48

Browse files
committed
Updates to hub event processor for date/time
1 parent 0dc9f86 commit 588be48

File tree

3 files changed

+18
-12
lines changed

3 files changed

+18
-12
lines changed

custom_components/dirigera_platform/base_classes.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -534,9 +534,7 @@ async def async_update(self):
534534
async def async_set_percentage(self, percentage: int) -> None:
535535
# Convert percent to speed
536536
desired_speed = math.ceil(percentage * 50 / 100)
537-
logger.debug(
538-
"set_percentage got : {}, scaled to : {}".format(percentage, desired_speed)
539-
)
537+
logger.debug("set_percentage got : {}, scaled to : {}".format(percentage, desired_speed))
540538
await self._hass.async_add_executor_job(self._json_data.set_motor_state, desired_speed)
541539

542540
async def async_set_status_light(self, status: bool) -> None:
@@ -575,11 +573,7 @@ async def async_set_preset_mode(self, preset_mode: str):
575573
await self._hass.async_add_executor_job(self._json_data.set_fan_mode, mode_to_set)
576574

577575
async def async_turn_on(self, percentage=None, preset_mode=None) -> None:
578-
logger.debug(
579-
"Airpurifier call to turn_on with percentage: {}, preset_mode: {}".format(
580-
percentage, preset_mode
581-
)
582-
)
576+
logger.debug("Airpurifier call to turn_on with percentage: {}, preset_mode: {}".format(percentage, preset_mode))
583577

584578
if preset_mode is not None:
585579
await self.async_set_preset_mode(preset_mode)

custom_components/dirigera_platform/hub_event_listener.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
logger = logging.getLogger("custom_components.dirigera_platform")
1616

17+
DATE_TIME_FORMAT:str = "%Y-%m-%dT%H:%M:%S.%fZ"
18+
1719
process_events_from = {
1820
"motionSensor" : ["isDetected","isOn","batteryPercentage"],
1921
"outlet" : [ "isOn",
@@ -261,8 +263,20 @@ def on_message(self, ws:Any, ws_msg:str):
261263
if key_attr == "is_on":
262264
turn_on_off = True
263265
logger.debug(f"setting {key_attr} to {attributes[key]}")
264-
setattr(entity._json_data.attributes,key_attr, attributes[key])
265-
logger.debug(entity._json_data)
266+
logger.debug(f"Entity before setting: {entity._json_data}")
267+
268+
value_to_set = attributes[key]
269+
#Need a hack for outlet with date/time entities
270+
if key in ["timeOfLastEnergyReset","totalEnergyConsumedLastUpdated"]:
271+
logger.debug(f"Got into date/time so will set the value accordingly...")
272+
try :
273+
value_to_set = datetime.datetime.strptime(attributes[key], DATE_TIME_FORMAT)
274+
except:
275+
#Ignore the exception
276+
logger.warning(f"Failed to convert {attributes[key]} to date/time...")
277+
278+
setattr(entity._json_data.attributes,key_attr, value_to_set)
279+
logger.debug(f"Entity after setting: {entity._json_data}")
266280
except Exception as ex:
267281
logger.warn(f"Failed to set attribute key: {key} converted to {key_attr} on device: {id}")
268282
logger.warn(ex)

custom_components/dirigera_platform/light.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,6 @@ def available(self):
181181

182182
@property
183183
def device_info(self) -> DeviceInfo:
184-
logger.debug("device info called...")
185184

186185
return DeviceInfo(
187186
identifiers={("dirigera_platform", self._json_data.id)},
@@ -372,7 +371,6 @@ def available(self):
372371

373372
@property
374373
def device_info(self) -> DeviceInfo:
375-
logger.debug("device info device_set called...")
376374

377375
# Register the device for updates
378376
hub_event_listener.register(self.unique_id, self)

0 commit comments

Comments
 (0)