Skip to content

Commit d046834

Browse files
committed
Merge branch 'develop' into feat/water-heater-heat-pump
2 parents 33c4a73 + 1e3a98a commit d046834

File tree

8 files changed

+547
-263
lines changed

8 files changed

+547
-263
lines changed

custom_components/octopus_energy/__init__.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,13 @@
5151
CONFIG_KIND_TARGET_RATE,
5252
CONFIG_MAIN_HOME_PRO_ADDRESS,
5353
CONFIG_MAIN_HOME_PRO_API_KEY,
54+
CONFIG_MAIN_HOME_PRO_SETTINGS,
5455
CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES,
5556
CONFIG_MAIN_INTELLIGENT_RATE_MODE,
5657
CONFIG_MAIN_INTELLIGENT_RATE_MODE_PENDING_AND_STARTED_DISPATCHES,
58+
CONFIG_MAIN_INTELLIGENT_SETTINGS,
5759
CONFIG_MAIN_OLD_API_KEY,
60+
CONFIG_MAIN_PRICE_CAP_SETTINGS,
5861
CONFIG_VERSION,
5962
DATA_DISCOVERY_MANAGER,
6063
DATA_HEAT_PUMP_CONFIGURATION_AND_STATUS_KEY,
@@ -285,12 +288,12 @@ async def async_setup_dependencies(hass, config):
285288
account_id = config[CONFIG_ACCOUNT_ID]
286289

287290
electricity_price_cap = None
288-
if CONFIG_MAIN_ELECTRICITY_PRICE_CAP in config:
289-
electricity_price_cap = config[CONFIG_MAIN_ELECTRICITY_PRICE_CAP]
291+
if (CONFIG_MAIN_PRICE_CAP_SETTINGS in config and CONFIG_MAIN_ELECTRICITY_PRICE_CAP in config[CONFIG_MAIN_PRICE_CAP_SETTINGS]):
292+
electricity_price_cap = config[CONFIG_MAIN_PRICE_CAP_SETTINGS][CONFIG_MAIN_ELECTRICITY_PRICE_CAP]
290293

291294
gas_price_cap = None
292-
if CONFIG_MAIN_GAS_PRICE_CAP in config:
293-
gas_price_cap = config[CONFIG_MAIN_GAS_PRICE_CAP]
295+
if (CONFIG_MAIN_PRICE_CAP_SETTINGS in config and CONFIG_MAIN_GAS_PRICE_CAP in config[CONFIG_MAIN_PRICE_CAP_SETTINGS]):
296+
gas_price_cap = config[CONFIG_MAIN_PRICE_CAP_SETTINGS][CONFIG_MAIN_GAS_PRICE_CAP]
294297

295298
favour_direct_debit_rates = True
296299
if CONFIG_MAIN_FAVOUR_DIRECT_DEBIT_RATES in config:
@@ -304,9 +307,10 @@ async def async_setup_dependencies(hass, config):
304307
client = OctopusEnergyApiClient(config[CONFIG_MAIN_API_KEY], electricity_price_cap, gas_price_cap, favour_direct_debit_rates=favour_direct_debit_rates)
305308
hass.data[DOMAIN][account_id][DATA_CLIENT] = client
306309

307-
if (CONFIG_MAIN_HOME_PRO_ADDRESS in config and
308-
config[CONFIG_MAIN_HOME_PRO_ADDRESS] is not None):
309-
home_pro_client = OctopusEnergyHomeProApiClient(config[CONFIG_MAIN_HOME_PRO_ADDRESS], config[CONFIG_MAIN_HOME_PRO_API_KEY] if CONFIG_MAIN_HOME_PRO_API_KEY in config else None)
310+
if (CONFIG_MAIN_HOME_PRO_SETTINGS in config and
311+
CONFIG_MAIN_HOME_PRO_ADDRESS in config[CONFIG_MAIN_HOME_PRO_SETTINGS] and
312+
config[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_ADDRESS] is not None):
313+
home_pro_client = OctopusEnergyHomeProApiClient(config[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_ADDRESS], config[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_API_KEY] if CONFIG_MAIN_HOME_PRO_API_KEY in config[CONFIG_MAIN_HOME_PRO_SETTINGS] else None)
310314
hass.data[DOMAIN][account_id][DATA_HOME_PRO_CLIENT] = home_pro_client
311315

312316
# Delete any issues that may have been previously raised
@@ -440,7 +444,9 @@ async def async_setup_dependencies(hass, config):
440444
now - timedelta(hours=1)
441445
)
442446

443-
if CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES not in config or config[CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES] == False:
447+
if (CONFIG_MAIN_INTELLIGENT_SETTINGS not in config or
448+
CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES not in config[CONFIG_MAIN_INTELLIGENT_SETTINGS] or
449+
config[CONFIG_MAIN_INTELLIGENT_SETTINGS][CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES] == False):
444450
intelligent_manual_service_enabled = False
445451

446452
await async_save_cached_intelligent_device(hass, account_id, intelligent_device)
@@ -496,13 +502,16 @@ async def async_setup_dependencies(hass, config):
496502
is_smart_meter = meter["is_smart_meter"]
497503
override = await async_get_meter_debug_override(hass, mpan, serial_number)
498504
tariff_override = override.tariff if override is not None else None
505+
intelligent_rate_mode = (config[CONFIG_MAIN_INTELLIGENT_SETTINGS][CONFIG_MAIN_INTELLIGENT_RATE_MODE]
506+
if CONFIG_MAIN_INTELLIGENT_SETTINGS in config and CONFIG_MAIN_INTELLIGENT_RATE_MODE in config[CONFIG_MAIN_INTELLIGENT_SETTINGS]
507+
else CONFIG_MAIN_INTELLIGENT_RATE_MODE_PENDING_AND_STARTED_DISPATCHES)
499508
await async_setup_electricity_rates_coordinator(hass,
500509
account_id,
501510
mpan,
502511
serial_number,
503512
is_smart_meter,
504513
is_export_meter,
505-
config[CONFIG_MAIN_INTELLIGENT_RATE_MODE] if CONFIG_MAIN_INTELLIGENT_RATE_MODE in config else CONFIG_MAIN_INTELLIGENT_RATE_MODE_PENDING_AND_STARTED_DISPATCHES,
514+
intelligent_rate_mode,
506515
tariff_override)
507516

508517
mock_heat_pump = account_debug_override.mock_heat_pump if account_debug_override is not None else False
@@ -533,7 +542,7 @@ async def async_setup_dependencies(hass, config):
533542
hass,
534543
account_id,
535544
account_debug_override.mock_intelligent_controls if account_debug_override is not None else False,
536-
config[CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES] == True if CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES in config else False,
545+
intelligent_manual_service_enabled,
537546
intelligent_features.planned_dispatches_supported if intelligent_features is not None else True
538547
)
539548

custom_components/octopus_energy/binary_sensor.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
CONFIG_KIND_TARGET_RATE,
2424
CONFIG_ACCOUNT_ID,
2525
CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES,
26+
CONFIG_MAIN_INTELLIGENT_SETTINGS,
2627
DATA_FREE_ELECTRICITY_SESSIONS_COORDINATOR,
2728
DATA_GREENNESS_FORECAST_COORDINATOR,
2829
DATA_INTELLIGENT_DEVICE,
@@ -152,7 +153,9 @@ async def async_setup_main_sensors(hass, entry, async_add_entities):
152153
intelligent_serial_number = hass.data[DOMAIN][account_id][DATA_INTELLIGENT_SERIAL_NUMBER] if DATA_INTELLIGENT_SERIAL_NUMBER in hass.data[DOMAIN][account_id] else None
153154
if intelligent_device is not None and intelligent_mpan is not None and intelligent_serial_number is not None:
154155

155-
if CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES in config and config[CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES] == True:
156+
if (CONFIG_MAIN_INTELLIGENT_SETTINGS not in config or
157+
CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES not in config[CONFIG_MAIN_INTELLIGENT_SETTINGS] or
158+
config[CONFIG_MAIN_INTELLIGENT_SETTINGS][CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES] == True):
156159
platform = entity_platform.async_get_current_platform()
157160
platform.async_register_entity_service(
158161
"refresh_intelligent_dispatches",

custom_components/octopus_energy/config/main.py

Lines changed: 113 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@
55
CONFIG_MAIN_API_KEY,
66
CONFIG_MAIN_ELECTRICITY_PRICE_CAP,
77
CONFIG_MAIN_GAS_PRICE_CAP,
8+
CONFIG_MAIN_HOME_MINI_SETTINGS,
9+
CONFIG_MAIN_HOME_PRO_SETTINGS,
10+
CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES,
11+
CONFIG_MAIN_INTELLIGENT_RATE_MODE,
12+
CONFIG_MAIN_INTELLIGENT_SETTINGS,
813
CONFIG_MAIN_LIVE_ELECTRICITY_CONSUMPTION_REFRESH_IN_MINUTES,
914
CONFIG_MAIN_LIVE_GAS_CONSUMPTION_REFRESH_IN_MINUTES,
1015
CONFIG_MAIN_OLD_ACCOUNT_ID,
1116
CONFIG_MAIN_OLD_API_KEY,
17+
CONFIG_MAIN_PRICE_CAP_SETTINGS,
1218
CONFIG_MAIN_SUPPORTS_LIVE_CONSUMPTION,
1319
CONFIG_MAIN_HOME_PRO_ADDRESS,
1420
CONFIG_MAIN_HOME_PRO_API_KEY
@@ -41,6 +47,58 @@ async def async_migrate_main_config(version: int, data: {}):
4147
if CONFIG_MAIN_HOME_PRO_ADDRESS in new_data:
4248
new_data[CONFIG_MAIN_HOME_PRO_ADDRESS] = f"{new_data[CONFIG_MAIN_HOME_PRO_ADDRESS]}".replace(":8000", "")
4349

50+
if (version <= 6):
51+
if (CONFIG_MAIN_SUPPORTS_LIVE_CONSUMPTION in new_data or
52+
CONFIG_MAIN_LIVE_ELECTRICITY_CONSUMPTION_REFRESH_IN_MINUTES in new_data or
53+
CONFIG_MAIN_LIVE_GAS_CONSUMPTION_REFRESH_IN_MINUTES in new_data):
54+
new_data[CONFIG_MAIN_HOME_MINI_SETTINGS] = {}
55+
56+
if CONFIG_MAIN_SUPPORTS_LIVE_CONSUMPTION in new_data:
57+
new_data[CONFIG_MAIN_HOME_MINI_SETTINGS][CONFIG_MAIN_SUPPORTS_LIVE_CONSUMPTION] = new_data[CONFIG_MAIN_SUPPORTS_LIVE_CONSUMPTION]
58+
del new_data[CONFIG_MAIN_SUPPORTS_LIVE_CONSUMPTION]
59+
60+
if CONFIG_MAIN_LIVE_ELECTRICITY_CONSUMPTION_REFRESH_IN_MINUTES in new_data:
61+
new_data[CONFIG_MAIN_HOME_MINI_SETTINGS][CONFIG_MAIN_LIVE_ELECTRICITY_CONSUMPTION_REFRESH_IN_MINUTES] = new_data[CONFIG_MAIN_LIVE_ELECTRICITY_CONSUMPTION_REFRESH_IN_MINUTES]
62+
del new_data[CONFIG_MAIN_LIVE_ELECTRICITY_CONSUMPTION_REFRESH_IN_MINUTES]
63+
64+
if CONFIG_MAIN_LIVE_GAS_CONSUMPTION_REFRESH_IN_MINUTES in new_data:
65+
new_data[CONFIG_MAIN_HOME_MINI_SETTINGS][CONFIG_MAIN_LIVE_GAS_CONSUMPTION_REFRESH_IN_MINUTES] = new_data[CONFIG_MAIN_LIVE_GAS_CONSUMPTION_REFRESH_IN_MINUTES]
66+
del new_data[CONFIG_MAIN_LIVE_GAS_CONSUMPTION_REFRESH_IN_MINUTES]
67+
68+
if (CONFIG_MAIN_HOME_PRO_ADDRESS in new_data or CONFIG_MAIN_HOME_PRO_API_KEY in new_data):
69+
70+
new_data[CONFIG_MAIN_HOME_PRO_SETTINGS] = {}
71+
72+
if CONFIG_MAIN_HOME_PRO_ADDRESS in new_data:
73+
new_data[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_ADDRESS] = new_data[CONFIG_MAIN_HOME_PRO_ADDRESS]
74+
del new_data[CONFIG_MAIN_HOME_PRO_ADDRESS]
75+
76+
if CONFIG_MAIN_HOME_PRO_API_KEY in new_data:
77+
new_data[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_API_KEY] = new_data[CONFIG_MAIN_HOME_PRO_API_KEY]
78+
del new_data[CONFIG_MAIN_HOME_PRO_API_KEY]
79+
80+
if CONFIG_MAIN_ELECTRICITY_PRICE_CAP in new_data or CONFIG_MAIN_GAS_PRICE_CAP in new_data:
81+
new_data[CONFIG_MAIN_PRICE_CAP_SETTINGS] = {}
82+
83+
if CONFIG_MAIN_ELECTRICITY_PRICE_CAP in new_data:
84+
new_data[CONFIG_MAIN_PRICE_CAP_SETTINGS][CONFIG_MAIN_ELECTRICITY_PRICE_CAP] = new_data[CONFIG_MAIN_ELECTRICITY_PRICE_CAP]
85+
del new_data[CONFIG_MAIN_ELECTRICITY_PRICE_CAP]
86+
87+
if CONFIG_MAIN_GAS_PRICE_CAP in new_data:
88+
new_data[CONFIG_MAIN_PRICE_CAP_SETTINGS][CONFIG_MAIN_GAS_PRICE_CAP] = new_data[CONFIG_MAIN_GAS_PRICE_CAP]
89+
del new_data[CONFIG_MAIN_GAS_PRICE_CAP]
90+
91+
if CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES in new_data or CONFIG_MAIN_INTELLIGENT_RATE_MODE in new_data:
92+
new_data[CONFIG_MAIN_INTELLIGENT_SETTINGS] = {}
93+
94+
if CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES in new_data:
95+
new_data[CONFIG_MAIN_INTELLIGENT_SETTINGS][CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES] = new_data[CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES]
96+
del new_data[CONFIG_MAIN_INTELLIGENT_MANUAL_DISPATCHES]
97+
98+
if CONFIG_MAIN_INTELLIGENT_RATE_MODE in new_data:
99+
new_data[CONFIG_MAIN_INTELLIGENT_SETTINGS][CONFIG_MAIN_INTELLIGENT_RATE_MODE] = new_data[CONFIG_MAIN_INTELLIGENT_RATE_MODE]
100+
del new_data[CONFIG_MAIN_INTELLIGENT_RATE_MODE]
101+
44102
return new_data
45103

46104
def merge_main_config(data: dict, options: dict, updated_config: dict = None):
@@ -52,17 +110,29 @@ def merge_main_config(data: dict, options: dict, updated_config: dict = None):
52110
config.update(updated_config)
53111

54112
# This is the only way to set the unsetting of data
55-
if CONFIG_MAIN_ELECTRICITY_PRICE_CAP not in updated_config and CONFIG_MAIN_ELECTRICITY_PRICE_CAP in config:
56-
config[CONFIG_MAIN_ELECTRICITY_PRICE_CAP] = None
57-
58-
if CONFIG_MAIN_GAS_PRICE_CAP not in updated_config and CONFIG_MAIN_GAS_PRICE_CAP in config:
59-
config[CONFIG_MAIN_GAS_PRICE_CAP] = None
60-
61-
if CONFIG_MAIN_HOME_PRO_ADDRESS not in updated_config and CONFIG_MAIN_HOME_PRO_ADDRESS in config:
62-
config[CONFIG_MAIN_HOME_PRO_ADDRESS] = None
63-
64-
if CONFIG_MAIN_HOME_PRO_API_KEY not in updated_config and CONFIG_MAIN_HOME_PRO_API_KEY in config:
65-
config[CONFIG_MAIN_HOME_PRO_API_KEY] = None
113+
if (CONFIG_MAIN_PRICE_CAP_SETTINGS not in updated_config and
114+
CONFIG_MAIN_ELECTRICITY_PRICE_CAP not in updated_config[CONFIG_MAIN_PRICE_CAP_SETTINGS] and
115+
CONFIG_MAIN_PRICE_CAP_SETTINGS in config and
116+
CONFIG_MAIN_ELECTRICITY_PRICE_CAP in config[CONFIG_MAIN_PRICE_CAP_SETTINGS]):
117+
config[CONFIG_MAIN_PRICE_CAP_SETTINGS][CONFIG_MAIN_ELECTRICITY_PRICE_CAP] = None
118+
119+
if (CONFIG_MAIN_PRICE_CAP_SETTINGS not in updated_config and
120+
CONFIG_MAIN_GAS_PRICE_CAP not in updated_config[CONFIG_MAIN_PRICE_CAP_SETTINGS] and
121+
CONFIG_MAIN_PRICE_CAP_SETTINGS in config and
122+
CONFIG_MAIN_GAS_PRICE_CAP in config[CONFIG_MAIN_PRICE_CAP_SETTINGS]):
123+
config[CONFIG_MAIN_PRICE_CAP_SETTINGS][CONFIG_MAIN_GAS_PRICE_CAP] = None
124+
125+
if (CONFIG_MAIN_HOME_PRO_SETTINGS not in updated_config and
126+
CONFIG_MAIN_HOME_PRO_ADDRESS not in updated_config[CONFIG_MAIN_HOME_PRO_SETTINGS] and
127+
CONFIG_MAIN_HOME_PRO_SETTINGS in config and
128+
CONFIG_MAIN_HOME_PRO_ADDRESS in config[CONFIG_MAIN_HOME_PRO_SETTINGS]):
129+
config[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_ADDRESS] = None
130+
131+
if (CONFIG_MAIN_HOME_PRO_SETTINGS not in updated_config and
132+
CONFIG_MAIN_HOME_PRO_API_KEY not in updated_config[CONFIG_MAIN_HOME_PRO_SETTINGS] and
133+
CONFIG_MAIN_HOME_PRO_SETTINGS in config and
134+
CONFIG_MAIN_HOME_PRO_API_KEY in config[CONFIG_MAIN_HOME_PRO_SETTINGS]):
135+
config[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_API_KEY] = None
66136

67137
return config
68138

@@ -90,32 +160,37 @@ async def async_validate_main_config(data, account_ids = []):
90160
if (CONFIG_MAIN_API_KEY not in errors and account_info is None):
91161
errors[CONFIG_MAIN_API_KEY] = "account_not_found"
92162

93-
if data[CONFIG_MAIN_SUPPORTS_LIVE_CONSUMPTION] == True:
94-
95-
if data[CONFIG_MAIN_LIVE_ELECTRICITY_CONSUMPTION_REFRESH_IN_MINUTES] < 1:
96-
errors[CONFIG_MAIN_LIVE_ELECTRICITY_CONSUMPTION_REFRESH_IN_MINUTES] = "value_greater_than_zero"
97-
98-
if data[CONFIG_MAIN_LIVE_GAS_CONSUMPTION_REFRESH_IN_MINUTES] < 1:
99-
errors[CONFIG_MAIN_LIVE_GAS_CONSUMPTION_REFRESH_IN_MINUTES] = "value_greater_than_zero"
100-
101-
if ((CONFIG_MAIN_HOME_PRO_API_KEY in data and
102-
data[CONFIG_MAIN_HOME_PRO_API_KEY] is not None and
103-
(CONFIG_MAIN_HOME_PRO_ADDRESS not in data or data[CONFIG_MAIN_HOME_PRO_ADDRESS] is None))):
104-
errors[CONFIG_MAIN_HOME_PRO_ADDRESS] = "all_home_pro_values_not_set"
105-
106-
if (CONFIG_MAIN_HOME_PRO_ADDRESS in data and
107-
data[CONFIG_MAIN_HOME_PRO_ADDRESS] is not None and
108-
CONFIG_MAIN_HOME_PRO_API_KEY in data and
109-
data[CONFIG_MAIN_HOME_PRO_API_KEY] is not None):
110-
home_pro_client = OctopusEnergyHomeProApiClient(data[CONFIG_MAIN_HOME_PRO_ADDRESS], data[CONFIG_MAIN_HOME_PRO_API_KEY] if CONFIG_MAIN_HOME_PRO_API_KEY in data else None)
111-
112-
try:
113-
can_connect = await home_pro_client.async_ping()
114-
if can_connect == False:
115-
errors[CONFIG_MAIN_HOME_PRO_ADDRESS] = "home_pro_not_responding"
116-
except AuthenticationException:
117-
errors[CONFIG_MAIN_HOME_PRO_ADDRESS] = "home_pro_authentication_failed"
118-
except:
119-
errors[CONFIG_MAIN_HOME_PRO_ADDRESS] = "home_pro_connection_failed"
163+
if CONFIG_MAIN_HOME_MINI_SETTINGS in data and data[CONFIG_MAIN_HOME_MINI_SETTINGS][CONFIG_MAIN_SUPPORTS_LIVE_CONSUMPTION] == True:
164+
errors[CONFIG_MAIN_HOME_MINI_SETTINGS] = {}
165+
166+
if data[CONFIG_MAIN_HOME_MINI_SETTINGS][CONFIG_MAIN_LIVE_ELECTRICITY_CONSUMPTION_REFRESH_IN_MINUTES] < 1:
167+
errors[CONFIG_MAIN_HOME_MINI_SETTINGS][CONFIG_MAIN_LIVE_ELECTRICITY_CONSUMPTION_REFRESH_IN_MINUTES] = "value_greater_than_zero"
168+
169+
if data[CONFIG_MAIN_HOME_MINI_SETTINGS][CONFIG_MAIN_LIVE_GAS_CONSUMPTION_REFRESH_IN_MINUTES] < 1:
170+
errors[CONFIG_MAIN_HOME_MINI_SETTINGS][CONFIG_MAIN_LIVE_GAS_CONSUMPTION_REFRESH_IN_MINUTES] = "value_greater_than_zero"
171+
172+
if len(errors[CONFIG_MAIN_HOME_MINI_SETTINGS]) < 1:
173+
del errors[CONFIG_MAIN_HOME_MINI_SETTINGS]
174+
175+
if CONFIG_MAIN_HOME_PRO_SETTINGS in data:
176+
if ((CONFIG_MAIN_HOME_PRO_API_KEY in data[CONFIG_MAIN_HOME_PRO_SETTINGS] and
177+
data[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_API_KEY] is not None and
178+
(CONFIG_MAIN_HOME_PRO_ADDRESS not in data[CONFIG_MAIN_HOME_PRO_SETTINGS] or data[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_ADDRESS] is None))):
179+
errors[CONFIG_MAIN_HOME_PRO_SETTINGS] = "all_home_pro_values_not_set"
180+
181+
if (CONFIG_MAIN_HOME_PRO_ADDRESS in data[CONFIG_MAIN_HOME_PRO_SETTINGS] and
182+
data[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_ADDRESS] is not None and
183+
CONFIG_MAIN_HOME_PRO_API_KEY in data[CONFIG_MAIN_HOME_PRO_SETTINGS] and
184+
data[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_API_KEY] is not None):
185+
home_pro_client = OctopusEnergyHomeProApiClient(data[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_ADDRESS], data[CONFIG_MAIN_HOME_PRO_SETTINGS][CONFIG_MAIN_HOME_PRO_API_KEY] if CONFIG_MAIN_HOME_PRO_API_KEY in data[CONFIG_MAIN_HOME_PRO_SETTINGS] else None)
186+
187+
try:
188+
can_connect = await home_pro_client.async_ping()
189+
if can_connect == False:
190+
errors[CONFIG_MAIN_HOME_PRO_SETTINGS] = "home_pro_not_responding"
191+
except AuthenticationException:
192+
errors[CONFIG_MAIN_HOME_PRO_SETTINGS] = "home_pro_authentication_failed"
193+
except:
194+
errors[CONFIG_MAIN_HOME_PRO_SETTINGS] = "home_pro_connection_failed"
120195

121196
return errors

0 commit comments

Comments
 (0)