@@ -278,6 +278,10 @@ async def async_step_sensor_config(
278278 sensor_config = dict (self .current_sensor )
279279 sensor_config .update (user_input )
280280
281+ # HA forms can return None for empty optional text fields.
282+ if sensor_config .get (CONF_SENSOR_UNIT ) is None :
283+ sensor_config [CONF_SENSOR_UNIT ] = ""
284+
281285 # Add optional fields that may not be in user_input
282286 optional_fields = [
283287 CONF_SENSOR_STATE ,
@@ -665,11 +669,12 @@ async def async_step_modify_sensor(
665669 sensor_config [CONF_SENSOR_DEVICE_CLASS ] = user_input [
666670 CONF_SENSOR_DEVICE_CLASS
667671 ]
668- if user_input .get (CONF_SENSOR_UNIT ):
669- sensor_config [CONF_SENSOR_UNIT ] = user_input [CONF_SENSOR_UNIT ]
670672
671- # Add tracker fields if it's a device tracker
672673 sensor_type = sensor_config [CONF_SENSOR_TYPE ]
674+ if sensor_type in ("sensor" , "number" ):
675+ sensor_config [CONF_SENSOR_UNIT ] = user_input .get (CONF_SENSOR_UNIT ) or ""
676+
677+ # Add tracker fields if it's a device tracker
673678 if sensor_type == "device_tracker" :
674679 if user_input .get (CONF_TRACKER_LATITUDE ):
675680 sensor_config [CONF_TRACKER_LATITUDE ] = user_input [
@@ -718,9 +723,7 @@ async def async_step_modify_sensor(
718723 default = sensor .get (CONF_SENSOR_DEVICE_CLASS , "" ),
719724 )
720725 ] = vol .In (device_classes )
721- schema_dict [
722- vol .Optional (CONF_SENSOR_UNIT , default = sensor .get (CONF_SENSOR_UNIT , "" ))
723- ] = str
726+ schema_dict [vol .Optional (CONF_SENSOR_UNIT )] = str
724727 elif sensor_type == "binary_sensor" :
725728 device_classes = {"" : "" } | {dc : dc for dc in BINARY_SENSOR_DEVICE_CLASSES }
726729 schema_dict [
@@ -737,9 +740,7 @@ async def async_step_modify_sensor(
737740 default = sensor .get (CONF_SENSOR_DEVICE_CLASS , "" ),
738741 )
739742 ] = vol .In (device_classes )
740- schema_dict [
741- vol .Optional (CONF_SENSOR_UNIT , default = sensor .get (CONF_SENSOR_UNIT , "" ))
742- ] = str
743+ schema_dict [vol .Optional (CONF_SENSOR_UNIT )] = str
743744 elif sensor_type == "device_tracker" :
744745 # Add device tracker specific fields
745746 schema_dict [
@@ -767,10 +768,13 @@ async def async_step_modify_sensor(
767768 ] = vol .In (["none" , "gps" , "router" , "bluetooth" , "bluetooth_le" ])
768769
769770 schema = vol .Schema (schema_dict )
771+ suggested_values : dict [str , Any ] = {}
772+ if sensor_type in ("sensor" , "number" ):
773+ suggested_values [CONF_SENSOR_UNIT ] = sensor .get (CONF_SENSOR_UNIT ) or ""
770774
771775 return self .async_show_form (
772776 step_id = "modify_sensor" ,
773- data_schema = schema ,
777+ data_schema = self . add_suggested_values_to_schema ( schema , suggested_values ) ,
774778 )
775779
776780 async def async_step_add_sensor (
@@ -806,6 +810,10 @@ async def async_step_sensor_config(
806810 sensor_config = dict (self .current_sensor )
807811 sensor_config .update (user_input )
808812
813+ # HA forms can return None for empty optional text fields.
814+ if sensor_config .get (CONF_SENSOR_UNIT ) is None :
815+ sensor_config [CONF_SENSOR_UNIT ] = ""
816+
809817 # Add optional fields that may not be in user_input
810818 optional_fields = [
811819 CONF_SENSOR_STATE ,
0 commit comments