1 """Support for Melnor RainCloud sprinkler water timer."""
3 from __future__
import annotations
7 import voluptuous
as vol
10 PLATFORM_SCHEMA
as SENSOR_PLATFORM_SCHEMA,
20 from .const
import DATA_RAINCLOUD, ICON_MAP
21 from .entity
import RainCloudEntity
23 _LOGGER = logging.getLogger(__name__)
25 SENSORS = [
"battery",
"next_cycle",
"rain_delay",
"watering_time"]
27 PLATFORM_SCHEMA = SENSOR_PLATFORM_SCHEMA.extend(
29 vol.Optional(CONF_MONITORED_CONDITIONS, default=
list(SENSORS)): vol.All(
30 cv.ensure_list, [vol.In(SENSORS)]
35 UNIT_OF_MEASUREMENT_MAP = {
37 "battery": PERCENTAGE,
39 "manual_watering":
"",
41 "rain_delay": UnitOfTime.DAYS,
43 "watering_time": UnitOfTime.MINUTES,
50 add_entities: AddEntitiesCallback,
51 discovery_info: DiscoveryInfoType |
None =
None,
53 """Set up a sensor for a raincloud device."""
54 raincloud = hass.data[DATA_RAINCLOUD].data
57 for sensor_type
in config[CONF_MONITORED_CONDITIONS]:
58 if sensor_type ==
"battery":
59 sensors.append(
RainCloudSensor(raincloud.controller.faucet, sensor_type))
64 for zone
in raincloud.controller.faucet.zones
71 """A sensor implementation for raincloud device."""
75 """Return the state of the sensor."""
80 """Return the units of measurement."""
84 """Get the latest data and updates the states."""
85 _LOGGER.debug(
"Updating RainCloud sensor: %s", self.
_name_name)
93 """Icon to use in the frontend, if any."""
def native_unit_of_measurement(self)
def add_entities(account, async_add_entities, tracked)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
str icon_for_battery_level(int|None battery_level=None, bool charging=False)