1 """Demo platform that offers fake update entities."""
3 from __future__
import annotations
20 FAKE_INSTALL_SLEEP_TIME = 0.5
25 config_entry: ConfigEntry,
26 async_add_entities: AddEntitiesCallback,
28 """Set up demo update platform."""
32 unique_id=
"update_no_install",
33 device_name=
"Demo Update No Install",
34 title=
"Awesomesoft Inc.",
35 installed_version=
"1.0.0",
36 latest_version=
"1.0.1",
37 release_summary=
"Awesome update, fixing everything!",
38 release_url=
"https://www.example.com/release/1.0.1",
39 support_install=
False,
42 unique_id=
"update_2_date",
43 device_name=
"Demo No Update",
45 installed_version=
"1.0.0",
46 latest_version=
"1.0.0",
49 unique_id=
"update_addon",
50 device_name=
"Demo add-on",
52 installed_version=
"1.0.0",
53 latest_version=
"1.0.1",
54 release_summary=
"Awesome update, fixing everything!",
55 release_url=
"https://www.example.com/release/1.0.1",
58 unique_id=
"update_light_bulb",
59 device_name=
"Demo Living Room Bulb Update",
60 title=
"Philips Lamps Firmware",
61 installed_version=
"1.93.3",
62 latest_version=
"1.94.2",
63 release_summary=
"Added support for effects",
64 release_url=
"https://www.example.com/release/1.93.3",
65 device_class=UpdateDeviceClass.FIRMWARE,
68 unique_id=
"update_support_progress",
69 device_name=
"Demo Update with Progress",
70 title=
"Philips Lamps Firmware",
71 installed_version=
"1.93.3",
72 latest_version=
"1.94.2",
73 support_progress=
True,
74 release_summary=
"Added support for effects",
75 support_release_notes=
True,
76 release_url=
"https://www.example.com/release/1.93.3",
77 device_class=UpdateDeviceClass.FIRMWARE,
81 unique_id=
"update_support_decimal_progress",
82 device_name=
"Demo Update with Decimal Progress",
83 title=
"Philips Lamps Firmware",
84 installed_version=
"1.93.3",
85 latest_version=
"1.94.2",
86 support_progress=
True,
87 release_summary=
"Added support for effects",
88 support_release_notes=
True,
89 release_url=
"https://www.example.com/release/1.93.3",
90 device_class=UpdateDeviceClass.FIRMWARE,
99 """Fake install an update."""
100 await asyncio.sleep(FAKE_INSTALL_SLEEP_TIME)
104 """Representation of a demo update entity."""
106 _attr_has_entity_name =
True
108 _attr_should_poll =
False
116 installed_version: str |
None,
117 latest_version: str |
None,
118 release_summary: str |
None =
None,
119 release_url: str |
None =
None,
120 support_progress: bool =
False,
121 support_install: bool =
True,
122 support_release_notes: bool =
False,
123 device_class: UpdateDeviceClass |
None =
None,
124 display_precision: int = 0,
125 update_steps: int = 100,
127 """Initialize the Demo select entity."""
137 identifiers={(DOMAIN, unique_id)},
142 self._attr_supported_features |= (
143 UpdateEntityFeature.INSTALL
144 | UpdateEntityFeature.BACKUP
145 | UpdateEntityFeature.SPECIFIC_VERSION
148 self._attr_supported_features |= UpdateEntityFeature.PROGRESS
150 if support_release_notes:
151 self._attr_supported_features |= UpdateEntityFeature.RELEASE_NOTES
154 self, version: str |
None, backup: bool, **kwargs: Any
156 """Install an update."""
159 for progress
in range(0, self.
_update_steps_update_steps, 1):
167 version
if version
is not None else self.
latest_versionlatest_version
172 """Return the release notes."""
174 "Long release notes.\n\n**With** "
175 f
"markdown support!\n\n***\n\n{self.release_summary}"
str|None release_notes(self)
None async_install(self, str|None version, bool backup, **Any kwargs)
None __init__(self, *str unique_id, str device_name, str|None title, str|None installed_version, str|None latest_version, str|None release_summary=None, str|None release_url=None, bool support_progress=False, bool support_install=True, bool support_release_notes=False, UpdateDeviceClass|None device_class=None, int display_precision=0, int update_steps=100)
UpdateEntityFeature supported_features(self)
str|None latest_version(self)
None async_write_ha_state(self)
int|None supported_features(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)