Fix Shelly RPC RSSI sensor removal (#111035)
parent
2f2cdedddd
commit
c690a9df83
|
@ -51,7 +51,11 @@ from .entity import (
|
|||
async_setup_entry_rest,
|
||||
async_setup_entry_rpc,
|
||||
)
|
||||
from .utils import get_device_entry_gen, get_device_uptime
|
||||
from .utils import (
|
||||
get_device_entry_gen,
|
||||
get_device_uptime,
|
||||
is_rpc_wifi_stations_disabled,
|
||||
)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
|
@ -905,9 +909,7 @@ RPC_SENSORS: Final = {
|
|||
device_class=SensorDeviceClass.SIGNAL_STRENGTH,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
removal_condition=lambda config, _status, key: (
|
||||
config[key]["sta"]["enable"] is False
|
||||
),
|
||||
removal_condition=is_rpc_wifi_stations_disabled,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
use_polling_coordinator=True,
|
||||
),
|
||||
|
|
|
@ -452,3 +452,13 @@ def async_create_issue_unsupported_firmware(
|
|||
"ip_address": entry.data["host"],
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
def is_rpc_wifi_stations_disabled(
|
||||
config: dict[str, Any], _status: dict[str, Any], key: str
|
||||
) -> bool:
|
||||
"""Return true if rpc all WiFi stations are disabled."""
|
||||
if config[key]["sta"]["enable"] is True or config[key]["sta1"]["enable"] is True:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
|
|
@ -179,7 +179,7 @@ MOCK_CONFIG = {
|
|||
"ui_data": {},
|
||||
"device": {"name": "Test name"},
|
||||
},
|
||||
"wifi": {"sta": {"enable": True}},
|
||||
"wifi": {"sta": {"enable": True}, "sta1": {"enable": False}},
|
||||
}
|
||||
|
||||
MOCK_SHELLY_COAP = {
|
||||
|
|
|
@ -31,6 +31,7 @@ from homeassistant.helpers.entity_registry import EntityRegistry, async_get
|
|||
from homeassistant.setup import async_setup_component
|
||||
|
||||
from . import (
|
||||
get_entity_state,
|
||||
init_integration,
|
||||
mock_polling_rpc_update,
|
||||
mock_rest_update,
|
||||
|
@ -353,6 +354,32 @@ async def test_rpc_sensor(
|
|||
assert hass.states.get(entity_id).state == STATE_UNKNOWN
|
||||
|
||||
|
||||
async def test_rpc_rssi_sensor_removal(
|
||||
hass: HomeAssistant,
|
||||
mock_rpc_device: Mock,
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
entity_registry_enabled_by_default: None,
|
||||
) -> None:
|
||||
"""Test RPC RSSI sensor removal if no WiFi stations enabled."""
|
||||
entity_id = f"{SENSOR_DOMAIN}.test_name_rssi"
|
||||
entry = await init_integration(hass, 2)
|
||||
|
||||
# WiFi1 enabled, do not remove sensor
|
||||
assert get_entity_state(hass, entity_id) == "-63"
|
||||
|
||||
# WiFi1 & WiFi2 disabled - remove sensor
|
||||
monkeypatch.setitem(mock_rpc_device.config["wifi"]["sta"], "enable", False)
|
||||
await hass.config_entries.async_reload(entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.get(entity_id) is None
|
||||
|
||||
# WiFi2 enabled, do not remove sensor
|
||||
monkeypatch.setitem(mock_rpc_device.config["wifi"]["sta1"], "enable", True)
|
||||
await hass.config_entries.async_reload(entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
assert get_entity_state(hass, entity_id) == "-63"
|
||||
|
||||
|
||||
async def test_rpc_illuminance_sensor(
|
||||
hass: HomeAssistant, mock_rpc_device: Mock, entity_registry: EntityRegistry
|
||||
) -> None:
|
||||
|
|
Loading…
Reference in New Issue