1 """Support for AVM FRITZ!SmartHome templates."""
3 from pyfritzhome.devicetypes
import FritzhomeTemplate
10 from .const
import DOMAIN
11 from .coordinator
import FritzboxConfigEntry
12 from .entity
import FritzBoxEntity
17 entry: FritzboxConfigEntry,
18 async_add_entities: AddEntitiesCallback,
20 """Set up the FRITZ!SmartHome template from ConfigEntry."""
21 coordinator = entry.runtime_data
24 def _add_entities(templates: set[str] |
None =
None) ->
None:
27 templates = coordinator.new_templates
32 entry.async_on_unload(coordinator.async_add_listener(_add_entities))
34 _add_entities(set(coordinator.data.templates))
38 """Interface between FritzhomeTemplate and hass."""
41 def data(self) -> FritzhomeTemplate:
42 """Return the template data entity."""
43 return self.coordinator.data.templates[self.
ainain]
47 """Return device specific attributes."""
50 identifiers={(DOMAIN, self.
ainain)},
51 configuration_url=self.coordinator.configuration_url,
53 model=
"SmartHome Template",
57 """Apply template and refresh."""
62 """Use Fritzhome to apply the template via ain."""
63 self.coordinator.fritz.apply_template(self.
ainain)
FritzhomeEntityBase data(self)