mirror of
https://github.com/home-assistant/core.git
synced 2025-04-26 18:27:51 +00:00
Allow setting the elevation in set_location
(#99978)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
This commit is contained in:
parent
f6b094dfee
commit
ee65aa91e8
@ -9,6 +9,7 @@ from homeassistant.auth.permissions.const import CAT_ENTITIES, POLICY_CONTROL
|
||||
from homeassistant.components import persistent_notification
|
||||
import homeassistant.config as conf_util
|
||||
from homeassistant.const import (
|
||||
ATTR_ELEVATION,
|
||||
ATTR_ENTITY_ID,
|
||||
ATTR_LATITUDE,
|
||||
ATTR_LONGITUDE,
|
||||
@ -250,16 +251,28 @@ async def async_setup(hass: ha.HomeAssistant, config: ConfigType) -> bool: # no
|
||||
|
||||
async def async_set_location(call: ha.ServiceCall) -> None:
|
||||
"""Service handler to set location."""
|
||||
await hass.config.async_update(
|
||||
latitude=call.data[ATTR_LATITUDE], longitude=call.data[ATTR_LONGITUDE]
|
||||
)
|
||||
service_data = {
|
||||
"latitude": call.data[ATTR_LATITUDE],
|
||||
"longitude": call.data[ATTR_LONGITUDE],
|
||||
}
|
||||
|
||||
if elevation := call.data.get(ATTR_ELEVATION):
|
||||
service_data["elevation"] = elevation
|
||||
|
||||
await hass.config.async_update(**service_data)
|
||||
|
||||
async_register_admin_service(
|
||||
hass,
|
||||
ha.DOMAIN,
|
||||
SERVICE_SET_LOCATION,
|
||||
async_set_location,
|
||||
vol.Schema({ATTR_LATITUDE: cv.latitude, ATTR_LONGITUDE: cv.longitude}),
|
||||
vol.Schema(
|
||||
{
|
||||
vol.Required(ATTR_LATITUDE): cv.latitude,
|
||||
vol.Required(ATTR_LONGITUDE): cv.longitude,
|
||||
vol.Optional(ATTR_ELEVATION): int,
|
||||
}
|
||||
),
|
||||
)
|
||||
|
||||
async def async_handle_reload_templates(call: ha.ServiceCall) -> None:
|
||||
|
@ -13,6 +13,11 @@ set_location:
|
||||
example: 117.22743
|
||||
selector:
|
||||
text:
|
||||
elevation:
|
||||
required: false
|
||||
example: 120
|
||||
selector:
|
||||
text:
|
||||
|
||||
stop:
|
||||
toggle:
|
||||
|
@ -81,6 +81,10 @@
|
||||
"longitude": {
|
||||
"name": "[%key:common::config_flow::data::longitude%]",
|
||||
"description": "Longitude of your location."
|
||||
},
|
||||
"elevation": {
|
||||
"name": "[%key:common::config_flow::data::elevation%]",
|
||||
"description": "Elevation of your location."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -460,6 +460,9 @@ ATTR_HIDDEN: Final = "hidden"
|
||||
ATTR_LATITUDE: Final = "latitude"
|
||||
ATTR_LONGITUDE: Final = "longitude"
|
||||
|
||||
# Elevation of the entity
|
||||
ATTR_ELEVATION: Final = "elevation"
|
||||
|
||||
# Accuracy of location in meters
|
||||
ATTR_GPS_ACCURACY: Final = "gps_accuracy"
|
||||
|
||||
|
@ -305,6 +305,8 @@ async def test_setting_location(hass: HomeAssistant) -> None:
|
||||
# Just to make sure that we are updating values.
|
||||
assert hass.config.latitude != 30
|
||||
assert hass.config.longitude != 40
|
||||
elevation = hass.config.elevation
|
||||
assert elevation != 50
|
||||
await hass.services.async_call(
|
||||
"homeassistant",
|
||||
"set_location",
|
||||
@ -314,6 +316,15 @@ async def test_setting_location(hass: HomeAssistant) -> None:
|
||||
assert len(events) == 1
|
||||
assert hass.config.latitude == 30
|
||||
assert hass.config.longitude == 40
|
||||
assert hass.config.elevation == elevation
|
||||
|
||||
await hass.services.async_call(
|
||||
"homeassistant",
|
||||
"set_location",
|
||||
{"latitude": 30, "longitude": 40, "elevation": 50},
|
||||
blocking=True,
|
||||
)
|
||||
assert hass.config.elevation == 50
|
||||
|
||||
|
||||
async def test_require_admin(
|
||||
|
Loading…
x
Reference in New Issue
Block a user