diff --git a/homeassistant/components/easyenergy/manifest.json b/homeassistant/components/easyenergy/manifest.json index 803530fd6f8..5755a1b3dbe 100644 --- a/homeassistant/components/easyenergy/manifest.json +++ b/homeassistant/components/easyenergy/manifest.json @@ -6,5 +6,5 @@ "documentation": "https://www.home-assistant.io/integrations/easyenergy", "iot_class": "cloud_polling", "quality_scale": "platinum", - "requirements": ["easyenergy==0.2.3"] + "requirements": ["easyenergy==0.3.0"] } diff --git a/homeassistant/components/easyenergy/sensor.py b/homeassistant/components/easyenergy/sensor.py index 0df5b9bd8c2..9cf5944dfaa 100644 --- a/homeassistant/components/easyenergy/sensor.py +++ b/homeassistant/components/easyenergy/sensor.py @@ -13,7 +13,13 @@ from homeassistant.components.sensor import ( SensorStateClass, ) from homeassistant.config_entries import ConfigEntry -from homeassistant.const import CURRENCY_EURO, PERCENTAGE, UnitOfEnergy, UnitOfVolume +from homeassistant.const import ( + CURRENCY_EURO, + PERCENTAGE, + UnitOfEnergy, + UnitOfTime, + UnitOfVolume, +) from homeassistant.core import HomeAssistant from homeassistant.helpers.device_registry import DeviceEntryType from homeassistant.helpers.entity import DeviceInfo @@ -175,6 +181,22 @@ SENSORS: tuple[EasyEnergySensorEntityDescription, ...] = ( icon="mdi:percent", value_fn=lambda data: data.energy_today.pct_of_max_return, ), + EasyEnergySensorEntityDescription( + key="hours_priced_equal_or_lower", + name="Hours priced equal or lower than current - today", + service_type="today_energy_usage", + native_unit_of_measurement=UnitOfTime.HOURS, + icon="mdi:clock", + value_fn=lambda data: data.energy_today.hours_priced_equal_or_lower_usage, + ), + EasyEnergySensorEntityDescription( + key="hours_priced_equal_or_higher", + name="Hours priced equal or higher than current - today", + service_type="today_energy_return", + native_unit_of_measurement=UnitOfTime.HOURS, + icon="mdi:clock", + value_fn=lambda data: data.energy_today.hours_priced_equal_or_higher_return, + ), ) diff --git a/requirements_all.txt b/requirements_all.txt index 17565a89f46..e352313537e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -626,7 +626,7 @@ dynalite_devices==0.1.47 eagle100==0.1.1 # homeassistant.components.easyenergy -easyenergy==0.2.3 +easyenergy==0.3.0 # homeassistant.components.ebusd ebusdpy==0.0.17 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 8d45f95a79c..3c98ddf35cd 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -497,7 +497,7 @@ dynalite_devices==0.1.47 eagle100==0.1.1 # homeassistant.components.easyenergy -easyenergy==0.2.3 +easyenergy==0.3.0 # homeassistant.components.elgato elgato==4.0.1 diff --git a/tests/components/easyenergy/test_sensor.py b/tests/components/easyenergy/test_sensor.py index edbf5e23ae4..98e94197db9 100644 --- a/tests/components/easyenergy/test_sensor.py +++ b/tests/components/easyenergy/test_sensor.py @@ -124,6 +124,25 @@ async def test_energy_usage_today( assert not device_entry.model assert not device_entry.sw_version + # Usage hours priced equal or lower sensor + state = hass.states.get( + "sensor.easyenergy_today_energy_usage_hours_priced_equal_or_lower" + ) + entry = entity_registry.async_get( + "sensor.easyenergy_today_energy_usage_hours_priced_equal_or_lower" + ) + assert entry + assert state + assert ( + entry.unique_id == f"{entry_id}_today_energy_usage_hours_priced_equal_or_lower" + ) + assert state.state == "21" + assert ( + state.attributes.get(ATTR_FRIENDLY_NAME) + == "Energy market price - Usage Hours priced equal or lower than current - today" + ) + assert ATTR_DEVICE_CLASS not in state.attributes + @pytest.mark.freeze_time("2023-01-19 15:00:00") async def test_energy_return_today( @@ -219,6 +238,26 @@ async def test_energy_return_today( assert not device_entry.model assert not device_entry.sw_version + # Return hours priced equal or higher sensor + state = hass.states.get( + "sensor.easyenergy_today_energy_return_hours_priced_equal_or_higher" + ) + entry = entity_registry.async_get( + "sensor.easyenergy_today_energy_return_hours_priced_equal_or_higher" + ) + assert entry + assert state + assert ( + entry.unique_id + == f"{entry_id}_today_energy_return_hours_priced_equal_or_higher" + ) + assert state.state == "3" + assert ( + state.attributes.get(ATTR_FRIENDLY_NAME) + == "Energy market price - Return Hours priced equal or higher than current - today" + ) + assert ATTR_DEVICE_CLASS not in state.attributes + @pytest.mark.freeze_time("2023-01-19 10:00:00") async def test_gas_today(