1 """Support for Yardian integration."""
3 from __future__
import annotations
7 import voluptuous
as vol
17 from .const
import DEFAULT_WATERING_DURATION, DOMAIN
18 from .coordinator
import YardianUpdateCoordinator
20 SERVICE_START_IRRIGATION =
"start_irrigation"
21 SERVICE_SCHEMA_START_IRRIGATION: VolDictType = {
22 vol.Required(
"duration"): cv.positive_int,
28 config_entry: ConfigEntry,
29 async_add_entities: AddEntitiesCallback,
31 """Set up entry for a Yardian irrigation switches."""
32 coordinator = hass.data[DOMAIN][config_entry.entry_id]
38 for i
in range(len(coordinator.data.zones))
41 platform = entity_platform.async_get_current_platform()
42 platform.async_register_entity_service(
43 SERVICE_START_IRRIGATION,
44 SERVICE_SCHEMA_START_IRRIGATION,
50 """Representation of a Yardian switch."""
52 _attr_has_entity_name =
True
53 _attr_translation_key =
"switch"
55 def __init__(self, coordinator: YardianUpdateCoordinator, zone_id) ->
None:
56 """Initialize a Yardian Switch Device."""
64 """Return the zone name."""
65 return self.coordinator.data.zones[self.
_zone_id_zone_id][0]
69 """Return true if switch is on."""
70 return self.
_zone_id_zone_id
in self.coordinator.data.active_zones
74 """Return the switch is available or not."""
75 return self.coordinator.data.zones[self.
_zone_id_zone_id][1] == 1
78 """Turn the switch on."""
79 await self.coordinator.controller.start_irrigation(
81 kwargs.get(
"duration", DEFAULT_WATERING_DURATION),
86 """Turn the switch off."""
87 await self.coordinator.controller.stop_irrigation()
None __init__(self, YardianUpdateCoordinator coordinator, zone_id)
None async_turn_on(self, **Any kwargs)
None async_turn_off(self, **Any kwargs)
None async_request_refresh(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)