diff --git a/CODEOWNERS b/CODEOWNERS index f0efe63ada2..f185059c999 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -285,6 +285,7 @@ homeassistant/components/ps4/* @ktnrg45 homeassistant/components/ptvsd/* @swamp-ig homeassistant/components/push/* @dgomes homeassistant/components/pvoutput/* @fabaff +homeassistant/components/pvpc_hourly_pricing/* @azogue homeassistant/components/qld_bushfire/* @exxamalte homeassistant/components/qnap/* @colinodell homeassistant/components/quantum_gateway/* @cisasteelersfan diff --git a/homeassistant/components/pvpc_hourly_pricing/.translations/en.json b/homeassistant/components/pvpc_hourly_pricing/.translations/en.json new file mode 100644 index 00000000000..86aaf15c0f1 --- /dev/null +++ b/homeassistant/components/pvpc_hourly_pricing/.translations/en.json @@ -0,0 +1,18 @@ +{ + "config": { + "abort": { + "already_configured": "Integration is already configured with an existing sensor with that tariff" + }, + "step": { + "user": { + "data": { + "name": "Sensor Name", + "tariff": "Contracted tariff (1, 2, or 3 periods)" + }, + "description": "This sensor uses official API to get [hourly pricing of electricity (PVPC)](https://www.esios.ree.es/es/pvpc) in Spain.\nFor more precise explanation visit the [integration docs](https://www.home-assistant.io/integrations/pvpc_hourly_pricing/).\n\nSelect the contracted rate based on the number of billing periods per day:\n- 1 period: normal\n- 2 periods: discrimination (nightly rate)\n- 3 periods: electric car (nightly rate of 3 periods)", + "title": "Tariff selection" + } + }, + "title": "Hourly price of electricity in Spain (PVPC)" + } +} \ No newline at end of file diff --git a/homeassistant/components/pvpc_hourly_pricing/.translations/es.json b/homeassistant/components/pvpc_hourly_pricing/.translations/es.json new file mode 100644 index 00000000000..746edf3043d --- /dev/null +++ b/homeassistant/components/pvpc_hourly_pricing/.translations/es.json @@ -0,0 +1,18 @@ +{ + "config": { + "abort": { + "already_configured": "La integraci\u00f3n ya est\u00e1 configurada con un sensor existente con esa tarifa" + }, + "step": { + "user": { + "data": { + "name": "Nombre del sensor", + "tariff": "Tarifa contratada (1, 2, o 3 periodos)" + }, + "description": "Este sensor utiliza la API oficial de REE para obtener el [precio horario de la electricidad (PVPC)](https://www.esios.ree.es/es/pvpc) en Espa\\u00f1a.\nPara instrucciones detalladas consulte la [documentación de la integración](https://www.home-assistant.io/integrations/pvpc_hourly_pricing/).\n\nSeleccione la tarifa contratada en base al número de periodos de facturación al día:\n- 1 periodo: normal\n- 2 periodos: discriminación (tarifa nocturna)\n- 3 periodos: coche eléctrico (tarifa nocturna de 3 periodos)", + "title": "Selecci\u00f3n de tarifa" + } + }, + "title": "Precio horario de la electricidad en Espa\u00f1a (PVPC)" + } +} \ No newline at end of file diff --git a/homeassistant/components/pvpc_hourly_pricing/__init__.py b/homeassistant/components/pvpc_hourly_pricing/__init__.py new file mode 100644 index 00000000000..5930da52313 --- /dev/null +++ b/homeassistant/components/pvpc_hourly_pricing/__init__.py @@ -0,0 +1,56 @@ +"""The pvpc_hourly_pricing integration to collect Spain official electric prices.""" +import voluptuous as vol + +from homeassistant import config_entries +from homeassistant.const import CONF_NAME +from homeassistant.core import HomeAssistant +import homeassistant.helpers.config_validation as cv + +from .const import ATTR_TARIFF, DEFAULT_NAME, DEFAULT_TARIFF, DOMAIN, PLATFORM, TARIFFS + +UI_CONFIG_SCHEMA = vol.Schema( + { + vol.Required(CONF_NAME, default=DEFAULT_NAME): str, + vol.Required(ATTR_TARIFF, default=DEFAULT_TARIFF): vol.In(TARIFFS), + } +) +CONFIG_SCHEMA = vol.Schema( + {DOMAIN: cv.ensure_list(UI_CONFIG_SCHEMA)}, extra=vol.ALLOW_EXTRA +) + + +async def async_setup(hass: HomeAssistant, config: dict): + """ + Set up the electricity price sensor from configuration.yaml. + + ```yaml + pvpc_hourly_pricing: + - name: PVPC manual ve + tariff: electric_car + - name: PVPC manual nocturna + tariff: discrimination + timeout: 3 + ``` + """ + for conf in config.get(DOMAIN, []): + hass.async_create_task( + hass.config_entries.flow.async_init( + DOMAIN, data=conf, context={"source": config_entries.SOURCE_IMPORT} + ) + ) + + return True + + +async def async_setup_entry(hass: HomeAssistant, entry: config_entries.ConfigEntry): + """Set up pvpc hourly pricing from a config entry.""" + hass.async_create_task( + hass.config_entries.async_forward_entry_setup(entry, PLATFORM) + ) + + return True + + +async def async_unload_entry(hass: HomeAssistant, entry: config_entries.ConfigEntry): + """Unload a config entry.""" + return await hass.config_entries.async_forward_entry_unload(entry, PLATFORM) diff --git a/homeassistant/components/pvpc_hourly_pricing/config_flow.py b/homeassistant/components/pvpc_hourly_pricing/config_flow.py new file mode 100644 index 00000000000..10591e5b82c --- /dev/null +++ b/homeassistant/components/pvpc_hourly_pricing/config_flow.py @@ -0,0 +1,27 @@ +"""Config flow for pvpc_hourly_pricing.""" +from homeassistant import config_entries + +from . import CONF_NAME, UI_CONFIG_SCHEMA +from .const import ATTR_TARIFF, DOMAIN + +_DOMAIN_NAME = DOMAIN + + +class TariffSelectorConfigFlow(config_entries.ConfigFlow, domain=_DOMAIN_NAME): + """Handle a config flow for `pvpc_hourly_pricing` to select the tariff.""" + + VERSION = 1 + CONNECTION_CLASS = config_entries.CONN_CLASS_CLOUD_POLL + + async def async_step_user(self, user_input=None): + """Handle the initial step.""" + if user_input is not None: + await self.async_set_unique_id(user_input[ATTR_TARIFF]) + self._abort_if_unique_id_configured() + return self.async_create_entry(title=user_input[CONF_NAME], data=user_input) + + return self.async_show_form(step_id="user", data_schema=UI_CONFIG_SCHEMA) + + async def async_step_import(self, import_info): + """Handle import from config file.""" + return await self.async_step_user(import_info) diff --git a/homeassistant/components/pvpc_hourly_pricing/const.py b/homeassistant/components/pvpc_hourly_pricing/const.py new file mode 100644 index 00000000000..d75ad9fe35c --- /dev/null +++ b/homeassistant/components/pvpc_hourly_pricing/const.py @@ -0,0 +1,8 @@ +"""Constant values for pvpc_hourly_pricing.""" +from aiopvpc import TARIFFS + +DOMAIN = "pvpc_hourly_pricing" +PLATFORM = "sensor" +ATTR_TARIFF = "tariff" +DEFAULT_NAME = "PVPC" +DEFAULT_TARIFF = TARIFFS[1] diff --git a/homeassistant/components/pvpc_hourly_pricing/manifest.json b/homeassistant/components/pvpc_hourly_pricing/manifest.json new file mode 100644 index 00000000000..a2f6ec12941 --- /dev/null +++ b/homeassistant/components/pvpc_hourly_pricing/manifest.json @@ -0,0 +1,10 @@ +{ + "domain": "pvpc_hourly_pricing", + "name": "Spain electricity hourly pricing (PVPC)", + "config_flow": true, + "documentation": "https://www.home-assistant.io/integrations/pvpc_hourly_pricing", + "requirements": ["aiopvpc==1.0.2"], + "dependencies": [], + "codeowners": ["@azogue"], + "quality_scale": "platinum" +} diff --git a/homeassistant/components/pvpc_hourly_pricing/sensor.py b/homeassistant/components/pvpc_hourly_pricing/sensor.py new file mode 100644 index 00000000000..ff0b01f9ae4 --- /dev/null +++ b/homeassistant/components/pvpc_hourly_pricing/sensor.py @@ -0,0 +1,169 @@ +""" +Sensor to collect the reference daily prices of electricity ('PVPC') in Spain. + +For more details about this platform, please refer to the documentation at +https://www.home-assistant.io/integrations/pvpc_hourly_pricing/ +""" +from datetime import timedelta +import logging +from random import randint +from typing import Optional + +from aiopvpc import PVPCData + +from homeassistant import config_entries +from homeassistant.const import CONF_NAME +from homeassistant.core import HomeAssistant, callback +from homeassistant.helpers.aiohttp_client import async_get_clientsession +from homeassistant.helpers.event import ( + async_track_point_in_time, + async_track_time_change, +) +from homeassistant.helpers.restore_state import RestoreEntity +import homeassistant.util.dt as dt_util + +from .const import ATTR_TARIFF + +_LOGGER = logging.getLogger(__name__) + +ATTR_PRICE = "price" +ICON = "mdi:currency-eur" +UNIT = "€/kWh" + +_DEFAULT_TIMEOUT = 10 + + +async def async_setup_entry( + hass: HomeAssistant, config_entry: config_entries.ConfigEntry, async_add_entities +): + """Set up the electricity price sensor from config_entry.""" + name = config_entry.data[CONF_NAME] + pvpc_data_handler = PVPCData( + tariff=config_entry.data[ATTR_TARIFF], + local_timezone=hass.config.time_zone, + websession=async_get_clientsession(hass), + logger=_LOGGER, + timeout=_DEFAULT_TIMEOUT, + ) + async_add_entities( + [ElecPriceSensor(name, config_entry.unique_id, pvpc_data_handler)], False + ) + + +class ElecPriceSensor(RestoreEntity): + """Class to hold the prices of electricity as a sensor.""" + + unit_of_measurement = UNIT + icon = ICON + should_poll = False + + def __init__(self, name, unique_id, pvpc_data_handler): + """Initialize the sensor object.""" + self._name = name + self._unique_id = unique_id + self._pvpc_data = pvpc_data_handler + self._num_retries = 0 + + self._hourly_tracker = None + self._price_tracker = None + + async def async_will_remove_from_hass(self) -> None: + """Cancel listeners for sensor updates.""" + self._hourly_tracker() + self._price_tracker() + + async def async_added_to_hass(self): + """Handle entity which will be added.""" + await super().async_added_to_hass() + state = await self.async_get_last_state() + if state: + self._pvpc_data.state = state.state + + # Update 'state' value in hour changes + self._hourly_tracker = async_track_time_change( + self.hass, self.update_current_price, second=[0], minute=[0] + ) + # Update prices at random time, 2 times/hour (don't want to upset API) + random_minute = randint(1, 29) + mins_update = [random_minute, random_minute + 30] + self._price_tracker = async_track_time_change( + self.hass, self.async_update_prices, second=[0], minute=mins_update, + ) + _LOGGER.debug( + "Setup of price sensor %s (%s) with tariff '%s', " + "updating prices each hour at %s min", + self.name, + self.entity_id, + self._pvpc_data.tariff, + mins_update, + ) + await self.async_update_prices(dt_util.utcnow()) + self.update_current_price(dt_util.utcnow()) + + @property + def unique_id(self) -> Optional[str]: + """Return a unique ID.""" + return self._unique_id + + @property + def name(self): + """Return the name of the sensor.""" + return self._name + + @property + def state(self): + """Return the state of the sensor.""" + return self._pvpc_data.state + + @property + def available(self) -> bool: + """Return True if entity is available.""" + return self._pvpc_data.state_available + + @property + def device_state_attributes(self): + """Return the state attributes.""" + return self._pvpc_data.attributes + + @callback + def update_current_price(self, now): + """Update the sensor state, by selecting the current price for this hour.""" + self._pvpc_data.process_state_and_attributes(now) + self.async_write_ha_state() + + async def async_update_prices(self, now): + """Update electricity prices from the ESIOS API.""" + prices = await self._pvpc_data.async_update_prices(now) + if not prices and self._pvpc_data.source_available: + self._num_retries += 1 + if self._num_retries > 2: + _LOGGER.warning( + "%s: repeated bad data update, mark component as unavailable source", + self.entity_id, + ) + self._pvpc_data.source_available = False + return + + retry_delay = 2 * self._pvpc_data.timeout + _LOGGER.debug( + "%s: Bad update[retry:%d], will try again in %d s", + self.entity_id, + self._num_retries, + retry_delay, + ) + async_track_point_in_time( + self.hass, + self.async_update_prices, + dt_util.now() + timedelta(seconds=retry_delay), + ) + return + + if not prices: + _LOGGER.debug("%s: data source is not yet available", self.entity_id) + return + + self._num_retries = 0 + if not self._pvpc_data.source_available: + self._pvpc_data.source_available = True + _LOGGER.warning("%s: component has recovered data access", self.entity_id) + self.update_current_price(now) diff --git a/homeassistant/components/pvpc_hourly_pricing/strings.json b/homeassistant/components/pvpc_hourly_pricing/strings.json new file mode 100644 index 00000000000..bff5dc2e68f --- /dev/null +++ b/homeassistant/components/pvpc_hourly_pricing/strings.json @@ -0,0 +1,18 @@ +{ + "config": { + "title": "Hourly price of electricity in Spain (PVPC)", + "step": { + "user": { + "title": "Tariff selection", + "description": "This sensor uses official API to get [hourly pricing of electricity (PVPC)](https://www.esios.ree.es/es/pvpc) in Spain.\nFor more precise explanation visit the [integration docs](https://www.home-assistant.io/integrations/pvpc_hourly_pricing/).\n\nSelect the contracted rate based on the number of billing periods per day:\n- 1 period: normal\n- 2 periods: discrimination (nightly rate)\n- 3 periods: electric car (nightly rate of 3 periods)", + "data": { + "name": "Sensor Name", + "tariff": "Contracted tariff (1, 2, or 3 periods)" + } + } + }, + "abort": { + "already_configured": "Integration is already configured with an existing sensor with that tariff" + } + } +} diff --git a/homeassistant/generated/config_flows.py b/homeassistant/generated/config_flows.py index e318def042e..9e9084a9349 100644 --- a/homeassistant/generated/config_flows.py +++ b/homeassistant/generated/config_flows.py @@ -85,6 +85,7 @@ FLOWS = [ "point", "powerwall", "ps4", + "pvpc_hourly_pricing", "rachio", "rainmachine", "ring", diff --git a/requirements_all.txt b/requirements_all.txt index af8ca7bc562..9bb7cd9f6c3 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -196,6 +196,9 @@ aionotion==1.1.0 # homeassistant.components.hunterdouglas_powerview aiopvapi==1.6.14 +# homeassistant.components.pvpc_hourly_pricing +aiopvpc==1.0.2 + # homeassistant.components.webostv aiopylgtv==0.3.3 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index bcf9a2fea82..db69dbe2ec2 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -80,6 +80,9 @@ aiohue==2.0.0 # homeassistant.components.notion aionotion==1.1.0 +# homeassistant.components.pvpc_hourly_pricing +aiopvpc==1.0.2 + # homeassistant.components.webostv aiopylgtv==0.3.3 diff --git a/tests/components/pvpc_hourly_pricing/__init__.py b/tests/components/pvpc_hourly_pricing/__init__.py new file mode 100644 index 00000000000..f36b721bc11 --- /dev/null +++ b/tests/components/pvpc_hourly_pricing/__init__.py @@ -0,0 +1 @@ +"""Tests for the pvpc_hourly_pricing integration.""" diff --git a/tests/components/pvpc_hourly_pricing/conftest.py b/tests/components/pvpc_hourly_pricing/conftest.py new file mode 100644 index 00000000000..a2cfefb1200 --- /dev/null +++ b/tests/components/pvpc_hourly_pricing/conftest.py @@ -0,0 +1,56 @@ +"""Tests for the pvpc_hourly_pricing integration.""" +import pytest + +from homeassistant.components.pvpc_hourly_pricing import ATTR_TARIFF, DOMAIN +from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT + +from tests.common import load_fixture +from tests.test_util.aiohttp import AiohttpClientMocker + +FIXTURE_JSON_DATA_2019_10_26 = "PVPC_CURV_DD_2019_10_26.json" +FIXTURE_JSON_DATA_2019_10_27 = "PVPC_CURV_DD_2019_10_27.json" +FIXTURE_JSON_DATA_2019_10_29 = "PVPC_CURV_DD_2019_10_29.json" + + +def check_valid_state(state, tariff: str, value=None, key_attr=None): + """Ensure that sensor has a valid state and attributes.""" + assert state + assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == "€/kWh" + try: + _ = float(state.state) + # safety margins for current electricity price (it shouldn't be out of [0, 0.2]) + assert -0.1 < float(state.state) < 0.3 + assert state.attributes[ATTR_TARIFF] == tariff + except ValueError: + pass + + if value is not None and isinstance(value, str): + assert state.state == value + elif value is not None: + assert abs(float(state.state) - value) < 1e-6 + if key_attr is not None: + assert abs(float(state.state) - state.attributes[key_attr]) < 1e-6 + + +@pytest.fixture +def pvpc_aioclient_mock(aioclient_mock: AiohttpClientMocker): + """Create a mock config entry.""" + aioclient_mock.get( + "https://api.esios.ree.es/archives/70/download_json?locale=es&date=2019-10-26", + text=load_fixture(f"{DOMAIN}/{FIXTURE_JSON_DATA_2019_10_26}"), + ) + aioclient_mock.get( + "https://api.esios.ree.es/archives/70/download_json?locale=es&date=2019-10-27", + text=load_fixture(f"{DOMAIN}/{FIXTURE_JSON_DATA_2019_10_27}"), + ) + # missing day + aioclient_mock.get( + "https://api.esios.ree.es/archives/70/download_json?locale=es&date=2019-10-28", + text='{"message":"No values for specified archive"}', + ) + aioclient_mock.get( + "https://api.esios.ree.es/archives/70/download_json?locale=es&date=2019-10-29", + text=load_fixture(f"{DOMAIN}/{FIXTURE_JSON_DATA_2019_10_29}"), + ) + + return aioclient_mock diff --git a/tests/components/pvpc_hourly_pricing/test_config_flow.py b/tests/components/pvpc_hourly_pricing/test_config_flow.py new file mode 100644 index 00000000000..fbbe87fee5f --- /dev/null +++ b/tests/components/pvpc_hourly_pricing/test_config_flow.py @@ -0,0 +1,79 @@ +"""Tests for the pvpc_hourly_pricing config_flow.""" +from datetime import datetime +from unittest.mock import patch + +from pytz import timezone + +from homeassistant import data_entry_flow +from homeassistant.components.pvpc_hourly_pricing import ATTR_TARIFF, DOMAIN +from homeassistant.const import CONF_NAME +from homeassistant.helpers import entity_registry + +from .conftest import check_valid_state + +from tests.common import date_util +from tests.test_util.aiohttp import AiohttpClientMocker + + +async def test_config_flow(hass, pvpc_aioclient_mock: AiohttpClientMocker): + """ + Test config flow for pvpc_hourly_pricing. + + - Create a new entry with tariff "normal" + - Check state and attributes + - Check abort when trying to config another with same tariff + - Check removal and add again to check state restoration + """ + hass.config.time_zone = timezone("Europe/Madrid") + mock_data = {"return_time": datetime(2019, 10, 26, 14, 0, tzinfo=date_util.UTC)} + + def mock_now(): + return mock_data["return_time"] + + with patch("homeassistant.util.dt.utcnow", new=mock_now): + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": "user"} + ) + assert result["type"] == data_entry_flow.RESULT_TYPE_FORM + + result = await hass.config_entries.flow.async_configure( + result["flow_id"], {CONF_NAME: "test", ATTR_TARIFF: "normal"} + ) + assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY + + await hass.async_block_till_done() + state = hass.states.get("sensor.test") + check_valid_state(state, tariff="normal") + assert pvpc_aioclient_mock.call_count == 1 + + # Check abort when configuring another with same tariff + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": "user"} + ) + assert result["type"] == data_entry_flow.RESULT_TYPE_FORM + result = await hass.config_entries.flow.async_configure( + result["flow_id"], {CONF_NAME: "test", ATTR_TARIFF: "normal"} + ) + assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT + assert pvpc_aioclient_mock.call_count == 1 + + # Check removal + registry = await entity_registry.async_get_registry(hass) + registry_entity = registry.async_get("sensor.test") + assert await hass.config_entries.async_remove(registry_entity.config_entry_id) + + # and add it again with UI + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": "user"} + ) + assert result["type"] == data_entry_flow.RESULT_TYPE_FORM + + result = await hass.config_entries.flow.async_configure( + result["flow_id"], {CONF_NAME: "test", ATTR_TARIFF: "normal"} + ) + assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY + + await hass.async_block_till_done() + state = hass.states.get("sensor.test") + check_valid_state(state, tariff="normal") + assert pvpc_aioclient_mock.call_count == 2 diff --git a/tests/components/pvpc_hourly_pricing/test_sensor_logic.py b/tests/components/pvpc_hourly_pricing/test_sensor_logic.py new file mode 100644 index 00000000000..c6ae6fa57c2 --- /dev/null +++ b/tests/components/pvpc_hourly_pricing/test_sensor_logic.py @@ -0,0 +1,85 @@ +"""Tests for the pvpc_hourly_pricing component.""" +from datetime import datetime, timedelta +import logging +from unittest.mock import patch + +from pytz import timezone + +from homeassistant.components.pvpc_hourly_pricing import ATTR_TARIFF, DOMAIN +from homeassistant.const import CONF_NAME +from homeassistant.core import ATTR_NOW, EVENT_TIME_CHANGED + +from .conftest import check_valid_state + +from tests.common import async_setup_component, date_util +from tests.test_util.aiohttp import AiohttpClientMocker + + +async def _process_time_step( + hass, mock_data, key_state=None, value=None, tariff="discrimination", delta_min=60 +): + state = hass.states.get("sensor.test_dst") + check_valid_state(state, tariff=tariff, value=value, key_attr=key_state) + + mock_data["return_time"] += timedelta(minutes=delta_min) + hass.bus.async_fire(EVENT_TIME_CHANGED, {ATTR_NOW: mock_data["return_time"]}) + await hass.async_block_till_done() + return state + + +async def test_availability(hass, caplog, pvpc_aioclient_mock: AiohttpClientMocker): + """Test sensor availability and handling of cloud access.""" + hass.config.time_zone = timezone("Europe/Madrid") + config = {DOMAIN: [{CONF_NAME: "test_dst", ATTR_TARIFF: "discrimination"}]} + mock_data = {"return_time": datetime(2019, 10, 27, 20, 0, 0, tzinfo=date_util.UTC)} + + def mock_now(): + return mock_data["return_time"] + + with patch("homeassistant.util.dt.utcnow", new=mock_now): + assert await async_setup_component(hass, DOMAIN, config) + await hass.async_block_till_done() + caplog.clear() + assert pvpc_aioclient_mock.call_count == 2 + + await _process_time_step(hass, mock_data, "price_21h", 0.13896) + await _process_time_step(hass, mock_data, "price_22h", 0.06893) + assert pvpc_aioclient_mock.call_count == 4 + await _process_time_step(hass, mock_data, "price_23h", 0.06935) + assert pvpc_aioclient_mock.call_count == 5 + + # sensor has no more prices, state is "unavailable" from now on + await _process_time_step(hass, mock_data, value="unavailable") + await _process_time_step(hass, mock_data, value="unavailable") + num_errors = sum( + 1 for x in caplog.get_records("call") if x.levelno == logging.ERROR + ) + num_warnings = sum( + 1 for x in caplog.get_records("call") if x.levelno == logging.WARNING + ) + assert num_warnings == 1 + assert num_errors == 0 + assert pvpc_aioclient_mock.call_count == 7 + + # check that it is silent until it becomes available again + caplog.clear() + with caplog.at_level(logging.WARNING): + # silent mode + for _ in range(21): + await _process_time_step(hass, mock_data, value="unavailable") + assert pvpc_aioclient_mock.call_count == 28 + assert len(caplog.messages) == 0 + + # warning about data access recovered + await _process_time_step(hass, mock_data, value="unavailable") + assert pvpc_aioclient_mock.call_count == 29 + assert len(caplog.messages) == 1 + assert caplog.records[0].levelno == logging.WARNING + + # working ok again + await _process_time_step(hass, mock_data, "price_00h", value=0.06821) + assert pvpc_aioclient_mock.call_count == 30 + await _process_time_step(hass, mock_data, "price_01h", value=0.06627) + assert pvpc_aioclient_mock.call_count == 31 + assert len(caplog.messages) == 1 + assert caplog.records[0].levelno == logging.WARNING diff --git a/tests/fixtures/pvpc_hourly_pricing/PVPC_CURV_DD_2019_10_26.json b/tests/fixtures/pvpc_hourly_pricing/PVPC_CURV_DD_2019_10_26.json new file mode 100644 index 00000000000..dd8c73352d9 --- /dev/null +++ b/tests/fixtures/pvpc_hourly_pricing/PVPC_CURV_DD_2019_10_26.json @@ -0,0 +1,820 @@ +{ + "PVPC": [ + { + "Dia": "26/10/2019", + "Hora": "00-01", + "GEN": "114,20", + "NOC": "65,17", + "VHC": "69,02", + "COFGEN": "0,000087148314000000", + "COFNOC": "0,000135978057000000", + "COFVHC": "0,000151138804000000", + "PMHGEN": "59,56", + "PMHNOC": "57,22", + "PMHVHC": "59,81", + "SAHGEN": "1,96", + "SAHNOC": "1,89", + "SAHVHC": "1,97", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,14", + "INTGEN": "0,93", + "INTNOC": "0,90", + "INTVHC": "0,94", + "PCAPGEN": "5,54", + "PCAPNOC": "0,93", + "PCAPVHC": "1,31", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "2,01", + "CCVNOC": "1,86", + "CCVVHC": "1,95" + }, + { + "Dia": "26/10/2019", + "Hora": "01-02", + "GEN": "111,01", + "NOC": "62,10", + "VHC": "59,03", + "COFGEN": "0,000072922194000000", + "COFNOC": "0,000124822445000000", + "COFVHC": "0,000160597191000000", + "PMHGEN": "56,23", + "PMHNOC": "54,03", + "PMHVHC": "52,62", + "SAHGEN": "2,14", + "SAHNOC": "2,05", + "SAHVHC": "2,00", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,94", + "INTNOC": "0,90", + "INTVHC": "0,88", + "PCAPGEN": "5,56", + "PCAPNOC": "0,93", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,96", + "CCVNOC": "1,82", + "CCVVHC": "1,77" + }, + { + "Dia": "26/10/2019", + "Hora": "02-03", + "GEN": "105,17", + "NOC": "56,48", + "VHC": "53,56", + "COFGEN": "0,000064100056000000", + "COFNOC": "0,000117356595000000", + "COFVHC": "0,000158787037000000", + "PMHGEN": "50,26", + "PMHNOC": "48,29", + "PMHVHC": "47,03", + "SAHGEN": "2,35", + "SAHNOC": "2,26", + "SAHVHC": "2,20", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,94", + "INTNOC": "0,90", + "INTVHC": "0,88", + "PCAPGEN": "5,55", + "PCAPNOC": "0,93", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,87", + "CCVNOC": "1,73", + "CCVVHC": "1,68" + }, + { + "Dia": "26/10/2019", + "Hora": "03-04", + "GEN": "102,45", + "NOC": "53,87", + "VHC": "51,02", + "COFGEN": "0,000059549798000000", + "COFNOC": "0,000113408113000000", + "COFVHC": "0,000152391581000000", + "PMHGEN": "47,42", + "PMHNOC": "45,57", + "PMHVHC": "44,38", + "SAHGEN": "2,51", + "SAHNOC": "2,41", + "SAHVHC": "2,35", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,94", + "INTNOC": "0,90", + "INTVHC": "0,88", + "PCAPGEN": "5,56", + "PCAPNOC": "0,93", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,83", + "CCVNOC": "1,69", + "CCVVHC": "1,65" + }, + { + "Dia": "26/10/2019", + "Hora": "04-05", + "GEN": "102,15", + "NOC": "53,58", + "VHC": "50,73", + "COFGEN": "0,000057296575000000", + "COFNOC": "0,000111308472000000", + "COFVHC": "0,000145270809000000", + "PMHGEN": "47,05", + "PMHNOC": "45,21", + "PMHVHC": "44,03", + "SAHGEN": "2,58", + "SAHNOC": "2,48", + "SAHVHC": "2,41", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,94", + "INTNOC": "0,90", + "INTVHC": "0,88", + "PCAPGEN": "5,56", + "PCAPNOC": "0,93", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,83", + "CCVNOC": "1,69", + "CCVVHC": "1,64" + }, + { + "Dia": "26/10/2019", + "Hora": "05-06", + "GEN": "101,62", + "NOC": "53,13", + "VHC": "50,34", + "COFGEN": "0,000057285870000000", + "COFNOC": "0,000111061995000000", + "COFVHC": "0,000141535570000000", + "PMHGEN": "46,55", + "PMHNOC": "44,76", + "PMHVHC": "43,63", + "SAHGEN": "2,60", + "SAHNOC": "2,50", + "SAHVHC": "2,43", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,93", + "INTNOC": "0,90", + "INTVHC": "0,87", + "PCAPGEN": "5,54", + "PCAPNOC": "0,93", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,82", + "CCVNOC": "1,68", + "CCVVHC": "1,64" + }, + { + "Dia": "26/10/2019", + "Hora": "06-07", + "GEN": "102,36", + "NOC": "53,90", + "VHC": "51,08", + "COFGEN": "0,000060011439000000", + "COFNOC": "0,000113191071000000", + "COFVHC": "0,000139395926000000", + "PMHGEN": "46,58", + "PMHNOC": "44,82", + "PMHVHC": "43,69", + "SAHGEN": "3,32", + "SAHNOC": "3,20", + "SAHVHC": "3,12", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,93", + "INTNOC": "0,89", + "INTVHC": "0,87", + "PCAPGEN": "5,51", + "PCAPNOC": "0,92", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,82", + "CCVNOC": "1,69", + "CCVVHC": "1,64" + }, + { + "Dia": "26/10/2019", + "Hora": "07-08", + "GEN": "106,73", + "NOC": "58,10", + "VHC": "61,55", + "COFGEN": "0,000067624746000000", + "COFNOC": "0,000113073036000000", + "COFVHC": "0,000130165590000000", + "PMHGEN": "50,24", + "PMHNOC": "48,34", + "PMHVHC": "50,45", + "SAHGEN": "3,98", + "SAHNOC": "3,83", + "SAHVHC": "4,00", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,93", + "INTNOC": "0,89", + "INTVHC": "0,93", + "PCAPGEN": "5,50", + "PCAPNOC": "0,92", + "PCAPVHC": "1,30", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,89", + "CCVNOC": "1,75", + "CCVVHC": "1,83" + }, + { + "Dia": "26/10/2019", + "Hora": "08-09", + "GEN": "107,75", + "NOC": "59,43", + "VHC": "62,66", + "COFGEN": "0,000083194704000000", + "COFNOC": "0,000083589950000000", + "COFVHC": "0,000069841029000000", + "PMHGEN": "51,74", + "PMHNOC": "50,02", + "PMHVHC": "51,97", + "SAHGEN": "3,62", + "SAHNOC": "3,50", + "SAHVHC": "3,63", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,88", + "INTVHC": "0,91", + "PCAPGEN": "5,40", + "PCAPNOC": "0,91", + "PCAPVHC": "1,27", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,89", + "CCVNOC": "1,76", + "CCVVHC": "1,83" + }, + { + "Dia": "26/10/2019", + "Hora": "09-10", + "GEN": "110,38", + "NOC": "62,09", + "VHC": "65,34", + "COFGEN": "0,000105869478000000", + "COFNOC": "0,000077963480000000", + "COFVHC": "0,000057355982000000", + "PMHGEN": "55,41", + "PMHNOC": "53,64", + "PMHVHC": "55,65", + "SAHGEN": "2,60", + "SAHNOC": "2,52", + "SAHVHC": "2,61", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,87", + "INTVHC": "0,91", + "PCAPGEN": "5,36", + "PCAPNOC": "0,90", + "PCAPVHC": "1,26", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,92", + "CCVNOC": "1,79", + "CCVVHC": "1,86" + }, + { + "Dia": "26/10/2019", + "Hora": "10-11", + "GEN": "108,10", + "NOC": "60,00", + "VHC": "63,02", + "COFGEN": "0,000121833263000000", + "COFNOC": "0,000085468800000000", + "COFVHC": "0,000063770407000000", + "PMHGEN": "53,39", + "PMHNOC": "51,77", + "PMHVHC": "53,58", + "SAHGEN": "2,42", + "SAHNOC": "2,34", + "SAHVHC": "2,42", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,87", + "INTVHC": "0,90", + "PCAPGEN": "5,32", + "PCAPNOC": "0,90", + "PCAPVHC": "1,25", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,88", + "CCVNOC": "1,76", + "CCVVHC": "1,82" + }, + { + "Dia": "26/10/2019", + "Hora": "11-12", + "GEN": "104,11", + "NOC": "56,20", + "VHC": "59,04", + "COFGEN": "0,000125947995000000", + "COFNOC": "0,000085228595000000", + "COFVHC": "0,000064070840000000", + "PMHGEN": "50,02", + "PMHNOC": "48,54", + "PMHVHC": "50,20", + "SAHGEN": "1,89", + "SAHNOC": "1,83", + "SAHVHC": "1,90", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,89", + "INTNOC": "0,87", + "INTVHC": "0,90", + "PCAPGEN": "5,31", + "PCAPNOC": "0,90", + "PCAPVHC": "1,25", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,81", + "CCVNOC": "1,70", + "CCVVHC": "1,76" + }, + { + "Dia": "26/10/2019", + "Hora": "12-13", + "GEN": "103,61", + "NOC": "55,65", + "VHC": "58,52", + "COFGEN": "0,000128302145000000", + "COFNOC": "0,000082279443000000", + "COFVHC": "0,000063904657000000", + "PMHGEN": "49,50", + "PMHNOC": "47,99", + "PMHVHC": "49,67", + "SAHGEN": "1,90", + "SAHNOC": "1,84", + "SAHVHC": "1,90", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,87", + "INTVHC": "0,90", + "PCAPGEN": "5,32", + "PCAPNOC": "0,90", + "PCAPVHC": "1,25", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,81", + "CCVNOC": "1,69", + "CCVVHC": "1,75" + }, + { + "Dia": "26/10/2019", + "Hora": "13-14", + "GEN": "104,03", + "NOC": "122,60", + "VHC": "122,60", + "COFGEN": "0,000134270665000000", + "COFNOC": "0,000080726428000000", + "COFVHC": "0,000063976543000000", + "PMHGEN": "49,98", + "PMHNOC": "50,33", + "PMHVHC": "50,33", + "SAHGEN": "1,85", + "SAHNOC": "1,87", + "SAHVHC": "1,87", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,89", + "INTNOC": "0,90", + "INTVHC": "0,90", + "PCAPGEN": "5,30", + "PCAPNOC": "5,50", + "PCAPVHC": "5,50", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,81", + "CCVNOC": "1,83", + "CCVVHC": "1,83" + }, + { + "Dia": "26/10/2019", + "Hora": "14-15", + "GEN": "103,44", + "NOC": "122,00", + "VHC": "122,00", + "COFGEN": "0,000130580837000000", + "COFNOC": "0,000079392022000000", + "COFVHC": "0,000064422150000000", + "PMHGEN": "49,25", + "PMHNOC": "49,60", + "PMHVHC": "49,60", + "SAHGEN": "1,97", + "SAHNOC": "1,98", + "SAHVHC": "1,98", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,90", + "INTVHC": "0,90", + "PCAPGEN": "5,32", + "PCAPNOC": "5,52", + "PCAPVHC": "5,52", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,81", + "CCVNOC": "1,82", + "CCVVHC": "1,82" + }, + { + "Dia": "26/10/2019", + "Hora": "15-16", + "GEN": "100,57", + "NOC": "119,16", + "VHC": "119,16", + "COFGEN": "0,000114850139000000", + "COFNOC": "0,000070924506000000", + "COFVHC": "0,000056150579000000", + "PMHGEN": "46,19", + "PMHNOC": "46,55", + "PMHVHC": "46,55", + "SAHGEN": "2,15", + "SAHNOC": "2,17", + "SAHVHC": "2,17", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,91", + "INTVHC": "0,91", + "PCAPGEN": "5,36", + "PCAPNOC": "5,57", + "PCAPVHC": "5,57", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,77", + "CCVNOC": "1,79", + "CCVVHC": "1,79" + }, + { + "Dia": "26/10/2019", + "Hora": "16-17", + "GEN": "99,90", + "NOC": "118,48", + "VHC": "118,48", + "COFGEN": "0,000105915899000000", + "COFNOC": "0,000065274280000000", + "COFVHC": "0,000051268616000000", + "PMHGEN": "45,44", + "PMHNOC": "45,80", + "PMHVHC": "45,80", + "SAHGEN": "2,25", + "SAHNOC": "2,27", + "SAHVHC": "2,27", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,91", + "INTVHC": "0,91", + "PCAPGEN": "5,35", + "PCAPNOC": "5,56", + "PCAPVHC": "5,56", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,76", + "CCVNOC": "1,78", + "CCVVHC": "1,78" + }, + { + "Dia": "26/10/2019", + "Hora": "17-18", + "GEN": "102,97", + "NOC": "121,53", + "VHC": "121,53", + "COFGEN": "0,000104178581000000", + "COFNOC": "0,000063611672000000", + "COFVHC": "0,000049947652000000", + "PMHGEN": "48,62", + "PMHNOC": "48,96", + "PMHVHC": "48,96", + "SAHGEN": "2,14", + "SAHNOC": "2,16", + "SAHVHC": "2,16", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,90", + "INTVHC": "0,90", + "PCAPGEN": "5,33", + "PCAPNOC": "5,53", + "PCAPVHC": "5,53", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,80", + "CCVNOC": "1,82", + "CCVVHC": "1,82" + }, + { + "Dia": "26/10/2019", + "Hora": "18-19", + "GEN": "107,71", + "NOC": "126,30", + "VHC": "126,30", + "COFGEN": "0,000106669089000000", + "COFNOC": "0,000070000350000000", + "COFVHC": "0,000061100876000000", + "PMHGEN": "53,37", + "PMHNOC": "53,74", + "PMHVHC": "53,74", + "SAHGEN": "2,05", + "SAHNOC": "2,06", + "SAHVHC": "2,06", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,90", + "INTVHC": "0,90", + "PCAPGEN": "5,33", + "PCAPNOC": "5,53", + "PCAPVHC": "5,53", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,87", + "CCVNOC": "1,89", + "CCVVHC": "1,89" + }, + { + "Dia": "26/10/2019", + "Hora": "19-20", + "GEN": "118,75", + "NOC": "137,49", + "VHC": "137,49", + "COFGEN": "0,000115010612000000", + "COFNOC": "0,000095780287000000", + "COFVHC": "0,000092687680000000", + "PMHGEN": "64,21", + "PMHNOC": "64,71", + "PMHVHC": "64,71", + "SAHGEN": "2,07", + "SAHNOC": "2,08", + "SAHVHC": "2,08", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,91", + "INTVHC": "0,91", + "PCAPGEN": "5,35", + "PCAPNOC": "5,55", + "PCAPVHC": "5,55", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,04", + "CCVNOC": "2,06", + "CCVVHC": "2,06" + }, + { + "Dia": "26/10/2019", + "Hora": "20-21", + "GEN": "124,00", + "NOC": "142,78", + "VHC": "142,78", + "COFGEN": "0,000129085428000000", + "COFNOC": "0,000144302922000000", + "COFVHC": "0,000185612441000000", + "PMHGEN": "69,13", + "PMHNOC": "69,67", + "PMHVHC": "69,67", + "SAHGEN": "2,30", + "SAHNOC": "2,32", + "SAHVHC": "2,32", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,91", + "INTVHC": "0,91", + "PCAPGEN": "5,36", + "PCAPNOC": "5,56", + "PCAPVHC": "5,56", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,12", + "CCVNOC": "2,14", + "CCVVHC": "2,14" + }, + { + "Dia": "26/10/2019", + "Hora": "21-22", + "GEN": "124,16", + "NOC": "143,00", + "VHC": "143,00", + "COFGEN": "0,000133109692000000", + "COFNOC": "0,000151101318000000", + "COFVHC": "0,000197574745000000", + "PMHGEN": "68,50", + "PMHNOC": "69,09", + "PMHVHC": "69,09", + "SAHGEN": "3,05", + "SAHNOC": "3,07", + "SAHVHC": "3,07", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,91", + "INTVHC": "0,91", + "PCAPGEN": "5,38", + "PCAPNOC": "5,60", + "PCAPVHC": "5,60", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,13", + "CCVNOC": "2,15", + "CCVVHC": "2,15" + }, + { + "Dia": "26/10/2019", + "Hora": "22-23", + "GEN": "120,30", + "NOC": "139,04", + "VHC": "139,04", + "COFGEN": "0,000120157209000000", + "COFNOC": "0,000148137882000000", + "COFVHC": "0,000194906294000000", + "PMHGEN": "64,33", + "PMHNOC": "64,82", + "PMHVHC": "64,82", + "SAHGEN": "3,38", + "SAHNOC": "3,41", + "SAHVHC": "3,41", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,92", + "INTVHC": "0,92", + "PCAPGEN": "5,42", + "PCAPNOC": "5,63", + "PCAPVHC": "5,63", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,08", + "CCVNOC": "2,10", + "CCVVHC": "2,10" + }, + { + "Dia": "26/10/2019", + "Hora": "23-24", + "GEN": "118,05", + "NOC": "69,05", + "VHC": "72,93", + "COFGEN": "0,000103870556000000", + "COFNOC": "0,000146233245000000", + "COFVHC": "0,000182184931000000", + "PMHGEN": "61,54", + "PMHNOC": "59,25", + "PMHVHC": "61,80", + "SAHGEN": "3,85", + "SAHNOC": "3,71", + "SAHVHC": "3,87", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,92", + "INTNOC": "0,89", + "INTVHC": "0,93", + "PCAPGEN": "5,49", + "PCAPNOC": "0,92", + "PCAPVHC": "1,29", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "2,05", + "CCVNOC": "1,91", + "CCVVHC": "2,00" + } + ] +} \ No newline at end of file diff --git a/tests/fixtures/pvpc_hourly_pricing/PVPC_CURV_DD_2019_10_27.json b/tests/fixtures/pvpc_hourly_pricing/PVPC_CURV_DD_2019_10_27.json new file mode 100644 index 00000000000..66afc5a91d3 --- /dev/null +++ b/tests/fixtures/pvpc_hourly_pricing/PVPC_CURV_DD_2019_10_27.json @@ -0,0 +1,854 @@ +{ + "PVPC": [ + { + "Dia": "27/10/2019", + "Hora": "00-01", + "GEN": "115,15", + "NOC": "65,95", + "VHC": "69,94", + "COFGEN": "0,000083408754000000", + "COFNOC": "0,000125204015000000", + "COFVHC": "0,000143740251000000", + "PMHGEN": "59,13", + "PMHNOC": "56,72", + "PMHVHC": "59,37", + "SAHGEN": "3,28", + "SAHNOC": "3,14", + "SAHVHC": "3,29", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,14", + "INTGEN": "0,94", + "INTNOC": "0,90", + "INTVHC": "0,94", + "PCAPGEN": "5,58", + "PCAPNOC": "0,93", + "PCAPVHC": "1,32", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "2,03", + "CCVNOC": "1,88", + "CCVVHC": "1,97" + }, + { + "Dia": "27/10/2019", + "Hora": "01-02", + "GEN": "109,63", + "NOC": "60,60", + "VHC": "57,48", + "COFGEN": "0,000069962863000000", + "COFNOC": "0,000114629494000000", + "COFVHC": "0,000147622130000000", + "PMHGEN": "53,21", + "PMHNOC": "51,01", + "PMHVHC": "49,61", + "SAHGEN": "3,72", + "SAHNOC": "3,57", + "SAHVHC": "3,47", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,95", + "INTNOC": "0,91", + "INTVHC": "0,88", + "PCAPGEN": "5,61", + "PCAPNOC": "0,94", + "PCAPVHC": "0,73", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,95", + "CCVNOC": "1,80", + "CCVVHC": "1,75" + }, + { + "Dia": "27/10/2019", + "Hora": "02-03", + "GEN": "108,41", + "NOC": "59,38", + "VHC": "56,29", + "COFGEN": "0,000065978330000000", + "COFNOC": "0,000111216294000000", + "COFVHC": "0,000145651145000000", + "PMHGEN": "52,09", + "PMHNOC": "49,90", + "PMHVHC": "48,53", + "SAHGEN": "3,62", + "SAHNOC": "3,47", + "SAHVHC": "3,37", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,95", + "INTNOC": "0,91", + "INTVHC": "0,88", + "PCAPGEN": "5,63", + "PCAPNOC": "0,94", + "PCAPVHC": "0,73", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,93", + "CCVNOC": "1,79", + "CCVVHC": "1,73" + }, + { + "Dia": "27/10/2019", + "Hora": "03-04", + "GEN": "108,22", + "NOC": "59,31", + "VHC": "56,27", + "COFGEN": "0,000061999708000000", + "COFNOC": "0,000107809474000000", + "COFVHC": "0,000143671560000000", + "PMHGEN": "51,88", + "PMHNOC": "49,78", + "PMHVHC": "48,45", + "SAHGEN": "3,68", + "SAHNOC": "3,53", + "SAHVHC": "3,44", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,94", + "INTNOC": "0,90", + "INTVHC": "0,88", + "PCAPGEN": "5,59", + "PCAPNOC": "0,93", + "PCAPVHC": "0,73", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,93", + "CCVNOC": "1,78", + "CCVVHC": "1,73" + }, + { + "Dia": "27/10/2019", + "Hora": "04-05", + "GEN": "107,03", + "NOC": "58,16", + "VHC": "55,10", + "COFGEN": "0,000057358428000000", + "COFNOC": "0,000103595831000000", + "COFVHC": "0,000139122535000000", + "PMHGEN": "50,53", + "PMHNOC": "48,48", + "PMHVHC": "47,15", + "SAHGEN": "3,85", + "SAHNOC": "3,69", + "SAHVHC": "3,59", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,94", + "INTNOC": "0,91", + "INTVHC": "0,88", + "PCAPGEN": "5,60", + "PCAPNOC": "0,93", + "PCAPVHC": "0,73", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,91", + "CCVNOC": "1,76", + "CCVVHC": "1,71" + }, + { + "Dia": "27/10/2019", + "Hora": "05-06", + "GEN": "104,79", + "NOC": "56,01", + "VHC": "53,06", + "COFGEN": "0,000055060063000000", + "COFNOC": "0,000101732765000000", + "COFVHC": "0,000134441142000000", + "PMHGEN": "48,28", + "PMHNOC": "46,32", + "PMHVHC": "45,08", + "SAHGEN": "3,91", + "SAHNOC": "3,75", + "SAHVHC": "3,65", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,94", + "INTNOC": "0,90", + "INTVHC": "0,88", + "PCAPGEN": "5,59", + "PCAPNOC": "0,93", + "PCAPVHC": "0,73", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,87", + "CCVNOC": "1,73", + "CCVVHC": "1,68" + }, + { + "Dia": "27/10/2019", + "Hora": "06-07", + "GEN": "104,56", + "NOC": "55,85", + "VHC": "52,94", + "COFGEN": "0,000054511300000000", + "COFNOC": "0,000101250808000000", + "COFVHC": "0,000131206727000000", + "PMHGEN": "48,10", + "PMHNOC": "46,18", + "PMHVHC": "44,98", + "SAHGEN": "3,90", + "SAHNOC": "3,74", + "SAHVHC": "3,65", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,94", + "INTNOC": "0,90", + "INTVHC": "0,88", + "PCAPGEN": "5,57", + "PCAPNOC": "0,93", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,87", + "CCVNOC": "1,73", + "CCVVHC": "1,68" + }, + { + "Dia": "27/10/2019", + "Hora": "07-08", + "GEN": "107,72", + "NOC": "58,93", + "VHC": "55,95", + "COFGEN": "0,000056191283000000", + "COFNOC": "0,000102978398000000", + "COFVHC": "0,000130073563000000", + "PMHGEN": "50,23", + "PMHNOC": "48,26", + "PMHVHC": "47,01", + "SAHGEN": "4,89", + "SAHNOC": "4,70", + "SAHVHC": "4,57", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,94", + "INTNOC": "0,90", + "INTVHC": "0,88", + "PCAPGEN": "5,56", + "PCAPNOC": "0,93", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,91", + "CCVNOC": "1,77", + "CCVVHC": "1,72" + }, + { + "Dia": "27/10/2019", + "Hora": "08-09", + "GEN": "107,80", + "NOC": "59,29", + "VHC": "62,70", + "COFGEN": "0,000060083432000000", + "COFNOC": "0,000100348617000000", + "COFVHC": "0,000118460190000000", + "PMHGEN": "50,94", + "PMHNOC": "49,13", + "PMHVHC": "51,20", + "SAHGEN": "4,38", + "SAHNOC": "4,23", + "SAHVHC": "4,40", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,92", + "INTNOC": "0,89", + "INTVHC": "0,93", + "PCAPGEN": "5,47", + "PCAPNOC": "0,92", + "PCAPVHC": "1,29", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,90", + "CCVNOC": "1,76", + "CCVVHC": "1,84" + }, + { + "Dia": "27/10/2019", + "Hora": "09-10", + "GEN": "106,74", + "NOC": "58,40", + "VHC": "61,63", + "COFGEN": "0,000070236674000000", + "COFNOC": "0,000071273888000000", + "COFVHC": "0,000062511624000000", + "PMHGEN": "50,00", + "PMHNOC": "48,29", + "PMHVHC": "50,22", + "SAHGEN": "4,34", + "SAHNOC": "4,20", + "SAHVHC": "4,36", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,88", + "INTVHC": "0,92", + "PCAPGEN": "5,42", + "PCAPNOC": "0,91", + "PCAPVHC": "1,28", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,87", + "CCVNOC": "1,74", + "CCVVHC": "1,82" + }, + { + "Dia": "27/10/2019", + "Hora": "10-11", + "GEN": "106,13", + "NOC": "57,81", + "VHC": "61,02", + "COFGEN": "0,000089379429000000", + "COFNOC": "0,000066131351000000", + "COFVHC": "0,000053107930000000", + "PMHGEN": "50,32", + "PMHNOC": "48,60", + "PMHVHC": "50,54", + "SAHGEN": "3,43", + "SAHNOC": "3,31", + "SAHVHC": "3,44", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,88", + "INTVHC": "0,92", + "PCAPGEN": "5,42", + "PCAPNOC": "0,91", + "PCAPVHC": "1,28", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,86", + "CCVNOC": "1,73", + "CCVVHC": "1,81" + }, + { + "Dia": "27/10/2019", + "Hora": "11-12", + "GEN": "105,00", + "NOC": "56,78", + "VHC": "59,91", + "COFGEN": "0,000106229062000000", + "COFNOC": "0,000075658481000000", + "COFVHC": "0,000058816566000000", + "PMHGEN": "50,34", + "PMHNOC": "48,65", + "PMHVHC": "50,56", + "SAHGEN": "2,33", + "SAHNOC": "2,25", + "SAHVHC": "2,34", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,88", + "INTVHC": "0,91", + "PCAPGEN": "5,39", + "PCAPNOC": "0,91", + "PCAPVHC": "1,27", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,84", + "CCVNOC": "1,72", + "CCVVHC": "1,79" + }, + { + "Dia": "27/10/2019", + "Hora": "12-13", + "GEN": "105,07", + "NOC": "56,79", + "VHC": "59,92", + "COFGEN": "0,000113739886000000", + "COFNOC": "0,000079251893000000", + "COFVHC": "0,000061868784000000", + "PMHGEN": "50,41", + "PMHNOC": "48,69", + "PMHVHC": "50,59", + "SAHGEN": "2,31", + "SAHNOC": "2,23", + "SAHVHC": "2,32", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,88", + "INTVHC": "0,91", + "PCAPGEN": "5,40", + "PCAPNOC": "0,91", + "PCAPVHC": "1,27", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,85", + "CCVNOC": "1,72", + "CCVVHC": "1,79" + }, + { + "Dia": "27/10/2019", + "Hora": "13-14", + "GEN": "104,67", + "NOC": "123,29", + "VHC": "59,59", + "COFGEN": "0,000116885572000000", + "COFNOC": "0,000077561607000000", + "COFVHC": "0,000061189779000000", + "PMHGEN": "50,08", + "PMHNOC": "50,47", + "PMHVHC": "50,30", + "SAHGEN": "2,29", + "SAHNOC": "2,31", + "SAHVHC": "2,30", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,91", + "INTVHC": "0,91", + "PCAPGEN": "5,37", + "PCAPNOC": "5,57", + "PCAPVHC": "1,27", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "2,88", + "CCVGEN": "1,83", + "CCVNOC": "1,85", + "CCVVHC": "1,78" + }, + { + "Dia": "27/10/2019", + "Hora": "14-15", + "GEN": "107,41", + "NOC": "126,05", + "VHC": "126,05", + "COFGEN": "0,000122253070000000", + "COFNOC": "0,000076034460000000", + "COFVHC": "0,000059795888000000", + "PMHGEN": "52,87", + "PMHNOC": "53,28", + "PMHVHC": "53,28", + "SAHGEN": "2,20", + "SAHNOC": "2,22", + "SAHVHC": "2,22", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,91", + "INTVHC": "0,91", + "PCAPGEN": "5,37", + "PCAPNOC": "5,57", + "PCAPVHC": "5,57", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,87", + "CCVNOC": "1,89", + "CCVVHC": "1,89" + }, + { + "Dia": "27/10/2019", + "Hora": "15-16", + "GEN": "108,36", + "NOC": "127,06", + "VHC": "127,06", + "COFGEN": "0,000120316270000000", + "COFNOC": "0,000073732639000000", + "COFVHC": "0,000059483320000000", + "PMHGEN": "53,68", + "PMHNOC": "54,14", + "PMHVHC": "54,14", + "SAHGEN": "2,29", + "SAHNOC": "2,31", + "SAHVHC": "2,31", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,92", + "INTVHC": "0,92", + "PCAPGEN": "5,39", + "PCAPNOC": "5,60", + "PCAPVHC": "5,60", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,89", + "CCVNOC": "1,91", + "CCVVHC": "1,91" + }, + { + "Dia": "27/10/2019", + "Hora": "16-17", + "GEN": "106,15", + "NOC": "124,78", + "VHC": "124,78", + "COFGEN": "0,000106276301000000", + "COFNOC": "0,000065442255000000", + "COFVHC": "0,000053614900000000", + "PMHGEN": "51,38", + "PMHNOC": "51,78", + "PMHVHC": "51,78", + "SAHGEN": "2,40", + "SAHNOC": "2,42", + "SAHVHC": "2,42", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,92", + "INTVHC": "0,92", + "PCAPGEN": "5,40", + "PCAPNOC": "5,61", + "PCAPVHC": "5,61", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,86", + "CCVNOC": "1,88", + "CCVVHC": "1,88" + }, + { + "Dia": "27/10/2019", + "Hora": "17-18", + "GEN": "105,09", + "NOC": "123,72", + "VHC": "123,72", + "COFGEN": "0,000098092024000000", + "COFNOC": "0,000060340481000000", + "COFVHC": "0,000050280869000000", + "PMHGEN": "51,35", + "PMHNOC": "51,75", + "PMHVHC": "51,75", + "SAHGEN": "1,40", + "SAHNOC": "1,41", + "SAHVHC": "1,41", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,92", + "INTVHC": "0,92", + "PCAPGEN": "5,40", + "PCAPNOC": "5,61", + "PCAPVHC": "5,61", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,85", + "CCVNOC": "1,86", + "CCVVHC": "1,86" + }, + { + "Dia": "27/10/2019", + "Hora": "18-19", + "GEN": "108,12", + "NOC": "126,77", + "VHC": "126,77", + "COFGEN": "0,000095857172000000", + "COFNOC": "0,000058545227000000", + "COFVHC": "0,000049936767000000", + "PMHGEN": "54,41", + "PMHNOC": "54,83", + "PMHVHC": "54,83", + "SAHGEN": "1,35", + "SAHNOC": "1,36", + "SAHVHC": "1,36", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,91", + "INTVHC": "0,91", + "PCAPGEN": "5,38", + "PCAPNOC": "5,59", + "PCAPVHC": "5,59", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,89", + "CCVNOC": "1,91", + "CCVVHC": "1,91" + }, + { + "Dia": "27/10/2019", + "Hora": "19-20", + "GEN": "112,76", + "NOC": "131,51", + "VHC": "131,51", + "COFGEN": "0,000099686581000000", + "COFNOC": "0,000063674261000000", + "COFVHC": "0,000057884599000000", + "PMHGEN": "58,53", + "PMHNOC": "59,03", + "PMHVHC": "59,03", + "SAHGEN": "1,77", + "SAHNOC": "1,79", + "SAHVHC": "1,79", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,92", + "INTVHC": "0,92", + "PCAPGEN": "5,40", + "PCAPNOC": "5,62", + "PCAPVHC": "5,62", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,96", + "CCVNOC": "1,98", + "CCVVHC": "1,98" + }, + { + "Dia": "27/10/2019", + "Hora": "20-21", + "GEN": "118,69", + "NOC": "137,48", + "VHC": "137,48", + "COFGEN": "0,000111025948000000", + "COFNOC": "0,000087846097000000", + "COFVHC": "0,000084304207000000", + "PMHGEN": "64,79", + "PMHNOC": "65,35", + "PMHVHC": "65,35", + "SAHGEN": "1,34", + "SAHNOC": "1,35", + "SAHVHC": "1,35", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,92", + "INTVHC": "0,92", + "PCAPGEN": "5,40", + "PCAPNOC": "5,62", + "PCAPVHC": "5,62", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,05", + "CCVNOC": "2,07", + "CCVVHC": "2,07" + }, + { + "Dia": "27/10/2019", + "Hora": "21-22", + "GEN": "121,19", + "NOC": "139,94", + "VHC": "139,94", + "COFGEN": "0,000129356812000000", + "COFNOC": "0,000137580750000000", + "COFVHC": "0,000175068439000000", + "PMHGEN": "66,00", + "PMHNOC": "66,51", + "PMHVHC": "66,51", + "SAHGEN": "2,64", + "SAHNOC": "2,66", + "SAHVHC": "2,66", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,91", + "INTVHC": "0,91", + "PCAPGEN": "5,38", + "PCAPNOC": "5,58", + "PCAPVHC": "5,58", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,08", + "CCVNOC": "2,10", + "CCVVHC": "2,10" + }, + { + "Dia": "27/10/2019", + "Hora": "22-23", + "GEN": "120,21", + "NOC": "138,96", + "VHC": "138,96", + "COFGEN": "0,000132818174000000", + "COFNOC": "0,000143862321000000", + "COFVHC": "0,000185393247000000", + "PMHGEN": "65,72", + "PMHNOC": "66,23", + "PMHVHC": "66,23", + "SAHGEN": "1,94", + "SAHNOC": "1,96", + "SAHVHC": "1,96", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,91", + "INTVHC": "0,91", + "PCAPGEN": "5,38", + "PCAPNOC": "5,59", + "PCAPVHC": "5,59", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,07", + "CCVNOC": "2,09", + "CCVVHC": "2,09" + }, + { + "Dia": "27/10/2019", + "Hora": "23-24", + "GEN": "117,85", + "NOC": "68,93", + "VHC": "136,63", + "COFGEN": "0,000117725347000000", + "COFNOC": "0,000138623638000000", + "COFVHC": "0,000180725170000000", + "PMHGEN": "62,92", + "PMHNOC": "60,64", + "PMHVHC": "63,46", + "SAHGEN": "2,28", + "SAHNOC": "2,20", + "SAHVHC": "2,30", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,92", + "INTNOC": "0,89", + "INTVHC": "0,93", + "PCAPGEN": "5,48", + "PCAPNOC": "0,92", + "PCAPVHC": "5,69", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "62,01", + "CCVGEN": "2,05", + "CCVNOC": "1,91", + "CCVVHC": "2,07" + }, + { + "Dia": "27/10/2019", + "Hora": "24-25", + "GEN": "118,42", + "NOC": "69,35", + "VHC": "73,34", + "COFGEN": "0,000097485259000000", + "COFNOC": "0,000133828173000000", + "COFVHC": "0,000166082424000000", + "PMHGEN": "63,21", + "PMHNOC": "60,82", + "PMHVHC": "63,52", + "SAHGEN": "2,51", + "SAHNOC": "2,41", + "SAHVHC": "2,52", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,93", + "INTNOC": "0,90", + "INTVHC": "0,94", + "PCAPGEN": "5,52", + "PCAPNOC": "0,92", + "PCAPVHC": "1,30", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "2,07", + "CCVNOC": "1,92", + "CCVVHC": "2,01" + } + ] +} \ No newline at end of file diff --git a/tests/fixtures/pvpc_hourly_pricing/PVPC_CURV_DD_2019_10_29.json b/tests/fixtures/pvpc_hourly_pricing/PVPC_CURV_DD_2019_10_29.json new file mode 100644 index 00000000000..631e77f5e76 --- /dev/null +++ b/tests/fixtures/pvpc_hourly_pricing/PVPC_CURV_DD_2019_10_29.json @@ -0,0 +1,820 @@ +{ + "PVPC": [ + { + "Dia": "29/10/2019", + "Hora": "00-01", + "GEN": "117,17", + "NOC": "68,21", + "VHC": "72,10", + "COFGEN": "0,000077051997000000", + "COFNOC": "0,000124733002000000", + "COFVHC": "0,000143780107000000", + "PMHGEN": "62,55", + "PMHNOC": "60,23", + "PMHVHC": "62,86", + "SAHGEN": "1,96", + "SAHNOC": "1,89", + "SAHVHC": "1,97", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,93", + "INTNOC": "0,89", + "INTVHC": "0,93", + "PCAPGEN": "5,50", + "PCAPNOC": "0,92", + "PCAPVHC": "1,30", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "2,04", + "CCVNOC": "1,90", + "CCVVHC": "1,99" + }, + { + "Dia": "29/10/2019", + "Hora": "01-02", + "GEN": "115,34", + "NOC": "66,27", + "VHC": "63,14", + "COFGEN": "0,000063669626000000", + "COFNOC": "0,000113703738000000", + "COFVHC": "0,000153709241000000", + "PMHGEN": "60,54", + "PMHNOC": "58,17", + "PMHVHC": "56,70", + "SAHGEN": "2,11", + "SAHNOC": "2,02", + "SAHVHC": "1,97", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,93", + "INTNOC": "0,90", + "INTVHC": "0,87", + "PCAPGEN": "5,54", + "PCAPNOC": "0,93", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "2,02", + "CCVNOC": "1,88", + "CCVVHC": "1,83" + }, + { + "Dia": "29/10/2019", + "Hora": "02-03", + "GEN": "112,37", + "NOC": "63,40", + "VHC": "60,25", + "COFGEN": "0,000057299719000000", + "COFNOC": "0,000107847932000000", + "COFVHC": "0,000151346355000000", + "PMHGEN": "57,42", + "PMHNOC": "55,17", + "PMHVHC": "53,69", + "SAHGEN": "2,27", + "SAHNOC": "2,18", + "SAHVHC": "2,12", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,94", + "INTNOC": "0,90", + "INTVHC": "0,88", + "PCAPGEN": "5,57", + "PCAPNOC": "0,93", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,98", + "CCVNOC": "1,84", + "CCVVHC": "1,79" + }, + { + "Dia": "29/10/2019", + "Hora": "03-04", + "GEN": "111,32", + "NOC": "62,39", + "VHC": "59,27", + "COFGEN": "0,000054631496000000", + "COFNOC": "0,000105135123000000", + "COFVHC": "0,000145712713000000", + "PMHGEN": "55,92", + "PMHNOC": "53,73", + "PMHVHC": "52,29", + "SAHGEN": "2,74", + "SAHNOC": "2,63", + "SAHVHC": "2,56", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,94", + "INTNOC": "0,90", + "INTVHC": "0,88", + "PCAPGEN": "5,57", + "PCAPNOC": "0,93", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,97", + "CCVNOC": "1,82", + "CCVVHC": "1,77" + }, + { + "Dia": "29/10/2019", + "Hora": "04-05", + "GEN": "111,08", + "NOC": "62,17", + "VHC": "59,04", + "COFGEN": "0,000053587732000000", + "COFNOC": "0,000103791403000000", + "COFVHC": "0,000139739507000000", + "PMHGEN": "55,64", + "PMHNOC": "53,46", + "PMHVHC": "52,03", + "SAHGEN": "2,79", + "SAHNOC": "2,68", + "SAHVHC": "2,61", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,14", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,94", + "INTNOC": "0,90", + "INTVHC": "0,88", + "PCAPGEN": "5,56", + "PCAPNOC": "0,93", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,96", + "CCVNOC": "1,82", + "CCVVHC": "1,77" + }, + { + "Dia": "29/10/2019", + "Hora": "05-06", + "GEN": "113,57", + "NOC": "64,62", + "VHC": "61,53", + "COFGEN": "0,000054978965000000", + "COFNOC": "0,000104220226000000", + "COFVHC": "0,000135044065000000", + "PMHGEN": "58,23", + "PMHNOC": "55,99", + "PMHVHC": "54,57", + "SAHGEN": "2,69", + "SAHNOC": "2,58", + "SAHVHC": "2,52", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,93", + "INTNOC": "0,90", + "INTVHC": "0,87", + "PCAPGEN": "5,53", + "PCAPNOC": "0,92", + "PCAPVHC": "0,72", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "2,00", + "CCVNOC": "1,85", + "CCVVHC": "1,80" + }, + { + "Dia": "29/10/2019", + "Hora": "06-07", + "GEN": "113,48", + "NOC": "64,78", + "VHC": "61,84", + "COFGEN": "0,000063808739000000", + "COFNOC": "0,000109956697000000", + "COFVHC": "0,000134904594000000", + "PMHGEN": "58,13", + "PMHNOC": "56,06", + "PMHVHC": "54,78", + "SAHGEN": "2,80", + "SAHNOC": "2,70", + "SAHVHC": "2,64", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,12", + "INTGEN": "0,92", + "INTNOC": "0,89", + "INTVHC": "0,87", + "PCAPGEN": "5,45", + "PCAPNOC": "0,91", + "PCAPVHC": "0,71", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "0,89", + "CCVGEN": "1,98", + "CCVNOC": "1,84", + "CCVVHC": "1,80" + }, + { + "Dia": "29/10/2019", + "Hora": "07-08", + "GEN": "118,40", + "NOC": "69,72", + "VHC": "73,36", + "COFGEN": "0,000086957107000000", + "COFNOC": "0,000119021762000000", + "COFVHC": "0,000131848949000000", + "PMHGEN": "63,73", + "PMHNOC": "61,60", + "PMHVHC": "64,00", + "SAHGEN": "2,12", + "SAHNOC": "2,05", + "SAHVHC": "2,13", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,88", + "INTVHC": "0,91", + "PCAPGEN": "5,40", + "PCAPNOC": "0,91", + "PCAPVHC": "1,27", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "2,05", + "CCVNOC": "1,91", + "CCVVHC": "1,99" + }, + { + "Dia": "29/10/2019", + "Hora": "08-09", + "GEN": "117,71", + "NOC": "69,47", + "VHC": "72,71", + "COFGEN": "0,000103659543000000", + "COFNOC": "0,000093080441000000", + "COFVHC": "0,000078478538000000", + "PMHGEN": "63,59", + "PMHNOC": "61,75", + "PMHVHC": "63,81", + "SAHGEN": "1,76", + "SAHNOC": "1,71", + "SAHVHC": "1,77", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,12", + "FOSVHC": "0,13", + "INTGEN": "0,89", + "INTNOC": "0,86", + "INTVHC": "0,89", + "PCAPGEN": "5,27", + "PCAPNOC": "0,89", + "PCAPVHC": "1,24", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "2,01", + "CCVNOC": "1,89", + "CCVVHC": "1,96" + }, + { + "Dia": "29/10/2019", + "Hora": "09-10", + "GEN": "115,84", + "NOC": "67,79", + "VHC": "70,80", + "COFGEN": "0,000109607743000000", + "COFNOC": "0,000077907419000000", + "COFVHC": "0,000061476325000000", + "PMHGEN": "62,27", + "PMHNOC": "60,57", + "PMHVHC": "62,44", + "SAHGEN": "1,29", + "SAHNOC": "1,25", + "SAHVHC": "1,29", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,12", + "FOSVHC": "0,13", + "INTGEN": "0,88", + "INTNOC": "0,86", + "INTVHC": "0,88", + "PCAPGEN": "5,23", + "PCAPNOC": "0,88", + "PCAPVHC": "1,23", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,98", + "CCVNOC": "1,86", + "CCVVHC": "1,92" + }, + { + "Dia": "29/10/2019", + "Hora": "10-11", + "GEN": "114,70", + "NOC": "66,74", + "VHC": "69,67", + "COFGEN": "0,000115808394000000", + "COFNOC": "0,000078426619000000", + "COFVHC": "0,000062221967000000", + "PMHGEN": "61,05", + "PMHNOC": "59,42", + "PMHVHC": "61,21", + "SAHGEN": "1,41", + "SAHNOC": "1,37", + "SAHVHC": "1,41", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,12", + "FOSVHC": "0,13", + "INTGEN": "0,88", + "INTNOC": "0,86", + "INTVHC": "0,88", + "PCAPGEN": "5,22", + "PCAPNOC": "0,88", + "PCAPVHC": "1,23", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,96", + "CCVNOC": "1,84", + "CCVVHC": "1,90" + }, + { + "Dia": "29/10/2019", + "Hora": "11-12", + "GEN": "114,45", + "NOC": "66,51", + "VHC": "69,43", + "COFGEN": "0,000117753360000000", + "COFNOC": "0,000076432674000000", + "COFVHC": "0,000061112533000000", + "PMHGEN": "60,85", + "PMHNOC": "59,23", + "PMHVHC": "61,01", + "SAHGEN": "1,37", + "SAHNOC": "1,34", + "SAHVHC": "1,38", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,12", + "FOSVHC": "0,13", + "INTGEN": "0,88", + "INTNOC": "0,85", + "INTVHC": "0,88", + "PCAPGEN": "5,21", + "PCAPNOC": "0,88", + "PCAPVHC": "1,23", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,95", + "CCVNOC": "1,84", + "CCVVHC": "1,90" + }, + { + "Dia": "29/10/2019", + "Hora": "12-13", + "GEN": "114,46", + "NOC": "133,04", + "VHC": "69,45", + "COFGEN": "0,000121492044000000", + "COFNOC": "0,000074703573000000", + "COFVHC": "0,000061457855000000", + "PMHGEN": "60,95", + "PMHNOC": "61,33", + "PMHVHC": "61,11", + "SAHGEN": "1,30", + "SAHNOC": "1,31", + "SAHVHC": "1,31", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,88", + "INTNOC": "0,88", + "INTVHC": "0,88", + "PCAPGEN": "5,20", + "PCAPNOC": "5,39", + "PCAPVHC": "1,22", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "2,88", + "CCVGEN": "1,95", + "CCVNOC": "1,97", + "CCVVHC": "1,90" + }, + { + "Dia": "29/10/2019", + "Hora": "13-14", + "GEN": "113,37", + "NOC": "131,94", + "VHC": "131,94", + "COFGEN": "0,000126490319000000", + "COFNOC": "0,000074777760000000", + "COFVHC": "0,000060760068000000", + "PMHGEN": "59,86", + "PMHNOC": "60,24", + "PMHVHC": "60,24", + "SAHGEN": "1,32", + "SAHNOC": "1,33", + "SAHVHC": "1,33", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,87", + "INTNOC": "0,88", + "INTVHC": "0,88", + "PCAPGEN": "5,19", + "PCAPNOC": "5,38", + "PCAPVHC": "5,38", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,93", + "CCVNOC": "1,95", + "CCVVHC": "1,95" + }, + { + "Dia": "29/10/2019", + "Hora": "14-15", + "GEN": "112,88", + "NOC": "131,46", + "VHC": "131,46", + "COFGEN": "0,000120771211000000", + "COFNOC": "0,000072095790000000", + "COFVHC": "0,000058765117000000", + "PMHGEN": "59,31", + "PMHNOC": "59,68", + "PMHVHC": "59,68", + "SAHGEN": "1,37", + "SAHNOC": "1,38", + "SAHVHC": "1,38", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,88", + "INTNOC": "0,88", + "INTVHC": "0,88", + "PCAPGEN": "5,21", + "PCAPNOC": "5,40", + "PCAPVHC": "5,40", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,93", + "CCVNOC": "1,94", + "CCVVHC": "1,94" + }, + { + "Dia": "29/10/2019", + "Hora": "15-16", + "GEN": "115,75", + "NOC": "134,41", + "VHC": "134,41", + "COFGEN": "0,000110808247000000", + "COFNOC": "0,000066006577000000", + "COFVHC": "0,000053763013000000", + "PMHGEN": "62,14", + "PMHNOC": "62,58", + "PMHVHC": "62,58", + "SAHGEN": "1,34", + "SAHNOC": "1,35", + "SAHVHC": "1,35", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,88", + "INTNOC": "0,89", + "INTVHC": "0,89", + "PCAPGEN": "5,23", + "PCAPNOC": "5,42", + "PCAPVHC": "5,42", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "1,98", + "CCVNOC": "1,99", + "CCVVHC": "1,99" + }, + { + "Dia": "29/10/2019", + "Hora": "16-17", + "GEN": "118,08", + "NOC": "136,75", + "VHC": "136,75", + "COFGEN": "0,000107924950000000", + "COFNOC": "0,000063090606000000", + "COFVHC": "0,000052115396000000", + "PMHGEN": "64,48", + "PMHNOC": "64,93", + "PMHVHC": "64,93", + "SAHGEN": "1,31", + "SAHNOC": "1,32", + "SAHVHC": "1,32", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,88", + "INTNOC": "0,89", + "INTVHC": "0,89", + "PCAPGEN": "5,22", + "PCAPNOC": "5,42", + "PCAPVHC": "5,42", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,01", + "CCVNOC": "2,03", + "CCVVHC": "2,03" + }, + { + "Dia": "29/10/2019", + "Hora": "17-18", + "GEN": "121,32", + "NOC": "139,95", + "VHC": "139,95", + "COFGEN": "0,000111993776000000", + "COFNOC": "0,000063840323000000", + "COFVHC": "0,000053264660000000", + "PMHGEN": "67,88", + "PMHNOC": "68,30", + "PMHVHC": "68,30", + "SAHGEN": "1,10", + "SAHNOC": "1,11", + "SAHVHC": "1,11", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,88", + "INTNOC": "0,88", + "INTVHC": "0,88", + "PCAPGEN": "5,22", + "PCAPNOC": "5,41", + "PCAPVHC": "5,41", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,06", + "CCVNOC": "2,07", + "CCVVHC": "2,07" + }, + { + "Dia": "29/10/2019", + "Hora": "18-19", + "GEN": "126,19", + "NOC": "144,85", + "VHC": "144,85", + "COFGEN": "0,000117118878000000", + "COFNOC": "0,000072058416000000", + "COFVHC": "0,000066417528000000", + "PMHGEN": "69,04", + "PMHNOC": "69,47", + "PMHVHC": "69,47", + "SAHGEN": "4,73", + "SAHNOC": "4,76", + "SAHVHC": "4,76", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,88", + "INTNOC": "0,89", + "INTVHC": "0,89", + "PCAPGEN": "5,22", + "PCAPNOC": "5,42", + "PCAPVHC": "5,42", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,13", + "CCVNOC": "2,15", + "CCVVHC": "2,15" + }, + { + "Dia": "29/10/2019", + "Hora": "19-20", + "GEN": "125,34", + "NOC": "144,06", + "VHC": "144,06", + "COFGEN": "0,000128443388000000", + "COFNOC": "0,000098772457000000", + "COFVHC": "0,000100678475000000", + "PMHGEN": "68,61", + "PMHNOC": "69,09", + "PMHVHC": "69,09", + "SAHGEN": "4,31", + "SAHNOC": "4,34", + "SAHVHC": "4,34", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,88", + "INTNOC": "0,89", + "INTVHC": "0,89", + "PCAPGEN": "5,24", + "PCAPNOC": "5,43", + "PCAPVHC": "5,43", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,12", + "CCVNOC": "2,14", + "CCVVHC": "2,14" + }, + { + "Dia": "29/10/2019", + "Hora": "20-21", + "GEN": "120,62", + "NOC": "139,31", + "VHC": "139,31", + "COFGEN": "0,000144847952000000", + "COFNOC": "0,000148736569000000", + "COFVHC": "0,000192706770000000", + "PMHGEN": "67,11", + "PMHNOC": "67,58", + "PMHVHC": "67,58", + "SAHGEN": "1,12", + "SAHNOC": "1,12", + "SAHVHC": "1,12", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,89", + "INTNOC": "0,89", + "INTVHC": "0,89", + "PCAPGEN": "5,27", + "PCAPNOC": "5,47", + "PCAPVHC": "5,47", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,06", + "CCVNOC": "2,07", + "CCVVHC": "2,07" + }, + { + "Dia": "29/10/2019", + "Hora": "21-22", + "GEN": "120,67", + "NOC": "139,36", + "VHC": "139,36", + "COFGEN": "0,000143400205000000", + "COFNOC": "0,000153448551000000", + "COFVHC": "0,000201113372000000", + "PMHGEN": "66,43", + "PMHNOC": "66,90", + "PMHVHC": "66,90", + "SAHGEN": "1,80", + "SAHNOC": "1,81", + "SAHVHC": "1,81", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,89", + "INTNOC": "0,90", + "INTVHC": "0,90", + "PCAPGEN": "5,30", + "PCAPNOC": "5,50", + "PCAPVHC": "5,50", + "TEUGEN": "44,03", + "TEUNOC": "62,01", + "TEUVHC": "62,01", + "CCVGEN": "2,06", + "CCVNOC": "2,08", + "CCVVHC": "2,08" + }, + { + "Dia": "29/10/2019", + "Hora": "22-23", + "GEN": "117,80", + "NOC": "69,35", + "VHC": "136,53", + "COFGEN": "0,000122948482000000", + "COFNOC": "0,000146077289000000", + "COFVHC": "0,000194614149000000", + "PMHGEN": "63,25", + "PMHNOC": "61,28", + "PMHVHC": "63,75", + "SAHGEN": "2,10", + "SAHNOC": "2,03", + "SAHVHC": "2,11", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,90", + "INTNOC": "0,87", + "INTVHC": "0,91", + "PCAPGEN": "5,34", + "PCAPNOC": "0,90", + "PCAPVHC": "5,54", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "62,01", + "CCVGEN": "2,03", + "CCVNOC": "1,90", + "CCVVHC": "2,04" + }, + { + "Dia": "29/10/2019", + "Hora": "23-24", + "GEN": "111,95", + "NOC": "63,48", + "VHC": "66,87", + "COFGEN": "0,000098841799000000", + "COFNOC": "0,000139677463000000", + "COFVHC": "0,000176886301000000", + "PMHGEN": "56,97", + "PMHNOC": "55,07", + "PMHVHC": "57,22", + "SAHGEN": "2,52", + "SAHNOC": "2,44", + "SAHVHC": "2,53", + "FOMGEN": "0,03", + "FOMNOC": "0,03", + "FOMVHC": "0,03", + "FOSGEN": "0,13", + "FOSNOC": "0,13", + "FOSVHC": "0,13", + "INTGEN": "0,91", + "INTNOC": "0,88", + "INTVHC": "0,91", + "PCAPGEN": "5,40", + "PCAPNOC": "0,91", + "PCAPVHC": "1,27", + "TEUGEN": "44,03", + "TEUNOC": "2,22", + "TEUVHC": "2,88", + "CCVGEN": "1,95", + "CCVNOC": "1,82", + "CCVVHC": "1,89" + } + ] +} \ No newline at end of file