1 """The PrusaLink integration."""
3 from __future__
import annotations
5 from pyprusalink
import PrusaLink
6 from pyprusalink.types
import InvalidAuth
21 from .config_flow
import ConfigFlow
22 from .const
import DOMAIN
23 from .coordinator
import (
24 InfoUpdateCoordinator,
26 LegacyStatusCoordinator,
30 PLATFORMS: list[Platform] = [
31 Platform.BINARY_SENSOR,
39 """Set up PrusaLink from a config entry."""
40 if entry.version == 1
and entry.minor_version < 2:
45 entry.data[CONF_HOST],
46 entry.data[CONF_USERNAME],
47 entry.data[CONF_PASSWORD],
56 for coordinator
in coordinators.values():
57 await coordinator.async_config_entry_first_refresh()
59 hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinators
61 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
67 """Migrate old entry."""
68 if config_entry.version > ConfigFlow.VERSION:
72 new_data =
dict(config_entry.data)
73 if config_entry.version == 1:
74 if config_entry.minor_version < 2:
79 password = config_entry.data[CONF_API_KEY]
83 config_entry.data[CONF_HOST],
92 ir.async_create_issue(
95 "firmware_5_1_required",
97 severity=ir.IssueSeverity.ERROR,
98 translation_key=
"firmware_5_1_required",
99 translation_placeholders={
100 "entry_title": config_entry.title,
101 "prusa_mini_firmware_update":
"https://help.prusa3d.com/article/firmware-updating-mini-mini_124784",
102 "prusa_mk4_xl_firmware_update":
"https://help.prusa3d.com/article/how-to-update-firmware-mk4-xl_453086",
111 new_data[CONF_USERNAME] = username
112 new_data[CONF_PASSWORD] = password
114 ir.async_delete_issue(hass, DOMAIN,
"firmware_5_1_required")
115 hass.config_entries.async_update_entry(
116 config_entry, data=new_data, minor_version=2
123 """Unload a config entry."""
124 if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
125 hass.data[DOMAIN].pop(entry.entry_id)
bool async_migrate_entry(HomeAssistant hass, ConfigEntry config_entry)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
httpx.AsyncClient get_async_client(HomeAssistant hass, bool verify_ssl=True)