Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion custom_components/adaptive_lighting/switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -913,6 +913,8 @@ def __init__(

# backup data for use in change_switch_settings "configuration" CONF_USE_DEFAULTS
self._config_backup = deepcopy(data)
# Store formatted original configuration for attribute exposure
self._original_config: dict[str, Any] = {}
self._set_changeable_settings(data=data, defaults=None)

# Set other attributes
Expand Down Expand Up @@ -966,6 +968,16 @@ def _set_changeable_settings(
attrdata[k] = v.total_seconds()
self._config.update(attrdata)

# Format original configuration for attribute exposure (only once during init)
if not self._original_config:
original_attrdata = deepcopy(self._config_backup)
for k, v in original_attrdata.items():
if isinstance(v, datetime.date | datetime.datetime):
original_attrdata[k] = v.isoformat()
elif isinstance(v, datetime.timedelta):
original_attrdata[k] = v.total_seconds()
self._original_config.update(original_attrdata)

self.initial_transition = data[CONF_INITIAL_TRANSITION]
self._sleep_transition = data[CONF_SLEEP_TRANSITION]
self._only_once = data[CONF_ONLY_ONCE]
Expand Down Expand Up @@ -1225,7 +1237,12 @@ def icon(self) -> str:
@property
def extra_state_attributes(self) -> dict[str, Any]:
"""Return the attributes of the switch."""
extra_state_attributes: dict[str, Any] = {"configuration": self._config}
extra_state_attributes: dict[str, Any] = {
"configuration": self._config,
"original_configuration": (
self._original_config if self._include_config_in_attributes else {}
),
}
if not self.is_on:
for key in self._settings:
extra_state_attributes[key] = None
Expand Down