Add zone related sensors in proximity (#109630)
* move legacy needed convertions into legacy entity * add zone related sensors * fix test coverage * fix typing * fix entity name translations * rename placeholder to tracked_entity
This commit is contained in:
parent
a95a51da05
commit
ffe9f0825a
7 changed files with 193 additions and 31 deletions
|
@ -907,6 +907,132 @@ async def test_device_tracker_test1_nearest_after_test2_in_ignored_zone(
|
|||
assert state.state == "away_from"
|
||||
|
||||
|
||||
async def test_nearest_sensors(hass: HomeAssistant, config_zones) -> None:
|
||||
"""Test for nearest sensors."""
|
||||
mock_config = MockConfigEntry(
|
||||
domain=DOMAIN,
|
||||
title="home",
|
||||
data={
|
||||
CONF_ZONE: "zone.home",
|
||||
CONF_TRACKED_ENTITIES: ["device_tracker.test1", "device_tracker.test2"],
|
||||
CONF_IGNORED_ZONES: [],
|
||||
CONF_TOLERANCE: 1,
|
||||
},
|
||||
unique_id=f"{DOMAIN}_home",
|
||||
)
|
||||
|
||||
mock_config.add_to_hass(hass)
|
||||
assert await hass.config_entries.async_setup(mock_config.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
hass.states.async_set(
|
||||
"device_tracker.test1",
|
||||
"not_home",
|
||||
{"friendly_name": "test1", "latitude": 20, "longitude": 10},
|
||||
)
|
||||
hass.states.async_set(
|
||||
"device_tracker.test2",
|
||||
"not_home",
|
||||
{"friendly_name": "test2", "latitude": 40, "longitude": 20},
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
hass.states.async_set(
|
||||
"device_tracker.test1",
|
||||
"not_home",
|
||||
{"friendly_name": "test1", "latitude": 15, "longitude": 8},
|
||||
)
|
||||
hass.states.async_set(
|
||||
"device_tracker.test2",
|
||||
"not_home",
|
||||
{"friendly_name": "test2", "latitude": 45, "longitude": 22},
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
# sensor entities
|
||||
state = hass.states.get("sensor.home_nearest_device")
|
||||
assert state.state == "test1"
|
||||
state = hass.states.get("sensor.home_nearest_distance")
|
||||
assert state.state == "1615590"
|
||||
state = hass.states.get("sensor.home_test1_direction_of_travel")
|
||||
assert state.state == "towards"
|
||||
state = hass.states.get("sensor.home_test1_distance")
|
||||
assert state.state == "1615590"
|
||||
state = hass.states.get("sensor.home_test1_direction_of_travel")
|
||||
assert state.state == "towards"
|
||||
state = hass.states.get("sensor.home_test2_distance")
|
||||
assert state.state == "5176058"
|
||||
state = hass.states.get("sensor.home_test2_direction_of_travel")
|
||||
assert state.state == "away_from"
|
||||
|
||||
# move the far tracker
|
||||
hass.states.async_set(
|
||||
"device_tracker.test2",
|
||||
"not_home",
|
||||
{"friendly_name": "test2", "latitude": 40, "longitude": 20},
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
state = hass.states.get("sensor.home_nearest_device")
|
||||
assert state.state == "test1"
|
||||
state = hass.states.get("sensor.home_nearest_distance")
|
||||
assert state.state == "1615590"
|
||||
state = hass.states.get("sensor.home_nearest_direction_of_travel")
|
||||
assert state.state == "towards"
|
||||
state = hass.states.get("sensor.home_test1_distance")
|
||||
assert state.state == "1615590"
|
||||
state = hass.states.get("sensor.home_test1_direction_of_travel")
|
||||
assert state.state == "towards"
|
||||
state = hass.states.get("sensor.home_test2_distance")
|
||||
assert state.state == "4611404"
|
||||
state = hass.states.get("sensor.home_test2_direction_of_travel")
|
||||
assert state.state == "towards"
|
||||
|
||||
# move the near tracker
|
||||
hass.states.async_set(
|
||||
"device_tracker.test1",
|
||||
"not_home",
|
||||
{"friendly_name": "test1", "latitude": 20, "longitude": 10},
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
state = hass.states.get("sensor.home_nearest_device")
|
||||
assert state.state == "test1"
|
||||
state = hass.states.get("sensor.home_nearest_distance")
|
||||
assert state.state == "2204122"
|
||||
state = hass.states.get("sensor.home_nearest_direction_of_travel")
|
||||
assert state.state == "away_from"
|
||||
state = hass.states.get("sensor.home_test1_distance")
|
||||
assert state.state == "2204122"
|
||||
state = hass.states.get("sensor.home_test1_direction_of_travel")
|
||||
assert state.state == "away_from"
|
||||
state = hass.states.get("sensor.home_test2_distance")
|
||||
assert state.state == "4611404"
|
||||
state = hass.states.get("sensor.home_test2_direction_of_travel")
|
||||
assert state.state == "towards"
|
||||
|
||||
# get unknown distance and direction
|
||||
hass.states.async_set(
|
||||
"device_tracker.test1", "not_home", {"friendly_name": "test1"}
|
||||
)
|
||||
hass.states.async_set(
|
||||
"device_tracker.test2", "not_home", {"friendly_name": "test2"}
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
state = hass.states.get("sensor.home_nearest_device")
|
||||
assert state.state == STATE_UNKNOWN
|
||||
state = hass.states.get("sensor.home_nearest_distance")
|
||||
assert state.state == STATE_UNKNOWN
|
||||
state = hass.states.get("sensor.home_nearest_direction_of_travel")
|
||||
assert state.state == STATE_UNKNOWN
|
||||
state = hass.states.get("sensor.home_test1_distance")
|
||||
assert state.state == STATE_UNKNOWN
|
||||
state = hass.states.get("sensor.home_test1_direction_of_travel")
|
||||
assert state.state == STATE_UNKNOWN
|
||||
state = hass.states.get("sensor.home_test2_distance")
|
||||
assert state.state == STATE_UNKNOWN
|
||||
state = hass.states.get("sensor.home_test2_direction_of_travel")
|
||||
assert state.state == STATE_UNKNOWN
|
||||
|
||||
|
||||
async def test_create_deprecated_proximity_issue(
|
||||
hass: HomeAssistant,
|
||||
issue_registry: ir.IssueRegistry,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue