mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 09:17:53 +00:00
Add ability to translate ENUM sensor states in Unifi integration (#131921)
This commit is contained in:
parent
943b1d9f08
commit
3132700492
@ -50,17 +50,16 @@ DPI_SWITCH = "dpi"
|
||||
OUTLET_SWITCH = "outlet"
|
||||
|
||||
DEVICE_STATES = {
|
||||
DeviceState.DISCONNECTED: "Disconnected",
|
||||
DeviceState.CONNECTED: "Connected",
|
||||
DeviceState.PENDING: "Pending",
|
||||
DeviceState.FIRMWARE_MISMATCH: "Firmware Mismatch",
|
||||
DeviceState.UPGRADING: "Upgrading",
|
||||
DeviceState.PROVISIONING: "Provisioning",
|
||||
DeviceState.HEARTBEAT_MISSED: "Heartbeat Missed",
|
||||
DeviceState.ADOPTING: "Adopting",
|
||||
DeviceState.DELETING: "Deleting",
|
||||
DeviceState.INFORM_ERROR: "Inform Error",
|
||||
DeviceState.ADOPTION_FALIED: "Adoption Failed",
|
||||
DeviceState.ISOLATED: "Isolated",
|
||||
DeviceState.UNKNOWN: "Unknown",
|
||||
DeviceState.DISCONNECTED: "disconnected",
|
||||
DeviceState.CONNECTED: "connected",
|
||||
DeviceState.PENDING: "pending",
|
||||
DeviceState.FIRMWARE_MISMATCH: "firmware_mismatch",
|
||||
DeviceState.UPGRADING: "upgrading",
|
||||
DeviceState.PROVISIONING: "provisioning",
|
||||
DeviceState.HEARTBEAT_MISSED: "heartbeat_missed",
|
||||
DeviceState.ADOPTING: "adopting",
|
||||
DeviceState.DELETING: "deleting",
|
||||
DeviceState.INFORM_ERROR: "inform_error",
|
||||
DeviceState.ADOPTION_FALIED: "adoption_failed",
|
||||
DeviceState.ISOLATED: "isolated",
|
||||
}
|
||||
|
@ -205,9 +205,9 @@ def async_client_is_connected_fn(hub: UnifiHub, obj_id: str) -> bool:
|
||||
|
||||
|
||||
@callback
|
||||
def async_device_state_value_fn(hub: UnifiHub, device: Device) -> str:
|
||||
def async_device_state_value_fn(hub: UnifiHub, device: Device) -> str | None:
|
||||
"""Retrieve the state of the device."""
|
||||
return DEVICE_STATES[device.state]
|
||||
return DEVICE_STATES.get(device.state)
|
||||
|
||||
|
||||
@callback
|
||||
|
@ -33,6 +33,26 @@
|
||||
"reauth_successful": "[%key:common::config_flow::abort::reauth_successful%]"
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"device_state": {
|
||||
"state": {
|
||||
"disconnected": "[%key:common::state::disconnected%]",
|
||||
"connected": "[%key:common::state::connected%]",
|
||||
"pending": "Pending",
|
||||
"firmware_mismatch": "Firmware mismatch",
|
||||
"upgrading": "Upgrading",
|
||||
"provisioning": "Provisioning",
|
||||
"heartbeat_missed": "Heartbeat missed",
|
||||
"adopting": "Adopting",
|
||||
"deleting": "Deleting",
|
||||
"inform_error": "Inform error",
|
||||
"adoption_failed": "Adoption failed",
|
||||
"isolated": "Isolated"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"abort": {
|
||||
"integration_not_setup": "UniFi integration is not set up"
|
||||
|
@ -55,19 +55,18 @@
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'options': list([
|
||||
'Disconnected',
|
||||
'Connected',
|
||||
'Pending',
|
||||
'Firmware Mismatch',
|
||||
'Upgrading',
|
||||
'Provisioning',
|
||||
'Heartbeat Missed',
|
||||
'Adopting',
|
||||
'Deleting',
|
||||
'Inform Error',
|
||||
'Adoption Failed',
|
||||
'Isolated',
|
||||
'Unknown',
|
||||
'disconnected',
|
||||
'connected',
|
||||
'pending',
|
||||
'firmware_mismatch',
|
||||
'upgrading',
|
||||
'provisioning',
|
||||
'heartbeat_missed',
|
||||
'adopting',
|
||||
'deleting',
|
||||
'inform_error',
|
||||
'adoption_failed',
|
||||
'isolated',
|
||||
]),
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
@ -103,19 +102,18 @@
|
||||
'device_class': 'enum',
|
||||
'friendly_name': 'Device State',
|
||||
'options': list([
|
||||
'Disconnected',
|
||||
'Connected',
|
||||
'Pending',
|
||||
'Firmware Mismatch',
|
||||
'Upgrading',
|
||||
'Provisioning',
|
||||
'Heartbeat Missed',
|
||||
'Adopting',
|
||||
'Deleting',
|
||||
'Inform Error',
|
||||
'Adoption Failed',
|
||||
'Isolated',
|
||||
'Unknown',
|
||||
'disconnected',
|
||||
'connected',
|
||||
'pending',
|
||||
'firmware_mismatch',
|
||||
'upgrading',
|
||||
'provisioning',
|
||||
'heartbeat_missed',
|
||||
'adopting',
|
||||
'deleting',
|
||||
'inform_error',
|
||||
'adoption_failed',
|
||||
'isolated',
|
||||
]),
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@ -123,7 +121,7 @@
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'Connected',
|
||||
'state': 'connected',
|
||||
})
|
||||
# ---
|
||||
# name: test_entity_and_device_data[wlan_payload0-device_payload0-client_payload0-config_entry_options0][sensor.device_temperature-entry]
|
||||
@ -536,19 +534,18 @@
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'options': list([
|
||||
'Disconnected',
|
||||
'Connected',
|
||||
'Pending',
|
||||
'Firmware Mismatch',
|
||||
'Upgrading',
|
||||
'Provisioning',
|
||||
'Heartbeat Missed',
|
||||
'Adopting',
|
||||
'Deleting',
|
||||
'Inform Error',
|
||||
'Adoption Failed',
|
||||
'Isolated',
|
||||
'Unknown',
|
||||
'disconnected',
|
||||
'connected',
|
||||
'pending',
|
||||
'firmware_mismatch',
|
||||
'upgrading',
|
||||
'provisioning',
|
||||
'heartbeat_missed',
|
||||
'adopting',
|
||||
'deleting',
|
||||
'inform_error',
|
||||
'adoption_failed',
|
||||
'isolated',
|
||||
]),
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
@ -584,19 +581,18 @@
|
||||
'device_class': 'enum',
|
||||
'friendly_name': 'Dummy USP-PDU-Pro State',
|
||||
'options': list([
|
||||
'Disconnected',
|
||||
'Connected',
|
||||
'Pending',
|
||||
'Firmware Mismatch',
|
||||
'Upgrading',
|
||||
'Provisioning',
|
||||
'Heartbeat Missed',
|
||||
'Adopting',
|
||||
'Deleting',
|
||||
'Inform Error',
|
||||
'Adoption Failed',
|
||||
'Isolated',
|
||||
'Unknown',
|
||||
'disconnected',
|
||||
'connected',
|
||||
'pending',
|
||||
'firmware_mismatch',
|
||||
'upgrading',
|
||||
'provisioning',
|
||||
'heartbeat_missed',
|
||||
'adopting',
|
||||
'deleting',
|
||||
'inform_error',
|
||||
'adoption_failed',
|
||||
'isolated',
|
||||
]),
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@ -604,7 +600,7 @@
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'Connected',
|
||||
'state': 'connected',
|
||||
})
|
||||
# ---
|
||||
# name: test_entity_and_device_data[wlan_payload0-device_payload0-client_payload0-config_entry_options0][sensor.dummy_usp_pdu_pro_uptime-entry]
|
||||
@ -1601,19 +1597,18 @@
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'options': list([
|
||||
'Disconnected',
|
||||
'Connected',
|
||||
'Pending',
|
||||
'Firmware Mismatch',
|
||||
'Upgrading',
|
||||
'Provisioning',
|
||||
'Heartbeat Missed',
|
||||
'Adopting',
|
||||
'Deleting',
|
||||
'Inform Error',
|
||||
'Adoption Failed',
|
||||
'Isolated',
|
||||
'Unknown',
|
||||
'disconnected',
|
||||
'connected',
|
||||
'pending',
|
||||
'firmware_mismatch',
|
||||
'upgrading',
|
||||
'provisioning',
|
||||
'heartbeat_missed',
|
||||
'adopting',
|
||||
'deleting',
|
||||
'inform_error',
|
||||
'adoption_failed',
|
||||
'isolated',
|
||||
]),
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
@ -1649,19 +1644,18 @@
|
||||
'device_class': 'enum',
|
||||
'friendly_name': 'mock-name State',
|
||||
'options': list([
|
||||
'Disconnected',
|
||||
'Connected',
|
||||
'Pending',
|
||||
'Firmware Mismatch',
|
||||
'Upgrading',
|
||||
'Provisioning',
|
||||
'Heartbeat Missed',
|
||||
'Adopting',
|
||||
'Deleting',
|
||||
'Inform Error',
|
||||
'Adoption Failed',
|
||||
'Isolated',
|
||||
'Unknown',
|
||||
'disconnected',
|
||||
'connected',
|
||||
'pending',
|
||||
'firmware_mismatch',
|
||||
'upgrading',
|
||||
'provisioning',
|
||||
'heartbeat_missed',
|
||||
'adopting',
|
||||
'deleting',
|
||||
'inform_error',
|
||||
'adoption_failed',
|
||||
'isolated',
|
||||
]),
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@ -1669,7 +1663,7 @@
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'Connected',
|
||||
'state': 'connected',
|
||||
})
|
||||
# ---
|
||||
# name: test_entity_and_device_data[wlan_payload0-device_payload0-client_payload0-config_entry_options0][sensor.mock_name_uptime-entry]
|
||||
|
@ -30,6 +30,7 @@ from homeassistant.config_entries import RELOAD_AFTER_UPDATE_DELAY
|
||||
from homeassistant.const import (
|
||||
ATTR_DEVICE_CLASS,
|
||||
STATE_UNAVAILABLE,
|
||||
STATE_UNKNOWN,
|
||||
EntityCategory,
|
||||
Platform,
|
||||
)
|
||||
@ -891,7 +892,9 @@ async def test_device_state(
|
||||
for i in list(map(int, DeviceState)):
|
||||
device["state"] = i
|
||||
mock_websocket_message(message=MessageKey.DEVICE, data=device)
|
||||
assert hass.states.get("sensor.device_state").state == DEVICE_STATES[i]
|
||||
assert hass.states.get("sensor.device_state").state == DEVICE_STATES.get(
|
||||
i, STATE_UNKNOWN
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
Loading…
x
Reference in New Issue
Block a user