From 6c65db20368b15dd70b2fa54f33a74ae783c2985 Mon Sep 17 00:00:00 2001 From: Sheldon Ip <4224778+sheldonip@users.noreply.github.com> Date: Tue, 10 Oct 2023 20:12:43 +0100 Subject: [PATCH] Add rising sensor to sun (#93276) --- homeassistant/components/sun/sensor.py | 8 +++++ homeassistant/components/sun/strings.json | 3 +- tests/components/sun/test_sensor.py | 40 +++++++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/sun/sensor.py b/homeassistant/components/sun/sensor.py index f83564bbac3..0f867f9b7c4 100644 --- a/homeassistant/components/sun/sensor.py +++ b/homeassistant/components/sun/sensor.py @@ -108,6 +108,14 @@ SENSOR_TYPES: tuple[SunSensorEntityDescription, ...] = ( native_unit_of_measurement=DEGREE, signal=SIGNAL_POSITION_CHANGED, ), + SunSensorEntityDescription( + key="solar_rising", + translation_key="solar_rising", + icon="mdi:sun-clock", + value_fn=lambda data: data.rising, + entity_registry_enabled_default=False, + signal=SIGNAL_EVENTS_CHANGED, + ), ) diff --git a/homeassistant/components/sun/strings.json b/homeassistant/components/sun/strings.json index 3d0374f1de0..eb538eedf09 100644 --- a/homeassistant/components/sun/strings.json +++ b/homeassistant/components/sun/strings.json @@ -28,7 +28,8 @@ "next_rising": { "name": "Next rising" }, "next_setting": { "name": "Next setting" }, "solar_azimuth": { "name": "Solar azimuth" }, - "solar_elevation": { "name": "Solar elevation" } + "solar_elevation": { "name": "Solar elevation" }, + "solar_rising": { "name": "Solar rising" } } } } diff --git a/tests/components/sun/test_sensor.py b/tests/components/sun/test_sensor.py index 6559cc3f7e9..b1fb0d2facd 100644 --- a/tests/components/sun/test_sensor.py +++ b/tests/components/sun/test_sensor.py @@ -138,3 +138,43 @@ async def test_setting_rising( assert ( solar_azimuth_state.state != hass.states.get("sensor.sun_solar_azimuth").state ) + + entity = entity_reg.async_get("sensor.sun_next_dusk") + assert entity + assert entity.entity_category is EntityCategory.DIAGNOSTIC + assert entity.unique_id == f"{entry_ids[0].entry_id}-next_dusk" + + entity = entity_reg.async_get("sensor.sun_next_midnight") + assert entity + assert entity.entity_category is EntityCategory.DIAGNOSTIC + assert entity.unique_id == f"{entry_ids[0].entry_id}-next_midnight" + + entity = entity_reg.async_get("sensor.sun_next_noon") + assert entity + assert entity.entity_category is EntityCategory.DIAGNOSTIC + assert entity.unique_id == f"{entry_ids[0].entry_id}-next_noon" + + entity = entity_reg.async_get("sensor.sun_next_rising") + assert entity + assert entity.entity_category is EntityCategory.DIAGNOSTIC + assert entity.unique_id == f"{entry_ids[0].entry_id}-next_rising" + + entity = entity_reg.async_get("sensor.sun_next_setting") + assert entity + assert entity.entity_category is EntityCategory.DIAGNOSTIC + assert entity.unique_id == f"{entry_ids[0].entry_id}-next_setting" + + entity = entity_reg.async_get("sensor.sun_solar_elevation") + assert entity + assert entity.entity_category is EntityCategory.DIAGNOSTIC + assert entity.unique_id == f"{entry_ids[0].entry_id}-solar_elevation" + + entity = entity_reg.async_get("sensor.sun_solar_azimuth") + assert entity + assert entity.entity_category is EntityCategory.DIAGNOSTIC + assert entity.unique_id == f"{entry_ids[0].entry_id}-solar_azimuth" + + entity = entity_reg.async_get("sensor.sun_solar_rising") + assert entity + assert entity.entity_category is EntityCategory.DIAGNOSTIC + assert entity.unique_id == f"{entry_ids[0].entry_id}-solar_rising"