Change BMW select and sensor enums to lowercase (#118751)

Co-authored-by: Richard <rikroe@users.noreply.github.com>
This commit is contained in:
Richard Kroegel 2024-06-08 16:25:45 +02:00 committed by GitHub
parent cb672b85f4
commit b04a65f4d1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 45 additions and 31 deletions

View File

@ -52,8 +52,8 @@ SELECT_TYPES: dict[str, BMWSelectEntityDescription] = {
key="charging_mode", key="charging_mode",
translation_key="charging_mode", translation_key="charging_mode",
is_available=lambda v: v.is_charging_plan_supported, is_available=lambda v: v.is_charging_plan_supported,
options=[c.value for c in ChargingMode if c != ChargingMode.UNKNOWN], options=[c.value.lower() for c in ChargingMode if c != ChargingMode.UNKNOWN],
current_option=lambda v: str(v.charging_profile.charging_mode.value), # type: ignore[union-attr] current_option=lambda v: str(v.charging_profile.charging_mode.value).lower(), # type: ignore[union-attr]
remote_service=lambda v, o: v.remote_services.trigger_charging_profile_update( remote_service=lambda v, o: v.remote_services.trigger_charging_profile_update(
charging_mode=ChargingMode(o) charging_mode=ChargingMode(o)
), ),

View File

@ -221,9 +221,5 @@ class BMWSensor(BMWBaseEntity, SensorEntity):
if state == STATE_UNKNOWN: if state == STATE_UNKNOWN:
state = None state = None
# special handling for charging_status to avoid a breaking change
if self.entity_description.key == "charging_status" and state:
state = state.upper()
self._attr_native_value = state self._attr_native_value = state
super()._handle_coordinator_update() super()._handle_coordinator_update()

View File

@ -83,7 +83,11 @@
"name": "AC Charging Limit" "name": "AC Charging Limit"
}, },
"charging_mode": { "charging_mode": {
"name": "Charging Mode" "name": "Charging Mode",
"state": {
"immediate_charging": "Immediate charging",
"delayed_charging": "Delayed charging"
}
} }
}, },
"sensor": { "sensor": {
@ -97,7 +101,21 @@
"name": "Charging end time" "name": "Charging end time"
}, },
"charging_status": { "charging_status": {
"name": "Charging status" "name": "Charging status",
"state": {
"default": "Default",
"charging": "Charging",
"error": "Error",
"complete": "Complete",
"fully_charged": "Fully charged",
"finished_fully_charged": "Finished, fully charged",
"finished_not_full": "Finished, not full",
"invalid": "Invalid",
"not_charging": "Not charging",
"plugged_in": "Plugged in",
"waiting_for_charging": "Waiting for charging",
"target_reached": "Target reached"
}
}, },
"charging_target": { "charging_target": {
"name": "Charging target" "name": "Charging target"

View File

@ -6,8 +6,8 @@
'area_id': None, 'area_id': None,
'capabilities': dict({ 'capabilities': dict({
'options': list([ 'options': list([
'IMMEDIATE_CHARGING', 'immediate_charging',
'DELAYED_CHARGING', 'delayed_charging',
]), ]),
}), }),
'config_entry_id': <ANY>, 'config_entry_id': <ANY>,
@ -43,8 +43,8 @@
'attribution': 'Data provided by MyBMW', 'attribution': 'Data provided by MyBMW',
'friendly_name': 'i3 (+ REX) Charging Mode', 'friendly_name': 'i3 (+ REX) Charging Mode',
'options': list([ 'options': list([
'IMMEDIATE_CHARGING', 'immediate_charging',
'DELAYED_CHARGING', 'delayed_charging',
]), ]),
}), }),
'context': <ANY>, 'context': <ANY>,
@ -52,7 +52,7 @@
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
'state': 'DELAYED_CHARGING', 'state': 'delayed_charging',
}) })
# --- # ---
# name: test_entity_state_attrs[select.i4_edrive40_ac_charging_limit-entry] # name: test_entity_state_attrs[select.i4_edrive40_ac_charging_limit-entry]
@ -141,8 +141,8 @@
'area_id': None, 'area_id': None,
'capabilities': dict({ 'capabilities': dict({
'options': list([ 'options': list([
'IMMEDIATE_CHARGING', 'immediate_charging',
'DELAYED_CHARGING', 'delayed_charging',
]), ]),
}), }),
'config_entry_id': <ANY>, 'config_entry_id': <ANY>,
@ -178,8 +178,8 @@
'attribution': 'Data provided by MyBMW', 'attribution': 'Data provided by MyBMW',
'friendly_name': 'i4 eDrive40 Charging Mode', 'friendly_name': 'i4 eDrive40 Charging Mode',
'options': list([ 'options': list([
'IMMEDIATE_CHARGING', 'immediate_charging',
'DELAYED_CHARGING', 'delayed_charging',
]), ]),
}), }),
'context': <ANY>, 'context': <ANY>,
@ -187,7 +187,7 @@
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
'state': 'IMMEDIATE_CHARGING', 'state': 'immediate_charging',
}) })
# --- # ---
# name: test_entity_state_attrs[select.ix_xdrive50_ac_charging_limit-entry] # name: test_entity_state_attrs[select.ix_xdrive50_ac_charging_limit-entry]
@ -276,8 +276,8 @@
'area_id': None, 'area_id': None,
'capabilities': dict({ 'capabilities': dict({
'options': list([ 'options': list([
'IMMEDIATE_CHARGING', 'immediate_charging',
'DELAYED_CHARGING', 'delayed_charging',
]), ]),
}), }),
'config_entry_id': <ANY>, 'config_entry_id': <ANY>,
@ -313,8 +313,8 @@
'attribution': 'Data provided by MyBMW', 'attribution': 'Data provided by MyBMW',
'friendly_name': 'iX xDrive50 Charging Mode', 'friendly_name': 'iX xDrive50 Charging Mode',
'options': list([ 'options': list([
'IMMEDIATE_CHARGING', 'immediate_charging',
'DELAYED_CHARGING', 'delayed_charging',
]), ]),
}), }),
'context': <ANY>, 'context': <ANY>,
@ -322,6 +322,6 @@
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
'state': 'IMMEDIATE_CHARGING', 'state': 'immediate_charging',
}) })
# --- # ---

View File

@ -191,7 +191,7 @@
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
'state': 'WAITING_FOR_CHARGING', 'state': 'waiting_for_charging',
}) })
# --- # ---
# name: test_entity_state_attrs[sensor.i3_rex_charging_target-entry] # name: test_entity_state_attrs[sensor.i3_rex_charging_target-entry]
@ -822,7 +822,7 @@
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
'state': 'NOT_CHARGING', 'state': 'not_charging',
}) })
# --- # ---
# name: test_entity_state_attrs[sensor.i4_edrive40_charging_target-entry] # name: test_entity_state_attrs[sensor.i4_edrive40_charging_target-entry]
@ -1350,7 +1350,7 @@
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
'state': 'CHARGING', 'state': 'charging',
}) })
# --- # ---
# name: test_entity_state_attrs[sensor.ix_xdrive50_charging_target-entry] # name: test_entity_state_attrs[sensor.ix_xdrive50_charging_target-entry]

View File

@ -42,15 +42,15 @@ async def test_entity_state_attrs(
[ [
( (
"select.i3_rex_charging_mode", "select.i3_rex_charging_mode",
"IMMEDIATE_CHARGING", "immediate_charging",
"DELAYED_CHARGING", "delayed_charging",
"charging-profile", "charging-profile",
), ),
("select.i4_edrive40_ac_charging_limit", "12", "16", "charging-settings"), ("select.i4_edrive40_ac_charging_limit", "12", "16", "charging-settings"),
( (
"select.i4_edrive40_charging_mode", "select.i4_edrive40_charging_mode",
"DELAYED_CHARGING", "delayed_charging",
"IMMEDIATE_CHARGING", "immediate_charging",
"charging-profile", "charging-profile",
), ),
], ],
@ -87,7 +87,7 @@ async def test_service_call_success(
("entity_id", "value"), ("entity_id", "value"),
[ [
("select.i4_edrive40_ac_charging_limit", "17"), ("select.i4_edrive40_ac_charging_limit", "17"),
("select.i4_edrive40_charging_mode", "BONKERS_MODE"), ("select.i4_edrive40_charging_mode", "bonkers_mode"),
], ],
) )
async def test_service_call_invalid_input( async def test_service_call_invalid_input(