mirror of
https://github.com/home-assistant/core.git
synced 2025-07-14 08:47:10 +00:00
Add support for xvoltage
sensor for Shelly Plus UNI (#134261)
* Add support for xvoltage sensor * Cleaning
This commit is contained in:
parent
9320ccfa4f
commit
e43f72c452
@ -1116,6 +1116,15 @@ RPC_SENSORS: Final = {
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
available=lambda status: status is not None,
|
||||
),
|
||||
"voltmeter_value": RpcSensorDescription(
|
||||
key="voltmeter",
|
||||
sub_key="xvoltage",
|
||||
name="Voltmeter value",
|
||||
removal_condition=lambda _config, status, key: (
|
||||
status[key].get("xvoltage") is None
|
||||
),
|
||||
unit=lambda config: config["xvoltage"]["unit"] or None,
|
||||
),
|
||||
"analoginput": RpcSensorDescription(
|
||||
key="input",
|
||||
sub_key="percent",
|
||||
|
@ -199,6 +199,7 @@ MOCK_CONFIG = {
|
||||
},
|
||||
"wifi": {"sta": {"enable": True}, "sta1": {"enable": False}},
|
||||
"ws": {"enable": False, "server": None},
|
||||
"voltmeter:100": {"xvoltage": {"unit": "ppm"}},
|
||||
}
|
||||
|
||||
MOCK_SHELLY_COAP = {
|
||||
@ -280,7 +281,7 @@ MOCK_STATUS_RPC = {
|
||||
},
|
||||
"relay_in_thermostat": True,
|
||||
},
|
||||
"voltmeter": {"voltage": 4.321},
|
||||
"voltmeter:100": {"voltage": 4.321, "xvoltage": 12.34},
|
||||
"wifi": {"rssi": -63},
|
||||
}
|
||||
|
||||
|
@ -428,14 +428,16 @@ async def test_rpc_sensor_error(
|
||||
|
||||
assert hass.states.get(entity_id).state == "4.321"
|
||||
|
||||
mutate_rpc_device_status(monkeypatch, mock_rpc_device, "voltmeter", "voltage", None)
|
||||
mutate_rpc_device_status(
|
||||
monkeypatch, mock_rpc_device, "voltmeter:100", "voltage", None
|
||||
)
|
||||
mock_rpc_device.mock_update()
|
||||
|
||||
assert hass.states.get(entity_id).state == STATE_UNAVAILABLE
|
||||
|
||||
entry = entity_registry.async_get(entity_id)
|
||||
assert entry
|
||||
assert entry.unique_id == "123456789ABC-voltmeter-voltmeter"
|
||||
assert entry.unique_id == "123456789ABC-voltmeter:100-voltmeter"
|
||||
|
||||
|
||||
async def test_rpc_polling_sensor(
|
||||
@ -1383,3 +1385,23 @@ async def test_rpc_device_sensor_goes_unavailable_on_disconnect(
|
||||
await hass.async_block_till_done()
|
||||
temp_sensor_state = hass.states.get("sensor.test_name_temperature")
|
||||
assert temp_sensor_state.state != STATE_UNAVAILABLE
|
||||
|
||||
|
||||
async def test_rpc_voltmeter_value(
|
||||
hass: HomeAssistant,
|
||||
mock_rpc_device: Mock,
|
||||
entity_registry: EntityRegistry,
|
||||
) -> None:
|
||||
"""Test RPC voltmeter value sensor."""
|
||||
entity_id = f"{SENSOR_DOMAIN}.test_name_voltmeter_value"
|
||||
|
||||
await init_integration(hass, 2)
|
||||
|
||||
state = hass.states.get(entity_id)
|
||||
|
||||
assert state.state == "12.34"
|
||||
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "ppm"
|
||||
|
||||
entry = entity_registry.async_get(entity_id)
|
||||
assert entry
|
||||
assert entry.unique_id == "123456789ABC-voltmeter:100-voltmeter_value"
|
||||
|
Loading…
x
Reference in New Issue
Block a user