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
46104def 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