mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Implement ADR0003 for Netatmo sensor (#24944)
* Remove configurable monitored conditions * Only process existing modules * Remove unused import * Fix linter error
This commit is contained in:
parent
c814b39fdb
commit
e93919673e
@ -10,7 +10,7 @@ import voluptuous as vol
|
|||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_NAME, CONF_MODE, CONF_MONITORED_CONDITIONS,
|
CONF_NAME, CONF_MODE,
|
||||||
TEMP_CELSIUS, DEVICE_CLASS_HUMIDITY, DEVICE_CLASS_TEMPERATURE,
|
TEMP_CELSIUS, DEVICE_CLASS_HUMIDITY, DEVICE_CLASS_TEMPERATURE,
|
||||||
DEVICE_CLASS_BATTERY)
|
DEVICE_CLASS_BATTERY)
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
@ -72,21 +72,15 @@ SENSOR_TYPES = {
|
|||||||
'health_idx': ['Health', '', 'mdi:cloud', None],
|
'health_idx': ['Health', '', 'mdi:cloud', None],
|
||||||
}
|
}
|
||||||
|
|
||||||
MODULE_SCHEMA = vol.Schema({
|
|
||||||
vol.Required(cv.string): vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]),
|
|
||||||
})
|
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Optional(CONF_STATION): cv.string,
|
vol.Optional(CONF_STATION): cv.string,
|
||||||
vol.Optional(CONF_MODULES): MODULE_SCHEMA,
|
vol.Optional(CONF_MODULES): vol.All(cv.ensure_list, [cv.string]),
|
||||||
vol.Optional(CONF_AREAS): vol.All(cv.ensure_list, [
|
vol.Optional(CONF_AREAS): vol.All(cv.ensure_list, [
|
||||||
{
|
{
|
||||||
vol.Required(CONF_LAT_NE): cv.latitude,
|
vol.Required(CONF_LAT_NE): cv.latitude,
|
||||||
vol.Required(CONF_LAT_SW): cv.latitude,
|
vol.Required(CONF_LAT_SW): cv.latitude,
|
||||||
vol.Required(CONF_LON_NE): cv.longitude,
|
vol.Required(CONF_LON_NE): cv.longitude,
|
||||||
vol.Required(CONF_LON_SW): cv.longitude,
|
vol.Required(CONF_LON_SW): cv.longitude,
|
||||||
vol.Required(CONF_MONITORED_CONDITIONS): [vol.In(
|
|
||||||
SUPPORTED_PUBLIC_SENSOR_TYPES)],
|
|
||||||
vol.Optional(CONF_MODE, default=DEFAULT_MODE): vol.In(MODE_TYPES),
|
vol.Optional(CONF_MODE, default=DEFAULT_MODE): vol.In(MODE_TYPES),
|
||||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME_PUBLIC): cv.string
|
vol.Optional(CONF_NAME, default=DEFAULT_NAME_PUBLIC): cv.string
|
||||||
}
|
}
|
||||||
@ -119,7 +113,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||||||
lat_sw=area[CONF_LAT_SW],
|
lat_sw=area[CONF_LAT_SW],
|
||||||
lon_sw=area[CONF_LON_SW]
|
lon_sw=area[CONF_LON_SW]
|
||||||
)
|
)
|
||||||
for sensor_type in area[CONF_MONITORED_CONDITIONS]:
|
for sensor_type in SUPPORTED_PUBLIC_SENSOR_TYPES:
|
||||||
dev.append(NetatmoPublicSensor(
|
dev.append(NetatmoPublicSensor(
|
||||||
area[CONF_NAME],
|
area[CONF_NAME],
|
||||||
data,
|
data,
|
||||||
@ -141,22 +135,27 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||||||
try:
|
try:
|
||||||
data = NetatmoData(auth, data_class, config.get(CONF_STATION))
|
data = NetatmoData(auth, data_class, config.get(CONF_STATION))
|
||||||
except pyatmo.NoDevice:
|
except pyatmo.NoDevice:
|
||||||
_LOGGER.warning(
|
_LOGGER.info(
|
||||||
"No %s devices found",
|
"No %s devices found",
|
||||||
NETATMO_DEVICE_TYPES[data_class.__name__]
|
NETATMO_DEVICE_TYPES[data_class.__name__]
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
# Test if manually configured
|
# Test if manually configured
|
||||||
if CONF_MODULES in config:
|
if CONF_MODULES in config:
|
||||||
module_items = config[CONF_MODULES].items()
|
module_items = config[CONF_MODULES]
|
||||||
module_names = data.get_module_names()
|
for module_name in module_items:
|
||||||
for module_name, monitored_conditions in module_items:
|
if module_name not in data.get_module_names():
|
||||||
if module_name not in module_names:
|
|
||||||
continue
|
continue
|
||||||
for condition in monitored_conditions:
|
for condition in data.station_data.monitoredConditions(
|
||||||
dev.append(NetatmoSensor(
|
module_name):
|
||||||
data, module_name, condition.lower(),
|
dev.append(
|
||||||
config.get(CONF_STATION)))
|
NetatmoSensor(
|
||||||
|
data,
|
||||||
|
module_name,
|
||||||
|
condition.lower(),
|
||||||
|
data.station
|
||||||
|
)
|
||||||
|
)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# otherwise add all modules and conditions
|
# otherwise add all modules and conditions
|
||||||
|
Loading…
x
Reference in New Issue
Block a user