2424
2525from homeassistant .config_entries import ConfigEntry , ConfigFlow , OptionsFlow
2626
27- from .const import DOMAIN , CONF_HOST , CONF_PORT , CONF_INTERVAL , RegisterInfo , SCAN_REGISTERS , CONF_ADVANCED_OPTIONS , CONF_DC_SYSTEM_VOLTAGE , CONF_AC_SYSTEM_VOLTAGE , CONF_DC_CURRENT_LIMIT , CONF_AC_CURRENT_LIMIT , DC_VOLTAGES , AC_VOLTAGES
27+ from .const import DOMAIN , CONF_HOST , CONF_PORT , CONF_INTERVAL , RegisterInfo , SCAN_REGISTERS , CONF_ADVANCED_OPTIONS , CONF_DC_SYSTEM_VOLTAGE , CONF_AC_SYSTEM_VOLTAGE , CONF_DC_CURRENT_LIMIT , CONF_AC_CURRENT_LIMIT , CONF_NUMBER_OF_PHASES , CONF_USE_SLIDERS , DC_VOLTAGES , AC_VOLTAGES , PHASE_CONFIGURATIONS
2828from .hub import VictronHub
2929
3030_LOGGER = logging .getLogger (__name__ )
@@ -152,6 +152,8 @@ async def async_step_advanced(self, user_input=None):
152152 options [CONF_PORT ] = self .port
153153 options [CONF_INTERVAL ] = self .interval
154154 options [CONF_ADVANCED_OPTIONS ] = bool (self .advanced_options )
155+ options [CONF_NUMBER_OF_PHASES ] = int (user_input [CONF_NUMBER_OF_PHASES ])
156+ options [CONF_USE_SLIDERS ] = bool (user_input [CONF_USE_SLIDERS ])
155157 options [CONF_AC_SYSTEM_VOLTAGE ] = int (user_input [CONF_AC_SYSTEM_VOLTAGE ])
156158 options [CONF_DC_SYSTEM_VOLTAGE ] = int (user_input [CONF_DC_SYSTEM_VOLTAGE ])
157159
@@ -172,14 +174,22 @@ async def async_step_advanced(self, user_input=None):
172174 errors = errors ,
173175 data_schema = vol .Schema (
174176 {
175- vol .Required (CONF_AC_SYSTEM_VOLTAGE , default = str (AC_VOLTAGES ["US" ])): SelectSelector (
177+ vol .Required (CONF_AC_SYSTEM_VOLTAGE , default = str (AC_VOLTAGES ["US (120) " ])): SelectSelector (
176178 SelectSelectorConfig (
177179 options = [
178180 SelectOptionDict (value = str (value ), label = key )
179181 for key , value in AC_VOLTAGES .items ()
180182 ]
181183 ),
182184 ),
185+ vol .Required (CONF_NUMBER_OF_PHASES , default = str (PHASE_CONFIGURATIONS ["single phase" ])): SelectSelector (
186+ SelectSelectorConfig (
187+ options = [
188+ SelectOptionDict (value = str (value ), label = key )
189+ for key , value in PHASE_CONFIGURATIONS .items ()
190+ ]
191+ ),
192+ ),
183193 vol .Required (CONF_AC_CURRENT_LIMIT , default = 0 ): vol .All (vol .Coerce (int , "must be a number" )),
184194 vol .Required (CONF_DC_SYSTEM_VOLTAGE , default = str (DC_VOLTAGES ["lifepo4_12v" ])): SelectSelector (
185195 SelectSelectorConfig (
@@ -189,7 +199,8 @@ async def async_step_advanced(self, user_input=None):
189199 ]
190200 ),
191201 ),
192- vol .Required (CONF_DC_CURRENT_LIMIT , default = 0 ): vol .All (vol .Coerce (int , "must be a number" ))
202+ vol .Required (CONF_DC_CURRENT_LIMIT , default = 0 ): vol .All (vol .Coerce (int , "must be a number" )),
203+ vol .Optional (CONF_USE_SLIDERS , default = True ): bool
193204 }))
194205
195206
@@ -333,8 +344,9 @@ def init_read_form(self, errors: dict):
333344
334345 def init_write_form (self , errors : dict ):
335346 config = dict (self .config_entry .options )
336- system_ac_voltage_default = self .config_entry .options .get (CONF_AC_SYSTEM_VOLTAGE , AC_VOLTAGES ["US" ])
347+ system_ac_voltage_default = self .config_entry .options .get (CONF_AC_SYSTEM_VOLTAGE , AC_VOLTAGES ["US (120) " ])
337348 system_dc_voltage_default = self .config_entry .options .get (CONF_DC_SYSTEM_VOLTAGE , DC_VOLTAGES ["lifepo4_12v" ])
349+ system_number_of_phases_default = self .config_entry .options .get (CONF_NUMBER_OF_PHASES , PHASE_CONFIGURATIONS ["single phase" ])
338350 errors = {}
339351 return self .async_show_form (
340352 step_id = "init_write" ,
@@ -352,7 +364,15 @@ def init_write_form(self, errors: dict):
352364 ]
353365 ),
354366 ),
355- vol .Required (CONF_AC_CURRENT_LIMIT , default = config .get (CONF_AC_CURRENT_LIMIT , 0 )): vol .All (vol .Coerce (int , "must be a number" )),
367+ vol .Required (CONF_NUMBER_OF_PHASES , default = str (system_number_of_phases_default )): SelectSelector (
368+ SelectSelectorConfig (
369+ options = [
370+ SelectOptionDict (value = str (value ), label = key )
371+ for key , value in PHASE_CONFIGURATIONS .items ()
372+ ]
373+ ),
374+ ),
375+ vol .Required (CONF_AC_CURRENT_LIMIT , default = config .get (CONF_AC_CURRENT_LIMIT , 1 )): vol .All (vol .Coerce (int , "must be the max current of a single phase as a number" )),
356376 vol .Required (CONF_DC_SYSTEM_VOLTAGE , default = str (system_dc_voltage_default )): SelectSelector (
357377 SelectSelectorConfig (
358378 options = [
@@ -361,7 +381,8 @@ def init_write_form(self, errors: dict):
361381 ]
362382 ),
363383 ),
364- vol .Required (CONF_DC_CURRENT_LIMIT , default = config .get (CONF_DC_CURRENT_LIMIT ,1 )): vol .All (vol .Coerce (int , "must be a number" )),
384+ vol .Required (CONF_DC_CURRENT_LIMIT , default = config .get (CONF_DC_CURRENT_LIMIT ,1 )): vol .All (vol .Coerce (int , "must be the total DC current for the system as a number" )),
385+ vol .Optional (CONF_USE_SLIDERS , default = config .get (CONF_USE_SLIDERS , config .get (CONF_USE_SLIDERS , True ))): bool ,
365386 vol .Optional (CONF_RESCAN , default = False ): bool ,
366387 vol .Optional (CONF_ADVANCED_OPTIONS , default = True ): bool
367388 },
0 commit comments