Simplify zwave_js update entity (#77572)
parent
3ba1fbe69d
commit
0c35166a7b
|
@ -67,7 +67,6 @@ class ZWaveNodeFirmwareUpdate(UpdateEntity):
|
||||||
"""Initialize a Z-Wave device firmware update entity."""
|
"""Initialize a Z-Wave device firmware update entity."""
|
||||||
self.driver = driver
|
self.driver = driver
|
||||||
self.node = node
|
self.node = node
|
||||||
self.available_firmware_updates: list[FirmwareUpdateInfo] = []
|
|
||||||
self._latest_version_firmware: FirmwareUpdateInfo | None = None
|
self._latest_version_firmware: FirmwareUpdateInfo | None = None
|
||||||
self._status_unsub: Callable[[], None] | None = None
|
self._status_unsub: Callable[[], None] | None = None
|
||||||
|
|
||||||
|
@ -98,12 +97,16 @@ class ZWaveNodeFirmwareUpdate(UpdateEntity):
|
||||||
if not self._status_unsub:
|
if not self._status_unsub:
|
||||||
self._status_unsub = self.node.once("wake up", self._update_on_wake_up)
|
self._status_unsub = self.node.once("wake up", self._update_on_wake_up)
|
||||||
return
|
return
|
||||||
self.available_firmware_updates = (
|
if available_firmware_updates := (
|
||||||
await self.driver.controller.async_get_available_firmware_updates(
|
await self.driver.controller.async_get_available_firmware_updates(
|
||||||
self.node, API_KEY_FIRMWARE_UPDATE_SERVICE
|
self.node, API_KEY_FIRMWARE_UPDATE_SERVICE
|
||||||
)
|
)
|
||||||
)
|
):
|
||||||
self._async_process_available_updates(write_state)
|
self._latest_version_firmware = max(
|
||||||
|
available_firmware_updates,
|
||||||
|
key=lambda x: AwesomeVersion(x.version),
|
||||||
|
)
|
||||||
|
self._async_process_available_updates(write_state)
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _async_process_available_updates(self, write_state: bool = True) -> None:
|
def _async_process_available_updates(self, write_state: bool = True) -> None:
|
||||||
|
@ -114,18 +117,11 @@ class ZWaveNodeFirmwareUpdate(UpdateEntity):
|
||||||
"""
|
"""
|
||||||
# If we have an available firmware update that is a higher version than what's
|
# If we have an available firmware update that is a higher version than what's
|
||||||
# on the node, we should advertise it, otherwise we are on the latest version
|
# on the node, we should advertise it, otherwise we are on the latest version
|
||||||
if self.available_firmware_updates and AwesomeVersion(
|
if (firmware := self._latest_version_firmware) and AwesomeVersion(
|
||||||
(
|
firmware.version
|
||||||
firmware := max(
|
|
||||||
self.available_firmware_updates,
|
|
||||||
key=lambda x: AwesomeVersion(x.version),
|
|
||||||
)
|
|
||||||
).version
|
|
||||||
) > AwesomeVersion(self.node.firmware_version):
|
) > AwesomeVersion(self.node.firmware_version):
|
||||||
self._latest_version_firmware = firmware
|
|
||||||
self._attr_latest_version = firmware.version
|
self._attr_latest_version = firmware.version
|
||||||
else:
|
else:
|
||||||
self._latest_version_firmware = None
|
|
||||||
self._attr_latest_version = self._attr_installed_version
|
self._attr_latest_version = self._attr_installed_version
|
||||||
if write_state:
|
if write_state:
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
|
@ -153,7 +149,7 @@ class ZWaveNodeFirmwareUpdate(UpdateEntity):
|
||||||
raise HomeAssistantError(err) from err
|
raise HomeAssistantError(err) from err
|
||||||
else:
|
else:
|
||||||
self._attr_installed_version = firmware.version
|
self._attr_installed_version = firmware.version
|
||||||
self.available_firmware_updates.remove(firmware)
|
self._latest_version_firmware = None
|
||||||
self._async_process_available_updates()
|
self._async_process_available_updates()
|
||||||
finally:
|
finally:
|
||||||
self._attr_in_progress = False
|
self._attr_in_progress = False
|
||||||
|
|
Loading…
Reference in New Issue