Fix Shelly RPC RSSI sensor removal (#111035)
This commit is contained in:
parent
2f2cdedddd
commit
c690a9df83
4 changed files with 44 additions and 5 deletions
|
@ -51,7 +51,11 @@ from .entity import (
|
||||||
async_setup_entry_rest,
|
async_setup_entry_rest,
|
||||||
async_setup_entry_rpc,
|
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)
|
@dataclass(frozen=True)
|
||||||
|
@ -905,9 +909,7 @@ RPC_SENSORS: Final = {
|
||||||
device_class=SensorDeviceClass.SIGNAL_STRENGTH,
|
device_class=SensorDeviceClass.SIGNAL_STRENGTH,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
entity_registry_enabled_default=False,
|
entity_registry_enabled_default=False,
|
||||||
removal_condition=lambda config, _status, key: (
|
removal_condition=is_rpc_wifi_stations_disabled,
|
||||||
config[key]["sta"]["enable"] is False
|
|
||||||
),
|
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
use_polling_coordinator=True,
|
use_polling_coordinator=True,
|
||||||
),
|
),
|
||||||
|
|
|
@ -452,3 +452,13 @@ def async_create_issue_unsupported_firmware(
|
||||||
"ip_address": entry.data["host"],
|
"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": {},
|
"ui_data": {},
|
||||||
"device": {"name": "Test name"},
|
"device": {"name": "Test name"},
|
||||||
},
|
},
|
||||||
"wifi": {"sta": {"enable": True}},
|
"wifi": {"sta": {"enable": True}, "sta1": {"enable": False}},
|
||||||
}
|
}
|
||||||
|
|
||||||
MOCK_SHELLY_COAP = {
|
MOCK_SHELLY_COAP = {
|
||||||
|
|
|
@ -31,6 +31,7 @@ from homeassistant.helpers.entity_registry import EntityRegistry, async_get
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
|
|
||||||
from . import (
|
from . import (
|
||||||
|
get_entity_state,
|
||||||
init_integration,
|
init_integration,
|
||||||
mock_polling_rpc_update,
|
mock_polling_rpc_update,
|
||||||
mock_rest_update,
|
mock_rest_update,
|
||||||
|
@ -353,6 +354,32 @@ async def test_rpc_sensor(
|
||||||
assert hass.states.get(entity_id).state == STATE_UNKNOWN
|
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(
|
async def test_rpc_illuminance_sensor(
|
||||||
hass: HomeAssistant, mock_rpc_device: Mock, entity_registry: EntityRegistry
|
hass: HomeAssistant, mock_rpc_device: Mock, entity_registry: EntityRegistry
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue