Bump aiopvpc
to 4.0.1 (#85612)
* 📦️ Bump aiopvpc version * ♻️ Evolve DataUpdateCoordinator and PVPC sensor for new aiopvpc setting `SensorDeviceClass.MONETARY` for the price sensor * 🍱 tests: Update tests fixtures with new sensor data for aiopvpc v4 with 'esios_public' as data-source * ✅ tests: Adapt test suite for new default data-source * 📦️ Bump aiopvpc version for latest patch 4.0.1 * ⏪️ Revert changes unrelated to library bump * ⏪️ Revert tests changes unrelated to library bump
This commit is contained in:
parent
82ec769ec5
commit
2286029b5d
10 changed files with 701 additions and 199 deletions
|
@ -1,9 +1,8 @@
|
|||
"""The pvpc_hourly_pricing integration to collect Spain official electric prices."""
|
||||
from collections.abc import Mapping
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import timedelta
|
||||
import logging
|
||||
|
||||
from aiopvpc import DEFAULT_POWER_KW, TARIFFS, PVPCData
|
||||
from aiopvpc import DEFAULT_POWER_KW, TARIFFS, EsiosApiData, PVPCData
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
|
@ -122,7 +121,7 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||
return unload_ok
|
||||
|
||||
|
||||
class ElecPricesDataUpdateCoordinator(DataUpdateCoordinator[Mapping[datetime, float]]):
|
||||
class ElecPricesDataUpdateCoordinator(DataUpdateCoordinator[EsiosApiData]):
|
||||
"""Class to manage fetching Electricity prices data from API."""
|
||||
|
||||
def __init__(self, hass: HomeAssistant, entry: ConfigEntry) -> None:
|
||||
|
@ -144,11 +143,13 @@ class ElecPricesDataUpdateCoordinator(DataUpdateCoordinator[Mapping[datetime, fl
|
|||
"""Return entry ID."""
|
||||
return self._entry.entry_id
|
||||
|
||||
async def _async_update_data(self) -> Mapping[datetime, float]:
|
||||
async def _async_update_data(self) -> EsiosApiData:
|
||||
"""Update electricity prices from the ESIOS API."""
|
||||
prices = await self.api.async_update_prices(dt_util.utcnow())
|
||||
self.api.process_state_and_attributes(dt_util.utcnow())
|
||||
if not prices:
|
||||
api_data = await self.api.async_update_all(self.data, dt_util.utcnow())
|
||||
if (
|
||||
not api_data
|
||||
or not api_data.sensors
|
||||
or not all(api_data.availability.values())
|
||||
):
|
||||
raise UpdateFailed
|
||||
|
||||
return prices
|
||||
return api_data
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
"name": "Spain electricity hourly pricing (PVPC)",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/pvpc_hourly_pricing",
|
||||
"requirements": ["aiopvpc==3.0.0"],
|
||||
"requirements": ["aiopvpc==4.0.1"],
|
||||
"codeowners": ["@azogue"],
|
||||
"quality_scale": "platinum",
|
||||
"iot_class": "cloud_polling",
|
||||
"loggers": ["aiopvpc", "holidays"]
|
||||
"loggers": ["aiopvpc"]
|
||||
}
|
||||
|
|
|
@ -142,11 +142,11 @@ class ElecPriceSensor(CoordinatorEntity[ElecPricesDataUpdateCoordinator], Sensor
|
|||
self._attr_unique_id = unique_id
|
||||
self._attr_name = name
|
||||
self._attr_device_info = DeviceInfo(
|
||||
configuration_url="https://www.ree.es/es/apidatos",
|
||||
configuration_url="https://api.esios.ree.es",
|
||||
entry_type=DeviceEntryType.SERVICE,
|
||||
identifiers={(DOMAIN, coordinator.entry_id)},
|
||||
manufacturer="REE",
|
||||
name="PVPC (REData API)",
|
||||
name="ESIOS API",
|
||||
)
|
||||
self._state: StateType = None
|
||||
self._attrs: Mapping[str, Any] = {}
|
||||
|
@ -171,21 +171,26 @@ class ElecPriceSensor(CoordinatorEntity[ElecPricesDataUpdateCoordinator], Sensor
|
|||
@callback
|
||||
def update_current_price(self, now: datetime) -> None:
|
||||
"""Update the sensor state, by selecting the current price for this hour."""
|
||||
self.coordinator.api.process_state_and_attributes(now)
|
||||
self.coordinator.api.process_state_and_attributes(
|
||||
self.coordinator.data, self.entity_description.key, now
|
||||
)
|
||||
self.async_write_ha_state()
|
||||
|
||||
@property
|
||||
def native_value(self) -> StateType:
|
||||
"""Return the state of the sensor."""
|
||||
self._state = self.coordinator.api.state
|
||||
self._state = self.coordinator.api.states.get(self.entity_description.key)
|
||||
return self._state
|
||||
|
||||
@property
|
||||
def extra_state_attributes(self) -> Mapping[str, Any] | None:
|
||||
"""Return the state attributes."""
|
||||
sensor_attributes = self.coordinator.api.sensor_attributes.get(
|
||||
self.entity_description.key, {}
|
||||
)
|
||||
self._attrs = {
|
||||
_PRICE_SENSOR_ATTRIBUTES_MAP[key]: value
|
||||
for key, value in self.coordinator.api.attributes.items()
|
||||
for key, value in sensor_attributes.items()
|
||||
if key in _PRICE_SENSOR_ATTRIBUTES_MAP
|
||||
}
|
||||
return self._attrs
|
||||
|
|
|
@ -244,7 +244,7 @@ aiopurpleair==2022.12.1
|
|||
aiopvapi==2.0.4
|
||||
|
||||
# homeassistant.components.pvpc_hourly_pricing
|
||||
aiopvpc==3.0.0
|
||||
aiopvpc==4.0.1
|
||||
|
||||
# homeassistant.components.lidarr
|
||||
# homeassistant.components.radarr
|
||||
|
|
|
@ -222,7 +222,7 @@ aiopurpleair==2022.12.1
|
|||
aiopvapi==2.0.4
|
||||
|
||||
# homeassistant.components.pvpc_hourly_pricing
|
||||
aiopvpc==3.0.0
|
||||
aiopvpc==4.0.1
|
||||
|
||||
# homeassistant.components.lidarr
|
||||
# homeassistant.components.radarr
|
||||
|
|
|
@ -4,16 +4,12 @@ from http import HTTPStatus
|
|||
import pytest
|
||||
|
||||
from homeassistant.components.pvpc_hourly_pricing import ATTR_TARIFF, DOMAIN
|
||||
from homeassistant.const import (
|
||||
ATTR_UNIT_OF_MEASUREMENT,
|
||||
CURRENCY_EURO,
|
||||
ENERGY_KILO_WATT_HOUR,
|
||||
)
|
||||
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT, CURRENCY_EURO, UnitOfEnergy
|
||||
|
||||
from tests.common import load_fixture
|
||||
from tests.test_util.aiohttp import AiohttpClientMocker
|
||||
|
||||
FIXTURE_JSON_DATA_2021_06_01 = "PVPC_DATA_2021_06_01.json"
|
||||
FIXTURE_JSON_PUBLIC_DATA_2023_01_06 = "PVPC_DATA_2023_01_06.json"
|
||||
|
||||
|
||||
def check_valid_state(state, tariff: str, value=None, key_attr=None):
|
||||
|
@ -21,7 +17,7 @@ def check_valid_state(state, tariff: str, value=None, key_attr=None):
|
|||
assert state
|
||||
assert (
|
||||
state.attributes[ATTR_UNIT_OF_MEASUREMENT]
|
||||
== f"{CURRENCY_EURO}/{ENERGY_KILO_WATT_HOUR}"
|
||||
== f"{CURRENCY_EURO}/{UnitOfEnergy.KILO_WATT_HOUR}"
|
||||
)
|
||||
try:
|
||||
_ = float(state.state)
|
||||
|
@ -42,17 +38,18 @@ def check_valid_state(state, tariff: str, value=None, key_attr=None):
|
|||
@pytest.fixture
|
||||
def pvpc_aioclient_mock(aioclient_mock: AiohttpClientMocker):
|
||||
"""Create a mock config entry."""
|
||||
mask_url = "https://apidatos.ree.es/es/datos/mercados/precios-mercados-tiempo-real"
|
||||
mask_url += "?time_trunc=hour&geo_ids={0}&start_date={1}T00:00&end_date={1}T23:59"
|
||||
mask_url_public = (
|
||||
"https://api.esios.ree.es/archives/70/download_json?locale=es&date={0}"
|
||||
)
|
||||
# new format for prices >= 2021-06-01
|
||||
sample_data = load_fixture(f"{DOMAIN}/{FIXTURE_JSON_DATA_2021_06_01}")
|
||||
|
||||
# tariff variant with different geo_ids=8744
|
||||
aioclient_mock.get(mask_url.format(8741, "2021-06-01"), text=sample_data)
|
||||
aioclient_mock.get(mask_url.format(8744, "2021-06-01"), text=sample_data)
|
||||
# simulate missing day
|
||||
example_day = "2023-01-06"
|
||||
aioclient_mock.get(
|
||||
mask_url.format(8741, "2021-06-02"),
|
||||
mask_url_public.format(example_day),
|
||||
text=load_fixture(f"{DOMAIN}/{FIXTURE_JSON_PUBLIC_DATA_2023_01_06}"),
|
||||
)
|
||||
# simulate missing days
|
||||
aioclient_mock.get(
|
||||
mask_url_public.format("2023-01-07"),
|
||||
status=HTTPStatus.BAD_GATEWAY,
|
||||
text=(
|
||||
'{"errors":[{"code":502,"status":"502","title":"Bad response from ESIOS",'
|
||||
|
|
|
@ -1,154 +0,0 @@
|
|||
{
|
||||
"data": {
|
||||
"type": "Precios mercado peninsular en tiempo real",
|
||||
"id": "mer13",
|
||||
"attributes": {
|
||||
"title": "Precios mercado peninsular en tiempo real",
|
||||
"last-update": "2021-05-31T20:19:18.000+02:00",
|
||||
"description": null
|
||||
},
|
||||
"meta": {
|
||||
"cache-control": {
|
||||
"cache": "MISS"
|
||||
}
|
||||
}
|
||||
},
|
||||
"included": [
|
||||
{
|
||||
"type": "PVPC (\u20ac/MWh)",
|
||||
"id": "1001",
|
||||
"groupId": null,
|
||||
"attributes": {
|
||||
"title": "PVPC (\u20ac/MWh)",
|
||||
"description": null,
|
||||
"color": "#ffcf09",
|
||||
"type": null,
|
||||
"magnitude": "price",
|
||||
"composite": false,
|
||||
"last-update": "2021-05-31T20:19:18.000+02:00",
|
||||
"values": [
|
||||
{
|
||||
"value": 116.33,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T00:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 115.95,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T01:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 114.89,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T02:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 114.96,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T03:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 114.84,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T04:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 116.03,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T05:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 116.29,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T06:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 115.7,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T07:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 152.89,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T08:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 150.83,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T09:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 149.28,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T10:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 240.5,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T11:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 238.09,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T12:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 235.3,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T13:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 231.28,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T14:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 132.88,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T15:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 131.93,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T16:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 135.99,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T17:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 138.13,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T18:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 240.4,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T19:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 246.2,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T20:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 248.08,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T21:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 249.41,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T22:00:00.000+02:00"
|
||||
},
|
||||
{
|
||||
"value": 156.5,
|
||||
"percentage": 1,
|
||||
"datetime": "2021-06-01T23:00:00.000+02:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,652 @@
|
|||
{
|
||||
"PVPC": [
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "00-01",
|
||||
"PCB": "159,69",
|
||||
"CYM": "159,69",
|
||||
"COF2TD": "0,000132685792000000",
|
||||
"PMHPCB": "131,22",
|
||||
"PMHCYM": "131,22",
|
||||
"SAHPCB": "14,49",
|
||||
"SAHCYM": "14,49",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,36",
|
||||
"CCVCYM": "3,36",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "7,21",
|
||||
"EDCGASCYM": "7,21"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "01-02",
|
||||
"PCB": "155,71",
|
||||
"CYM": "155,71",
|
||||
"COF2TD": "0,000111367791000000",
|
||||
"PMHPCB": "124,44",
|
||||
"PMHCYM": "124,44",
|
||||
"SAHPCB": "18,44",
|
||||
"SAHCYM": "18,44",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,30",
|
||||
"CCVCYM": "3,30",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "6,11",
|
||||
"EDCGASCYM": "6,11"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "02-03",
|
||||
"PCB": "154,41",
|
||||
"CYM": "154,41",
|
||||
"COF2TD": "0,000095082106000000",
|
||||
"PMHPCB": "121,01",
|
||||
"PMHCYM": "121,01",
|
||||
"SAHPCB": "20,12",
|
||||
"SAHCYM": "20,12",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,29",
|
||||
"CCVCYM": "3,29",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "6,57",
|
||||
"EDCGASCYM": "6,57"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "03-04",
|
||||
"PCB": "139,37",
|
||||
"CYM": "139,37",
|
||||
"COF2TD": "0,000085049382000000",
|
||||
"PMHPCB": "102,36",
|
||||
"PMHCYM": "102,36",
|
||||
"SAHPCB": "24,98",
|
||||
"SAHCYM": "24,98",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,07",
|
||||
"CCVCYM": "3,07",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "5,52",
|
||||
"EDCGASCYM": "5,52"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "04-05",
|
||||
"PCB": "134,02",
|
||||
"CYM": "134,02",
|
||||
"COF2TD": "0,000079934351000000",
|
||||
"PMHPCB": "95,57",
|
||||
"PMHCYM": "95,57",
|
||||
"SAHPCB": "26,37",
|
||||
"SAHCYM": "26,37",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "2,99",
|
||||
"CCVCYM": "2,99",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "5,66",
|
||||
"EDCGASCYM": "5,66"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "05-06",
|
||||
"PCB": "140,02",
|
||||
"CYM": "140,02",
|
||||
"COF2TD": "0,000078802072000000",
|
||||
"PMHPCB": "102,11",
|
||||
"PMHCYM": "102,11",
|
||||
"SAHPCB": "25,68",
|
||||
"SAHCYM": "25,68",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,08",
|
||||
"CCVCYM": "3,08",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "5,73",
|
||||
"EDCGASCYM": "5,73"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "06-07",
|
||||
"PCB": "154,05",
|
||||
"CYM": "154,05",
|
||||
"COF2TD": "0,000080430301000000",
|
||||
"PMHPCB": "121,91",
|
||||
"PMHCYM": "121,91",
|
||||
"SAHPCB": "19,87",
|
||||
"SAHCYM": "19,87",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,28",
|
||||
"CCVCYM": "3,28",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "5,56",
|
||||
"EDCGASCYM": "5,56"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "07-08",
|
||||
"PCB": "163,15",
|
||||
"CYM": "163,15",
|
||||
"COF2TD": "0,000084537404000000",
|
||||
"PMHPCB": "133,05",
|
||||
"PMHCYM": "133,05",
|
||||
"SAHPCB": "17,96",
|
||||
"SAHCYM": "17,96",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,42",
|
||||
"CCVCYM": "3,42",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "5,30",
|
||||
"EDCGASCYM": "5,30"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "08-09",
|
||||
"PCB": "180,50",
|
||||
"CYM": "180,50",
|
||||
"COF2TD": "0,000092612528000000",
|
||||
"PMHPCB": "151,14",
|
||||
"PMHCYM": "151,14",
|
||||
"SAHPCB": "17,14",
|
||||
"SAHCYM": "17,14",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,68",
|
||||
"CCVCYM": "3,68",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "5,12",
|
||||
"EDCGASCYM": "5,12"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "09-10",
|
||||
"PCB": "174,90",
|
||||
"CYM": "174,90",
|
||||
"COF2TD": "0,000114375020000000",
|
||||
"PMHPCB": "152,13",
|
||||
"PMHCYM": "152,13",
|
||||
"SAHPCB": "12,34",
|
||||
"SAHCYM": "12,34",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,58",
|
||||
"CCVCYM": "3,58",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "3,44",
|
||||
"EDCGASCYM": "3,44"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "10-11",
|
||||
"PCB": "166,47",
|
||||
"CYM": "166,47",
|
||||
"COF2TD": "0,000137288470000000",
|
||||
"PMHPCB": "144,86",
|
||||
"PMHCYM": "144,86",
|
||||
"SAHPCB": "12,11",
|
||||
"SAHCYM": "12,11",
|
||||
"FOMPCB": "0,04",
|
||||
"FOMCYM": "0,04",
|
||||
"FOSPCB": "0,19",
|
||||
"FOSCYM": "0,19",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,44",
|
||||
"CCVCYM": "3,44",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "2,65",
|
||||
"EDCGASCYM": "2,65"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "11-12",
|
||||
"PCB": "152,30",
|
||||
"CYM": "152,30",
|
||||
"COF2TD": "0,000147389186000000",
|
||||
"PMHPCB": "132,46",
|
||||
"PMHCYM": "132,46",
|
||||
"SAHPCB": "10,92",
|
||||
"SAHCYM": "10,92",
|
||||
"FOMPCB": "0,04",
|
||||
"FOMCYM": "0,04",
|
||||
"FOSPCB": "0,19",
|
||||
"FOSCYM": "0,19",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,22",
|
||||
"CCVCYM": "3,22",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "2,29",
|
||||
"EDCGASCYM": "2,29"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "12-13",
|
||||
"PCB": "144,54",
|
||||
"CYM": "144,54",
|
||||
"COF2TD": "0,000147566474000000",
|
||||
"PMHPCB": "124,33",
|
||||
"PMHCYM": "124,33",
|
||||
"SAHPCB": "11,39",
|
||||
"SAHCYM": "11,39",
|
||||
"FOMPCB": "0,04",
|
||||
"FOMCYM": "0,04",
|
||||
"FOSPCB": "0,19",
|
||||
"FOSCYM": "0,19",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,11",
|
||||
"CCVCYM": "3,11",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "2,30",
|
||||
"EDCGASCYM": "2,30"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "13-14",
|
||||
"PCB": "132,08",
|
||||
"CYM": "132,08",
|
||||
"COF2TD": "0,000152593999000000",
|
||||
"PMHPCB": "108,55",
|
||||
"PMHCYM": "108,55",
|
||||
"SAHPCB": "15,11",
|
||||
"SAHCYM": "15,11",
|
||||
"FOMPCB": "0,04",
|
||||
"FOMCYM": "0,04",
|
||||
"FOSPCB": "0,19",
|
||||
"FOSCYM": "0,19",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "2,92",
|
||||
"CCVCYM": "2,92",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "2,10",
|
||||
"EDCGASCYM": "2,10"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "14-15",
|
||||
"PCB": "119,60",
|
||||
"CYM": "119,60",
|
||||
"COF2TD": "0,000151275074000000",
|
||||
"PMHPCB": "96,79",
|
||||
"PMHCYM": "96,79",
|
||||
"SAHPCB": "15,31",
|
||||
"SAHCYM": "15,31",
|
||||
"FOMPCB": "0,04",
|
||||
"FOMCYM": "0,04",
|
||||
"FOSPCB": "0,19",
|
||||
"FOSCYM": "0,19",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "2,73",
|
||||
"CCVCYM": "2,73",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "1,35",
|
||||
"EDCGASCYM": "1,35"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "15-16",
|
||||
"PCB": "108,74",
|
||||
"CYM": "108,74",
|
||||
"COF2TD": "0,000136801693000000",
|
||||
"PMHPCB": "85,31",
|
||||
"PMHCYM": "85,31",
|
||||
"SAHPCB": "16,78",
|
||||
"SAHCYM": "16,78",
|
||||
"FOMPCB": "0,04",
|
||||
"FOMCYM": "0,04",
|
||||
"FOSPCB": "0,19",
|
||||
"FOSCYM": "0,19",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "2,57",
|
||||
"CCVCYM": "2,57",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "0,66",
|
||||
"EDCGASCYM": "0,66"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "16-17",
|
||||
"PCB": "123,79",
|
||||
"CYM": "123,79",
|
||||
"COF2TD": "0,000129250075000000",
|
||||
"PMHPCB": "98,80",
|
||||
"PMHCYM": "98,80",
|
||||
"SAHPCB": "17,70",
|
||||
"SAHCYM": "17,70",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,19",
|
||||
"FOSCYM": "0,19",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "2,80",
|
||||
"CCVCYM": "2,80",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "1,07",
|
||||
"EDCGASCYM": "1,07"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "17-18",
|
||||
"PCB": "166,41",
|
||||
"CYM": "166,41",
|
||||
"COF2TD": "0,000131159722000000",
|
||||
"PMHPCB": "148,24",
|
||||
"PMHCYM": "148,24",
|
||||
"SAHPCB": "9,16",
|
||||
"SAHCYM": "9,16",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,45",
|
||||
"CCVCYM": "3,45",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "2,15",
|
||||
"EDCGASCYM": "2,15"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "18-19",
|
||||
"PCB": "173,49",
|
||||
"CYM": "173,49",
|
||||
"COF2TD": "0,000151915481000000",
|
||||
"PMHPCB": "157,13",
|
||||
"PMHCYM": "157,13",
|
||||
"SAHPCB": "7,31",
|
||||
"SAHCYM": "7,31",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,55",
|
||||
"CCVCYM": "3,55",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "2,08",
|
||||
"EDCGASCYM": "2,08"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "19-20",
|
||||
"PCB": "186,17",
|
||||
"CYM": "186,17",
|
||||
"COF2TD": "0,000166375982000000",
|
||||
"PMHPCB": "168,44",
|
||||
"PMHCYM": "168,44",
|
||||
"SAHPCB": "6,56",
|
||||
"SAHCYM": "6,56",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,74",
|
||||
"CCVCYM": "3,74",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "4,02",
|
||||
"EDCGASCYM": "4,02"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "20-21",
|
||||
"PCB": "186,11",
|
||||
"CYM": "186,11",
|
||||
"COF2TD": "0,000177449572000000",
|
||||
"PMHPCB": "168,44",
|
||||
"PMHCYM": "168,44",
|
||||
"SAHPCB": "6,52",
|
||||
"SAHCYM": "6,52",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,74",
|
||||
"CCVCYM": "3,74",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "3,99",
|
||||
"EDCGASCYM": "3,99"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "21-22",
|
||||
"PCB": "178,45",
|
||||
"CYM": "178,45",
|
||||
"COF2TD": "0,000181996443000000",
|
||||
"PMHPCB": "161,70",
|
||||
"PMHCYM": "161,70",
|
||||
"SAHPCB": "6,65",
|
||||
"SAHCYM": "6,65",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,63",
|
||||
"CCVCYM": "3,63",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "3,05",
|
||||
"EDCGASCYM": "3,05"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "22-23",
|
||||
"PCB": "139,37",
|
||||
"CYM": "139,37",
|
||||
"COF2TD": "0,000170132849000000",
|
||||
"PMHPCB": "122,91",
|
||||
"PMHCYM": "122,91",
|
||||
"SAHPCB": "7,67",
|
||||
"SAHCYM": "7,67",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "3,05",
|
||||
"CCVCYM": "3,05",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "2,33",
|
||||
"EDCGASCYM": "2,33"
|
||||
},
|
||||
{
|
||||
"Dia": "06/01/2023",
|
||||
"Hora": "23-24",
|
||||
"PCB": "129,35",
|
||||
"CYM": "129,35",
|
||||
"COF2TD": "0,000146932566000000",
|
||||
"PMHPCB": "113,05",
|
||||
"PMHCYM": "113,05",
|
||||
"SAHPCB": "8,35",
|
||||
"SAHCYM": "8,35",
|
||||
"FOMPCB": "0,05",
|
||||
"FOMCYM": "0,05",
|
||||
"FOSPCB": "0,20",
|
||||
"FOSCYM": "0,20",
|
||||
"INTPCB": "0,00",
|
||||
"INTCYM": "0,00",
|
||||
"PCAPPCB": "0,00",
|
||||
"PCAPCYM": "0,00",
|
||||
"TEUPCB": "3,18",
|
||||
"TEUCYM": "3,18",
|
||||
"CCVPCB": "2,90",
|
||||
"CCVCYM": "2,90",
|
||||
"EDSRPCB": "0,00",
|
||||
"EDSRCYM": "0,00",
|
||||
"EDCGASPCB": "1,63",
|
||||
"EDCGASCYM": "1,63"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -19,6 +19,8 @@ from .conftest import check_valid_state
|
|||
from tests.common import date_util
|
||||
from tests.test_util.aiohttp import AiohttpClientMocker
|
||||
|
||||
_MOCK_TIME_VALID_RESPONSES = datetime(2023, 1, 6, 12, 0, tzinfo=date_util.UTC)
|
||||
|
||||
|
||||
async def test_config_flow(hass, pvpc_aioclient_mock: AiohttpClientMocker):
|
||||
"""
|
||||
|
@ -37,9 +39,8 @@ async def test_config_flow(hass, pvpc_aioclient_mock: AiohttpClientMocker):
|
|||
ATTR_POWER: 4.6,
|
||||
ATTR_POWER_P3: 5.75,
|
||||
}
|
||||
mock_data = {"return_time": datetime(2021, 6, 1, 12, 0, tzinfo=date_util.UTC)}
|
||||
|
||||
with freeze_time(mock_data["return_time"]):
|
||||
with freeze_time(_MOCK_TIME_VALID_RESPONSES):
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
DOMAIN, context={"source": config_entries.SOURCE_USER}
|
||||
)
|
||||
|
@ -86,9 +87,9 @@ async def test_config_flow(hass, pvpc_aioclient_mock: AiohttpClientMocker):
|
|||
state = hass.states.get("sensor.test")
|
||||
check_valid_state(state, tariff=TARIFFS[1])
|
||||
assert pvpc_aioclient_mock.call_count == 2
|
||||
assert state.attributes["period"] == "P1"
|
||||
assert state.attributes["period"] == "P3"
|
||||
assert state.attributes["next_period"] == "P2"
|
||||
assert state.attributes["available_power"] == 4600
|
||||
assert state.attributes["available_power"] == 5750
|
||||
|
||||
# check options flow
|
||||
current_entries = hass.config_entries.async_entries(DOMAIN)
|
||||
|
@ -107,6 +108,6 @@ async def test_config_flow(hass, pvpc_aioclient_mock: AiohttpClientMocker):
|
|||
state = hass.states.get("sensor.test")
|
||||
check_valid_state(state, tariff=TARIFFS[0])
|
||||
assert pvpc_aioclient_mock.call_count == 3
|
||||
assert state.attributes["period"] == "P2"
|
||||
assert state.attributes["next_period"] == "P1"
|
||||
assert state.attributes["available_power"] == 3000
|
||||
assert state.attributes["period"] == "P3"
|
||||
assert state.attributes["next_period"] == "P2"
|
||||
assert state.attributes["available_power"] == 4600
|
||||
|
|
|
@ -58,7 +58,7 @@ async def test_multi_sensor_migration(
|
|||
assert len(hass.config_entries.async_entries(DOMAIN)) == 2
|
||||
assert len(entity_reg.entities) == 2
|
||||
|
||||
mock_data = {"return_time": datetime(2021, 6, 1, 21, tzinfo=date_util.UTC)}
|
||||
mock_data = {"return_time": datetime(2023, 1, 6, 21, tzinfo=date_util.UTC)}
|
||||
|
||||
caplog.clear()
|
||||
with caplog.at_level(logging.WARNING):
|
||||
|
@ -87,9 +87,9 @@ async def test_multi_sensor_migration(
|
|||
|
||||
# check state and availability
|
||||
state = hass.states.get("sensor.test_pvpc_1")
|
||||
check_valid_state(state, tariff=TARIFFS[0], value=0.1565)
|
||||
check_valid_state(state, tariff=TARIFFS[0], value=0.13937)
|
||||
|
||||
with freeze_time(mock_data["return_time"] + timedelta(minutes=60)):
|
||||
with freeze_time(mock_data["return_time"] + timedelta(hours=2)):
|
||||
async_fire_time_changed(hass, mock_data["return_time"])
|
||||
await list(hass.data[DOMAIN].values())[0].async_refresh()
|
||||
await hass.async_block_till_done()
|
||||
|
|
Loading…
Add table
Reference in a new issue