@@ -857,42 +857,46 @@ def _appliance_measurements(
857857 meas_rn = measurement
858858 if new_name := getattr (attrs , ATTR_NAME , None ):
859859 meas_rn = new_name
860- # measurements with states "on" or "off" that need to be passed directly
861- if meas_rn == "select_dhw_mode" :
862- data ["select_dhw_mode" ] = appl_p_loc .text
863- elif meas_rn in BINARY_SENSORS :
864- bs_key = cast (BinarySensorType , meas_rn )
865- bs_value = cast (
866- bool ,
867- format_measure (
868- appl_p_loc .text , getattr (attrs , ATTR_UNIT_OF_MEASUREMENT )
869- ),
870- )
871- data ["binary_sensors" ][bs_key ] = bs_value
872- elif meas_rn in SENSORS :
873- s_key = cast (SensorType , meas_rn )
874- s_value = format_measure (
875- appl_p_loc .text , getattr (attrs , ATTR_UNIT_OF_MEASUREMENT )
876- )
877- data ["sensors" ][s_key ] = s_value
878- elif meas_rn in SWITCHES :
879- sw_key = cast (SwitchType , meas_rn )
880- sw_value = cast (
881- bool ,
882- format_measure (
883- appl_p_loc .text , getattr (attrs , ATTR_UNIT_OF_MEASUREMENT )
884- ),
885- )
886- data ["switches" ][sw_key ] = sw_value
887- elif meas_rn == "c_heating_state" :
888- data ["c_heating_state" ] = cast (
889- bool ,
890- format_measure (
860+ match meas_rn :
861+ # measurements with states "on" or "off" that need to be passed directly
862+ case "select_dhw_mode" :
863+ data ["select_dhw_mode" ] = appl_p_loc .text
864+ case _ as meas_rn if meas_rn in BINARY_SENSORS :
865+ bs_key = cast (BinarySensorType , meas_rn )
866+ bs_value = cast (
867+ bool ,
868+ format_measure (
869+ appl_p_loc .text ,
870+ getattr (attrs , ATTR_UNIT_OF_MEASUREMENT ),
871+ ),
872+ )
873+ data ["binary_sensors" ][bs_key ] = bs_value
874+ case _ as meas_rn if meas_rn in SENSORS :
875+ s_key = cast (SensorType , meas_rn )
876+ s_value = format_measure (
891877 appl_p_loc .text , getattr (attrs , ATTR_UNIT_OF_MEASUREMENT )
892- ),
893- )
894- elif meas_rn == "elga_status_code" :
895- data ["elga_status_code" ] = int (appl_p_loc .text )
878+ )
879+ data ["sensors" ][s_key ] = s_value
880+ case _ as meas_rn if meas_rn in SWITCHES :
881+ sw_key = cast (SwitchType , meas_rn )
882+ sw_value = cast (
883+ bool ,
884+ format_measure (
885+ appl_p_loc .text ,
886+ getattr (attrs , ATTR_UNIT_OF_MEASUREMENT ),
887+ ),
888+ )
889+ data ["switches" ][sw_key ] = sw_value
890+ case "c_heating_state" :
891+ data ["c_heating_state" ] = cast (
892+ bool ,
893+ format_measure (
894+ appl_p_loc .text ,
895+ getattr (attrs , ATTR_UNIT_OF_MEASUREMENT ),
896+ ),
897+ )
898+ case "elga_status_code" :
899+ data ["elga_status_code" ] = int (appl_p_loc .text )
896900
897901 # Anna: save cooling-related measurements for later use
898902 # Use the local outdoor temperature as reference for turning cooling on/off
0 commit comments