Do not force update mqtt device_tracker (#98838)
This commit is contained in:
parent
a5cced1da9
commit
948b34b045
2 changed files with 26 additions and 1 deletions
|
@ -165,6 +165,11 @@ class MqttDeviceTracker(MqttEntity, TrackerEntity):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def force_update(self) -> bool:
|
||||||
|
"""Do not force updates if the state is the same."""
|
||||||
|
return False
|
||||||
|
|
||||||
async def _subscribe_topics(self) -> None:
|
async def _subscribe_topics(self) -> None:
|
||||||
"""(Re)Subscribe to topics."""
|
"""(Re)Subscribe to topics."""
|
||||||
await subscription.async_subscribe_topics(self.hass, self._sub_state)
|
await subscription.async_subscribe_topics(self.hass, self._sub_state)
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
"""The tests for the MQTT device_tracker platform."""
|
"""The tests for the MQTT device_tracker platform."""
|
||||||
|
from datetime import UTC, datetime
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
from freezegun.api import FrozenDateTimeFactory
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components import device_tracker, mqtt
|
from homeassistant.components import device_tracker, mqtt
|
||||||
|
@ -199,9 +201,10 @@ async def test_duplicate_device_tracker_removal(
|
||||||
async def test_device_tracker_discovery_update(
|
async def test_device_tracker_discovery_update(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
mqtt_mock_entry: MqttMockHAClientGenerator,
|
mqtt_mock_entry: MqttMockHAClientGenerator,
|
||||||
caplog: pytest.LogCaptureFixture,
|
freezer: FrozenDateTimeFactory,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test for a discovery update event."""
|
"""Test for a discovery update event."""
|
||||||
|
freezer.move_to("2023-08-22 19:15:00+00:00")
|
||||||
await mqtt_mock_entry()
|
await mqtt_mock_entry()
|
||||||
async_fire_mqtt_message(
|
async_fire_mqtt_message(
|
||||||
hass,
|
hass,
|
||||||
|
@ -213,7 +216,9 @@ async def test_device_tracker_discovery_update(
|
||||||
state = hass.states.get("device_tracker.beer")
|
state = hass.states.get("device_tracker.beer")
|
||||||
assert state is not None
|
assert state is not None
|
||||||
assert state.name == "Beer"
|
assert state.name == "Beer"
|
||||||
|
assert state.last_updated == datetime(2023, 8, 22, 19, 15, tzinfo=UTC)
|
||||||
|
|
||||||
|
freezer.move_to("2023-08-22 19:16:00+00:00")
|
||||||
async_fire_mqtt_message(
|
async_fire_mqtt_message(
|
||||||
hass,
|
hass,
|
||||||
"homeassistant/device_tracker/bla/config",
|
"homeassistant/device_tracker/bla/config",
|
||||||
|
@ -224,6 +229,21 @@ async def test_device_tracker_discovery_update(
|
||||||
state = hass.states.get("device_tracker.beer")
|
state = hass.states.get("device_tracker.beer")
|
||||||
assert state is not None
|
assert state is not None
|
||||||
assert state.name == "Cider"
|
assert state.name == "Cider"
|
||||||
|
assert state.last_updated == datetime(2023, 8, 22, 19, 16, tzinfo=UTC)
|
||||||
|
|
||||||
|
freezer.move_to("2023-08-22 19:20:00+00:00")
|
||||||
|
async_fire_mqtt_message(
|
||||||
|
hass,
|
||||||
|
"homeassistant/device_tracker/bla/config",
|
||||||
|
'{ "name": "Cider", "state_topic": "test-topic" }',
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
state = hass.states.get("device_tracker.beer")
|
||||||
|
assert state is not None
|
||||||
|
assert state.name == "Cider"
|
||||||
|
# Entity was not updated as the state was not changed
|
||||||
|
assert state.last_updated == datetime(2023, 8, 22, 19, 16, tzinfo=UTC)
|
||||||
|
|
||||||
|
|
||||||
async def test_cleanup_device_tracker(
|
async def test_cleanup_device_tracker(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue