Skip to content

Commit 64a7b68

Browse files
committed
fixed an issue with the options dialog not saving
1 parent 68a4436 commit 64a7b68

File tree

4 files changed

+68
-129
lines changed

4 files changed

+68
-129
lines changed

custom_components/mypyllant/config_flow.py

Lines changed: 64 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,9 @@
2424
DEFAULT_QUICK_VETO_DURATION,
2525
DEFAULT_HOLIDAY_DURATION,
2626
)
27-
from . import OPTION_UPDATE_INTERVAL_DAILY, DEFAULT_UPDATE_INTERVAL_DAILY
27+
from . import OPTION_UPDATE_INTERVAL_DAILY
2828

2929
from .const import (
30-
DEFAULT_COUNTRY,
3130
DEFAULT_REFRESH_DELAY,
3231
DEFAULT_TIME_PROGRAM_OVERWRITE,
3332
DEFAULT_UPDATE_INTERVAL,
@@ -101,6 +100,66 @@
101100
},
102101
)
103102

103+
OPTIONS_SCHEMA = vol.Schema(
104+
{
105+
vol.Required(
106+
OPTION_UPDATE_INTERVAL,
107+
default=DEFAULT_UPDATE_INTERVAL,
108+
): positive_int,
109+
vol.Optional(
110+
OPTION_UPDATE_INTERVAL_DAILY,
111+
): positive_int,
112+
vol.Required(
113+
OPTION_REFRESH_DELAY,
114+
default=DEFAULT_REFRESH_DELAY,
115+
): positive_int,
116+
vol.Required(
117+
OPTION_DEFAULT_QUICK_VETO_DURATION,
118+
default=DEFAULT_QUICK_VETO_DURATION,
119+
): positive_int,
120+
vol.Required(
121+
OPTION_DEFAULT_HOLIDAY_DURATION,
122+
default=DEFAULT_HOLIDAY_DURATION,
123+
): positive_int,
124+
vol.Required(
125+
OPTION_DEFAULT_HOLIDAY_SETPOINT,
126+
default=DEFAULT_HOLIDAY_SETPOINT,
127+
): vol.All(vol.Coerce(float), vol.Clamp(min=0, max=30)),
128+
vol.Required(
129+
OPTION_DEFAULT_MANUAL_COOLING_DURATION,
130+
default=DEFAULT_MANUAL_COOLING_DURATION,
131+
): positive_int,
132+
vol.Required(
133+
OPTION_TIME_PROGRAM_OVERWRITE,
134+
default=DEFAULT_TIME_PROGRAM_OVERWRITE,
135+
): bool,
136+
vol.Required(
137+
OPTION_DEFAULT_DHW_LEGIONELLA_PROTECTION_TEMPERATURE,
138+
default=DEFAULT_DHW_LEGIONELLA_PROTECTION_TEMPERATURE,
139+
): vol.All(vol.Coerce(float), vol.Clamp(min=0, max=100)),
140+
vol.Required(
141+
OPTION_FETCH_RTS,
142+
default=DEFAULT_FETCH_RTS,
143+
): bool,
144+
vol.Required(
145+
OPTION_FETCH_MPC,
146+
default=DEFAULT_FETCH_MPC,
147+
): bool,
148+
vol.Required(
149+
OPTION_FETCH_AMBISENSE_ROOMS,
150+
default=DEFAULT_FETCH_AMBISENSE_ROOMS,
151+
): bool,
152+
vol.Required(
153+
OPTION_FETCH_ENERGY_MANAGEMENT,
154+
default=DEFAULT_FETCH_ENERGY_MANAGEMENT,
155+
): bool,
156+
vol.Required(
157+
OPTION_FETCH_EEBUS,
158+
default=DEFAULT_FETCH_EEBUS,
159+
): bool,
160+
}
161+
)
162+
104163

105164
async def validate_input(hass: HomeAssistant, data: dict) -> str:
106165
async with MyPyllantAPI(**data) as api:
@@ -114,133 +173,12 @@ async def async_step_init(
114173
) -> FlowResult:
115174
"""Manage the options."""
116175
if user_input is not None:
117-
return self.async_create_entry(title="", data=user_input)
118-
119-
config_country = self.config_entry.data.get(OPTION_COUNTRY, DEFAULT_COUNTRY)
120-
config_brand = self.config_entry.data.get(OPTION_BRAND, DEFAULT_BRAND)
176+
return self.async_create_entry(data=user_input)
121177

122178
return self.async_show_form(
123179
step_id="init",
124-
data_schema=vol.Schema(
125-
{
126-
vol.Required(
127-
OPTION_UPDATE_INTERVAL,
128-
default=self.config_entry.options.get(
129-
OPTION_UPDATE_INTERVAL, DEFAULT_UPDATE_INTERVAL
130-
),
131-
): positive_int,
132-
vol.Optional(
133-
OPTION_UPDATE_INTERVAL_DAILY,
134-
default=self.config_entry.options.get(
135-
OPTION_UPDATE_INTERVAL_DAILY, DEFAULT_UPDATE_INTERVAL_DAILY
136-
),
137-
): positive_int,
138-
vol.Required(
139-
OPTION_REFRESH_DELAY,
140-
default=self.config_entry.options.get(
141-
OPTION_REFRESH_DELAY, DEFAULT_REFRESH_DELAY
142-
),
143-
): positive_int,
144-
vol.Required(
145-
OPTION_DEFAULT_QUICK_VETO_DURATION,
146-
default=self.config_entry.options.get(
147-
OPTION_DEFAULT_QUICK_VETO_DURATION,
148-
DEFAULT_QUICK_VETO_DURATION,
149-
),
150-
): positive_int,
151-
vol.Required(
152-
OPTION_DEFAULT_HOLIDAY_DURATION,
153-
default=self.config_entry.options.get(
154-
OPTION_DEFAULT_HOLIDAY_DURATION,
155-
DEFAULT_HOLIDAY_DURATION,
156-
),
157-
): positive_int,
158-
vol.Required(
159-
OPTION_DEFAULT_HOLIDAY_SETPOINT,
160-
default=self.config_entry.options.get(
161-
OPTION_DEFAULT_HOLIDAY_SETPOINT,
162-
DEFAULT_HOLIDAY_SETPOINT,
163-
),
164-
): vol.All(vol.Coerce(float), vol.Clamp(min=0, max=30)),
165-
vol.Required(
166-
OPTION_DEFAULT_MANUAL_COOLING_DURATION,
167-
default=self.config_entry.options.get(
168-
OPTION_DEFAULT_MANUAL_COOLING_DURATION,
169-
DEFAULT_MANUAL_COOLING_DURATION,
170-
),
171-
): positive_int,
172-
vol.Required(
173-
OPTION_TIME_PROGRAM_OVERWRITE,
174-
default=self.config_entry.options.get(
175-
OPTION_TIME_PROGRAM_OVERWRITE,
176-
DEFAULT_TIME_PROGRAM_OVERWRITE,
177-
),
178-
): bool,
179-
vol.Required(
180-
OPTION_DEFAULT_DHW_LEGIONELLA_PROTECTION_TEMPERATURE,
181-
default=self.config_entry.options.get(
182-
OPTION_DEFAULT_DHW_LEGIONELLA_PROTECTION_TEMPERATURE,
183-
DEFAULT_DHW_LEGIONELLA_PROTECTION_TEMPERATURE,
184-
),
185-
): float,
186-
vol.Required(
187-
OPTION_BRAND,
188-
default=self.config_entry.options.get(
189-
OPTION_BRAND, config_brand
190-
),
191-
): selector.SelectSelector(
192-
selector.SelectSelectorConfig(
193-
options=_BRANDS_OPTIONS,
194-
mode=selector.SelectSelectorMode.LIST,
195-
),
196-
),
197-
vol.Optional(
198-
OPTION_COUNTRY,
199-
default=self.config_entry.options.get(
200-
OPTION_COUNTRY, config_country
201-
),
202-
): selector.SelectSelector(
203-
selector.SelectSelectorConfig(
204-
options=_COUNTRIES_OPTIONS,
205-
mode=selector.SelectSelectorMode.DROPDOWN,
206-
),
207-
),
208-
vol.Required(
209-
OPTION_FETCH_RTS,
210-
default=self.config_entry.options.get(
211-
OPTION_FETCH_RTS,
212-
DEFAULT_FETCH_RTS,
213-
),
214-
): bool,
215-
vol.Required(
216-
OPTION_FETCH_MPC,
217-
default=self.config_entry.options.get(
218-
OPTION_FETCH_MPC,
219-
DEFAULT_FETCH_MPC,
220-
),
221-
): bool,
222-
vol.Required(
223-
OPTION_FETCH_AMBISENSE_ROOMS,
224-
default=self.config_entry.options.get(
225-
OPTION_FETCH_AMBISENSE_ROOMS,
226-
DEFAULT_FETCH_AMBISENSE_ROOMS,
227-
),
228-
): bool,
229-
vol.Required(
230-
OPTION_FETCH_ENERGY_MANAGEMENT,
231-
default=self.config_entry.options.get(
232-
OPTION_FETCH_ENERGY_MANAGEMENT,
233-
DEFAULT_FETCH_ENERGY_MANAGEMENT,
234-
),
235-
): bool,
236-
vol.Required(
237-
OPTION_FETCH_EEBUS,
238-
default=self.config_entry.options.get(
239-
OPTION_FETCH_EEBUS,
240-
DEFAULT_FETCH_EEBUS,
241-
),
242-
): bool,
243-
}
180+
data_schema=self.add_suggested_values_to_schema(
181+
OPTIONS_SCHEMA, self.config_entry.options
244182
),
245183
)
246184

custom_components/mypyllant/manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"iot_class": "cloud_polling",
1111
"issue_tracker": "https://github.com/signalkraft/mypyllant-component/issues",
1212
"requirements": [
13-
"myPyllant==0.9.0b0"
13+
"myPyllant==0.9.0b1"
1414
],
15-
"version": "v0.9.0b2"
15+
"version": "v0.9.0b3"
1616
}

dev-requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ types-PyYAML~=6.0.12.20240311
1111

1212
# Need specific versions
1313
pytest-homeassistant-custom-component==0.13.200
14-
myPyllant==0.9.0b0
14+
myPyllant==0.9.0b1
1515

1616
# Versions handled by pytest-homeassistant-custom-component
1717
freezegun

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ addopts = """
1818
--strict-markers
1919
--cov=custom_components"""
2020
asyncio_mode = "auto"
21+
asyncio_default_fixture_loop_scope = "function"
2122

2223
[tool.mypy]
2324
python_version = "3.12"

0 commit comments

Comments
 (0)