mirror of
https://github.com/home-assistant/core.git
synced 2026-02-15 07:36:16 +00:00
Add engine start/stop buttons to Volvo integration (#154610)
This commit is contained in:
@@ -24,6 +24,7 @@ class VolvoButtonDescription(VolvoEntityDescription, ButtonEntityDescription):
|
||||
|
||||
api_command: str
|
||||
required_command_key: str
|
||||
data: dict[str, int] | None = None
|
||||
|
||||
|
||||
_DESCRIPTIONS: tuple[VolvoButtonDescription, ...] = (
|
||||
@@ -37,6 +38,17 @@ _DESCRIPTIONS: tuple[VolvoButtonDescription, ...] = (
|
||||
api_command="climatization-stop",
|
||||
required_command_key="CLIMATIZATION_STOP",
|
||||
),
|
||||
VolvoButtonDescription(
|
||||
key="engine_start",
|
||||
api_command="engine-start",
|
||||
required_command_key="ENGINE_START",
|
||||
data={"runtimeMinutes": 15},
|
||||
),
|
||||
VolvoButtonDescription(
|
||||
key="engine_stop",
|
||||
api_command="engine-stop",
|
||||
required_command_key="ENGINE_STOP",
|
||||
),
|
||||
VolvoButtonDescription(
|
||||
key="flash",
|
||||
api_command="flash",
|
||||
@@ -84,7 +96,7 @@ class VolvoButton(VolvoBaseEntity, ButtonEntity):
|
||||
|
||||
try:
|
||||
result = await self.entry.runtime_data.context.api.async_execute_command(
|
||||
self.entity_description.api_command
|
||||
self.entity_description.api_command, self.entity_description.data
|
||||
)
|
||||
except VolvoApiException as ex:
|
||||
_LOGGER.debug("Command '%s' error", command)
|
||||
|
||||
@@ -267,6 +267,12 @@
|
||||
"climatization_stop": {
|
||||
"default": "mdi:air-conditioner"
|
||||
},
|
||||
"engine_start": {
|
||||
"default": "mdi:engine"
|
||||
},
|
||||
"engine_stop": {
|
||||
"default": "mdi:engine-off"
|
||||
},
|
||||
"flash": {
|
||||
"default": "mdi:alarm-light-outline"
|
||||
},
|
||||
|
||||
@@ -194,6 +194,12 @@
|
||||
"climatization_stop": {
|
||||
"name": "Stop climatization"
|
||||
},
|
||||
"engine_start": {
|
||||
"name": "Start engine"
|
||||
},
|
||||
"engine_stop": {
|
||||
"name": "Stop engine"
|
||||
},
|
||||
"flash": {
|
||||
"name": "Flash"
|
||||
},
|
||||
|
||||
@@ -911,6 +911,54 @@
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_button[xc90_petrol_2019][button.volvo_xc90_start_engine-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': None,
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'button',
|
||||
'entity_category': None,
|
||||
'entity_id': 'button.volvo_xc90_start_engine',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': None,
|
||||
'original_icon': None,
|
||||
'original_name': 'Start engine',
|
||||
'platform': 'volvo',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'engine_start',
|
||||
'unique_id': 'yv1abcdefg1234567_engine_start',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_button[xc90_petrol_2019][button.volvo_xc90_start_engine-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Volvo XC90 Start engine',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'button.volvo_xc90_start_engine',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_button[xc90_petrol_2019][button.volvo_xc90_stop_climatization-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
@@ -959,3 +1007,51 @@
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_button[xc90_petrol_2019][button.volvo_xc90_stop_engine-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': None,
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'button',
|
||||
'entity_category': None,
|
||||
'entity_id': 'button.volvo_xc90_stop_engine',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': None,
|
||||
'original_icon': None,
|
||||
'original_name': 'Stop engine',
|
||||
'platform': 'volvo',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'engine_stop',
|
||||
'unique_id': 'yv1abcdefg1234567_engine_stop',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_button[xc90_petrol_2019][button.volvo_xc90_stop_engine-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Volvo XC90 Stop engine',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'button.volvo_xc90_stop_engine',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
|
||||
Reference in New Issue
Block a user