|
18 | 18 | CONF_API_KEY, |
19 | 19 | CONF_LATITUDE, |
20 | 20 | CONF_LONGITUDE, |
21 | | - CONF_MONITORED_CONDITIONS, |
22 | 21 | CONF_NAME, |
23 | 22 | CONF_SENSORS, |
24 | | - Platform, |
25 | 23 | ) |
26 | 24 | from homeassistant.core import HomeAssistant |
27 | 25 | from homeassistant.exceptions import ConfigEntryNotReady |
|
33 | 31 |
|
34 | 32 | from .api import ApiError, GismeteoApiClient |
35 | 33 | from .const import ( |
| 34 | + CONF_ADD_SENSORS, |
36 | 35 | CONF_CACHE_DIR, |
37 | | - CONF_FORECAST, |
38 | 36 | CONF_FORECAST_DAYS, |
39 | | - CONF_PLATFORM_FORMAT, |
40 | 37 | COORDINATOR, |
41 | 38 | DOMAIN, |
42 | 39 | DOMAIN_YAML, |
|
51 | 48 |
|
52 | 49 | forecast_days_int = vol.All(vol.Coerce(int), vol.Range(min=0, max=6)) |
53 | 50 |
|
54 | | -SENSORS_SCHEMA = vol.Schema( |
55 | | - { |
56 | | - vol.Optional(CONF_FORECAST_DAYS): forecast_days_int, |
57 | | - vol.Optional(CONF_MONITORED_CONDITIONS): cv.deprecated, |
58 | | - vol.Optional(CONF_FORECAST): cv.deprecated, |
59 | | - } |
60 | | -) |
61 | | - |
62 | 51 | LOCATION_SCHEMA = vol.Schema( |
63 | 52 | { |
64 | 53 | vol.Optional(CONF_NAME): cv.string, |
65 | 54 | vol.Optional(CONF_API_KEY): cv.string, |
66 | 55 | vol.Optional(CONF_LATITUDE): cv.latitude, |
67 | 56 | vol.Optional(CONF_LONGITUDE): cv.longitude, |
68 | | - vol.Optional(CONF_SENSORS): SENSORS_SCHEMA, |
| 57 | + vol.Optional(CONF_SENSORS): cv.deprecated, |
| 58 | + vol.Optional(CONF_ADD_SENSORS, default=False): cv.boolean, |
| 59 | + vol.Optional(CONF_FORECAST_DAYS): forecast_days_int, |
69 | 60 | vol.Optional(CONF_CACHE_DIR): cv.string, |
70 | 61 | } |
71 | 62 | ) |
72 | 63 |
|
73 | 64 | CONFIG_SCHEMA = vol.Schema( |
74 | | - {DOMAIN: cv.schema_with_slug_keys(LOCATION_SCHEMA)}, extra=vol.ALLOW_EXTRA |
| 65 | + {DOMAIN: cv.schema_with_slug_keys(vol.Any(LOCATION_SCHEMA, None))}, |
| 66 | + extra=vol.ALLOW_EXTRA, |
75 | 67 | ) |
76 | 68 |
|
77 | 69 |
|
@@ -99,8 +91,12 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: |
99 | 91 | return True |
100 | 92 |
|
101 | 93 |
|
102 | | -def _get_api_client(hass: HomeAssistant, config: ConfigType) -> GismeteoApiClient: |
| 94 | +def _get_api_client( |
| 95 | + hass: HomeAssistant, config: ConfigType | None |
| 96 | +) -> GismeteoApiClient: |
103 | 97 | """Prepare Gismeteo API client instance.""" |
| 98 | + if config is None: |
| 99 | + config = {} |
104 | 100 | return GismeteoApiClient( |
105 | 101 | async_get_clientsession(hass), |
106 | 102 | latitude=config.get(CONF_LATITUDE, hass.config.latitude), |
@@ -128,26 +124,12 @@ async def _async_get_coordinator(hass: HomeAssistant, unique_id, config: dict): |
128 | 124 | return coordinator |
129 | 125 |
|
130 | 126 |
|
131 | | -def _convert_yaml_config(config: ConfigType) -> ConfigType: |
132 | | - """Convert YAML config to EntryFlow config.""" |
133 | | - cfg = config.copy() |
134 | | - |
135 | | - if CONF_SENSORS in cfg: |
136 | | - cfg.update(cfg[CONF_SENSORS]) |
137 | | - cfg.pop(CONF_SENSORS) |
138 | | - cfg[CONF_PLATFORM_FORMAT.format(Platform.SENSOR)] = True |
139 | | - |
140 | | - return cfg |
141 | | - |
142 | | - |
143 | 127 | async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: |
144 | 128 | """Set up Gismeteo as config entry.""" |
145 | 129 | if entry.source == SOURCE_IMPORT: |
146 | 130 | # Setup from configuration.yaml |
147 | | - for uid, cfg in hass.data[DOMAIN_YAML].items(): |
148 | | - cfg = _convert_yaml_config(cfg) |
149 | | - |
150 | | - coordinator = await _async_get_coordinator(hass, uid, cfg) |
| 131 | + for uid, config in hass.data[DOMAIN_YAML].items(): |
| 132 | + coordinator = await _async_get_coordinator(hass, uid, config) |
151 | 133 | hass.data[DOMAIN][uid] = { |
152 | 134 | COORDINATOR: coordinator, |
153 | 135 | } |
|
0 commit comments