From 89355e087952417a6824507fd3b197f9d0520e19 Mon Sep 17 00:00:00 2001 From: Alexey Baturin Date: Sun, 26 Mar 2023 20:03:03 +0200 Subject: [PATCH] Add WLED IP as a sensor (#90241) Co-authored-by: Franck Nijhof --- homeassistant/components/wled/sensor.py | 7 +++++++ tests/components/wled/fixtures/rgb.json | 3 ++- tests/components/wled/fixtures/rgb_no_update.json | 3 ++- tests/components/wled/fixtures/rgb_single_segment.json | 3 ++- tests/components/wled/fixtures/rgb_websocket.json | 3 ++- tests/components/wled/fixtures/rgbw.json | 3 ++- tests/components/wled/snapshots/test_diagnostics.ambr | 2 +- tests/components/wled/test_sensor.py | 9 +++++++++ 8 files changed, 27 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/wled/sensor.py b/homeassistant/components/wled/sensor.py index 924414cadf3..668b90159b5 100644 --- a/homeassistant/components/wled/sensor.py +++ b/homeassistant/components/wled/sensor.py @@ -128,6 +128,13 @@ SENSORS: tuple[WLEDSensorEntityDescription, ...] = ( entity_registry_enabled_default=False, value_fn=lambda device: device.info.wifi.bssid if device.info.wifi else None, ), + WLEDSensorEntityDescription( + key="ip", + name="IP", + icon="mdi:ip-network", + entity_category=EntityCategory.DIAGNOSTIC, + value_fn=lambda device: device.info.ip, + ), ) diff --git a/tests/components/wled/fixtures/rgb.json b/tests/components/wled/fixtures/rgb.json index c66c07b3395..21f9b005b72 100644 --- a/tests/components/wled/fixtures/rgb.json +++ b/tests/components/wled/fixtures/rgb.json @@ -86,7 +86,8 @@ "brand": "WLED", "product": "DIY light", "btype": "bin", - "mac": "aabbccddeeff" + "mac": "aabbccddeeff", + "ip": "127.0.0.1" }, "effects": [ "Solid", diff --git a/tests/components/wled/fixtures/rgb_no_update.json b/tests/components/wled/fixtures/rgb_no_update.json index a3c54dd1186..c8aa902cc95 100644 --- a/tests/components/wled/fixtures/rgb_no_update.json +++ b/tests/components/wled/fixtures/rgb_no_update.json @@ -86,7 +86,8 @@ "brand": "WLED", "product": "DIY light", "btype": "bin", - "mac": "aabbccddeeff" + "mac": "aabbccddeeff", + "ip": "127.0.0.1" }, "effects": [ "Solid", diff --git a/tests/components/wled/fixtures/rgb_single_segment.json b/tests/components/wled/fixtures/rgb_single_segment.json index 08b1cb7bb60..aa0b79e98f5 100644 --- a/tests/components/wled/fixtures/rgb_single_segment.json +++ b/tests/components/wled/fixtures/rgb_single_segment.json @@ -68,7 +68,8 @@ "brand": "WLED", "product": "DIY light", "btype": "bin", - "mac": "aabbccddeeff" + "mac": "aabbccddeeff", + "ip": "127.0.0.1" }, "effects": [ "Solid", diff --git a/tests/components/wled/fixtures/rgb_websocket.json b/tests/components/wled/fixtures/rgb_websocket.json index 36ca3e1f792..4a0ed7b1ee5 100644 --- a/tests/components/wled/fixtures/rgb_websocket.json +++ b/tests/components/wled/fixtures/rgb_websocket.json @@ -94,7 +94,8 @@ "opt": 127, "brand": "WLED", "product": "FOSS", - "mac": "aabbccddeeff" + "mac": "aabbccddeeff", + "ip": "127.0.0.1" }, "effects": [ "Solid", diff --git a/tests/components/wled/fixtures/rgbw.json b/tests/components/wled/fixtures/rgbw.json index 7ffcaa36f90..100b3936900 100644 --- a/tests/components/wled/fixtures/rgbw.json +++ b/tests/components/wled/fixtures/rgbw.json @@ -68,7 +68,8 @@ "brand": "WLED", "product": "DIY light", "btype": "bin", - "mac": "aabbccddee11" + "mac": "aabbccddee11", + "ip": "127.0.0.1" }, "effects": [ "Solid", diff --git a/tests/components/wled/snapshots/test_diagnostics.ambr b/tests/components/wled/snapshots/test_diagnostics.ambr index 25db6a3116b..643e5fe4ad0 100644 --- a/tests/components/wled/snapshots/test_diagnostics.ambr +++ b/tests/components/wled/snapshots/test_diagnostics.ambr @@ -92,7 +92,7 @@ 'effect_count': 81, 'filesystem': None, 'free_heap': 14600, - 'ip': 'Unknown', + 'ip': '127.0.0.1', 'leds': dict({ '__type': "", 'repr': 'Leds(cct=False, count=30, fps=None, light_capabilities=None, max_power=850, max_segments=10, power=470, rgbw=False, wv=True, segment_light_capabilities=None)', diff --git a/tests/components/wled/test_sensor.py b/tests/components/wled/test_sensor.py index f4016ce37aa..d9168d7b697 100644 --- a/tests/components/wled/test_sensor.py +++ b/tests/components/wled/test_sensor.py @@ -110,6 +110,15 @@ async def test_sensors( assert entry.unique_id == "aabbccddeeff_wifi_bssid" assert entry.entity_category is EntityCategory.DIAGNOSTIC + assert (state := hass.states.get("sensor.wled_rgb_light_ip")) + assert state.attributes.get(ATTR_ICON) == "mdi:ip-network" + assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) is None + assert state.state == "127.0.0.1" + + assert (entry := entity_registry.async_get("sensor.wled_rgb_light_ip")) + assert entry.unique_id == "aabbccddeeff_ip" + assert entry.entity_category is EntityCategory.DIAGNOSTIC + @pytest.mark.parametrize( "entity_id",