1 """Support for image which integrates with other components."""
3 from __future__
import annotations
8 import voluptuous
as vol
27 from .
import TriggerUpdateCoordinator
28 from .const
import CONF_PICTURE
29 from .template_entity
import TemplateEntity, make_template_entity_common_schema
30 from .trigger_entity
import TriggerEntity
32 _LOGGER = logging.getLogger(__name__)
34 DEFAULT_NAME =
"Template Image"
36 GET_IMAGE_TIMEOUT = 10
38 IMAGE_SCHEMA = vol.Schema(
40 vol.Required(CONF_URL): cv.template,
41 vol.Optional(CONF_VERIFY_SSL, default=
True): bool,
46 IMAGE_CONFIG_SCHEMA = vol.Schema(
48 vol.Optional(CONF_NAME): cv.template,
49 vol.Required(CONF_URL): cv.template,
50 vol.Optional(CONF_VERIFY_SSL, default=
True): bool,
51 vol.Optional(CONF_DEVICE_ID): selector.DeviceSelector(),
57 hass: HomeAssistant, definitions: list[dict[str, Any]], unique_id_prefix: str |
None
58 ) -> list[StateImageEntity]:
59 """Create the template image."""
61 for definition
in definitions:
62 unique_id = definition.get(CONF_UNIQUE_ID)
63 if unique_id
and unique_id_prefix:
64 unique_id = f
"{unique_id_prefix}-{unique_id}"
72 async_add_entities: AddEntitiesCallback,
73 discovery_info: DiscoveryInfoType |
None =
None,
75 """Set up the template image."""
76 if discovery_info
is None:
78 "Template image entities can only be configured under template:"
82 if "coordinator" in discovery_info:
85 for config
in discovery_info[
"entities"]
91 hass, discovery_info[
"entities"], discovery_info[
"unique_id"]
98 config_entry: ConfigEntry,
99 async_add_entities: AddEntitiesCallback,
101 """Initialize config entry."""
102 _options =
dict(config_entry.options)
103 _options.pop(
"template_type")
111 """Representation of a template image."""
113 _attr_should_poll =
False
114 _attr_image_url: str |
None =
None
119 config: dict[str, Any],
120 unique_id: str |
None,
122 """Initialize the image."""
123 TemplateEntity.__init__(self, hass, config=config, unique_id=unique_id)
124 ImageEntity.__init__(self, hass, config[CONF_VERIFY_SSL])
128 config.get(CONF_DEVICE_ID),
133 """Return entity picture."""
135 return TemplateEntity.entity_picture.__get__(self)
137 return ImageEntity.entity_picture.fget(self)
141 if isinstance(result, TemplateError):
150 """Set up templates."""
156 """Image entity based on trigger data."""
158 _attr_image_url: str |
None =
None
160 domain = IMAGE_DOMAIN
161 extra_template_keys = (CONF_URL,)
166 coordinator: TriggerUpdateCoordinator,
169 """Initialize the entity."""
170 TriggerEntity.__init__(self, hass, coordinator, config)
171 ImageEntity.__init__(self, hass, config[CONF_VERIFY_SSL])
175 """Return entity picture."""
177 if CONF_PICTURE
in self._config:
178 return TriggerEntity.entity_picture.fget(self)
179 return ImageEntity.entity_picture.fget(self)
183 """Process new data."""
None _async_setup_templates(self)
str|None entity_picture(self)
def _update_url(self, result)
None __init__(self, HomeAssistant hass, dict[str, Any] config, str|None unique_id)
None __init__(self, HomeAssistant hass, TriggerUpdateCoordinator coordinator, dict config)
str|None entity_picture(self)
None add_template_attribute(self, str attribute, Template template, Callable[[Any], Any]|None validator=None, Callable[[Any], None]|None on_update=None, bool none_on_template_error=False)
web.Response get(self, web.Request request, str config_key)
None async_setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback async_add_entities, DiscoveryInfoType|None discovery_info=None)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
list[StateImageEntity] _async_create_entities(HomeAssistant hass, list[dict[str, Any]] definitions, str|None unique_id_prefix)
vol.Schema make_template_entity_common_schema(str default_name)
dr.DeviceInfo|None async_device_info_to_link_from_device_id(HomeAssistant hass, str|None device_id)