De dónde sale tu precio

Su suministrador cobra un precio distinto cada 15 minutos, y la mayoría de los monitores de energía valoran todo a una tarifa plana. Entonces, cada cifra de coste que muestran es una suposición: no está equivocada en poco, sino construida sobre un número que nunca fue su precio. Si su contrato sigue el mercado, el único coste que merece leer es uno que usó el precio del periodo en que se midió la energía.

De eso trata esta página: de dónde toma el hub ese precio, qué le hace y cómo ver qué precio usó. Lo que muestra la pantalla, y qué hacer cuando una cifra parece errónea, está en Dynamic prices.

⚠️ El hub valora la energía. No conmuta nada. Aquí no hay control de carga: ni relé, ni cargador, ni inversor, ni automatización de "la hora más barata" en el dispositivo. Si quiere que algo funcione cuando la energía es barata, el hub publica una notificación y Home Assistant actúa sobre ella — véase Cheap windows and the price notification.


Resumen

  • Los precios dinámicos están desactivados por defecto. Con ellos desactivados, su plan valora cada periodo, exactamente como antes.
  • Con ellos activados, cada periodo de 15 minutos toma su precio de su fuente principal; si esa fuente no tiene precio para el periodo, de su fuente de respaldo; si ninguna tiene, de su plan.

  • El hub registra cuál de las tres se usó, para cada periodo, y guarda ese registro durante 40 días.

  • Su plan nunca deja de importar: es el respaldo, aporta los impuestos y el IVA que se añaden a un precio de mercado, y su moneda es la moneda del dinero.

La cadena, en orden

Para cada periodo de 15 minutos el hub resuelve un único precio:

fuente qué significa
1 Principal el proveedor que eligió, para su zona
2 Respaldo opcional, y debe ser un proveedor distinto; se usa solo para los periodos que la principal no cubre
3 Su plan la tarifa de zona vigente en ese periodo — véase Tariffs

Aquí nada es una mezcla: un periodo, un precio, una fuente. La fuente se guarda con el periodo, así que una cifra que lea la semana que viene todavía puede rastrearse hasta el origen de su precio.

Por qué merece la pena configurar un respaldo

Un mercado day-ahead publica el día siguiente una vez al día. Si esa publicación llega tarde, o la descarga falla, o su zona falta en una respuesta, la principal simplemente no tiene precio para esos periodos. Sin respaldo entra el plan — lo cual es correcto, pero es un precio distinto, y sus costes en ese tramo no coincidirán con el mercado. Un respaldo de un segundo proveedor que cubra la misma zona mantiene el precio de mercado en su lugar.

No todas las zonas tienen una segunda fuente. Doce áreas están cubiertas dos veces o más por la lista de abajo: SE1-4 y NO1-5 (Nord Pool junto a la fuente nacional), DK1-2 y NL (Energy-Charts junto a una segunda), con SE4 y NO2 cubiertas tres veces. Para AT, BE, CH, CZ, DE-LU, EE, FI, FR, HU, IT-North, LT, LV, PL, SI y las regiones del Reino Unido no hay aquí un segundo proveedor — así que o un envío desde Home Assistant sirve de respaldo, o esos periodos pasan a la tarifa de zona del plan.


Las fuentes

Fuente Tipo Resolución Áreas Moneda
Energy-Charts (Fraunhofer ISE) spot 15 minutes AT, BE, CH, CZ, DE-LU, DK1, DK2, FR, HU, IT-North, NL, NO2, PL, SE4, SI EUR
Nord Pool (unofficial data portal) spot 15 minutes SE1–4, NO1–5, DK1–2, FI, EE, LV, LT the area's: SEK, NOK, DKK or EUR
Elpriset just nu (SE) spot 15 minutes SE1–4 SEK
Hva koster strømmen (NO) spot 1 hour NO1–5 NOK
EnergyZero (NL) all-in 15 minutes NL EUR
Octopus Agile (UK) all-in 30 minutes the 14 GSP regions, A–P GBP
Home Assistant usted elige: spot o all-in lo que se envíe — el de su plan

Ninguna fuente necesita token ni cuenta en esta versión.

La resolución no es el paso de facturación. Un precio de 30 minutos o por hora se aplica a cada periodo de 15 minutos dentro de él, así que sus costes siguen calculándose por periodo de 15 minutos — cuatro de ellos simplemente comparten un precio. El paso en que se le factura es un ajuste aparte; véase Bill at the hourly mean.

Spot o all-in es lo más importante que hay que acertar, y se explica abajo, porque equivocarse aquí es la forma más común de que una cifra de coste salga demasiado alta.

⚠️ La moneda no se convierte. El hub no pasará SEK a EUR. Una zona cuya moneda difiere de la de su plan se rechaza al guardarla (el campo vuelve con un error), y una fuente en otra moneda se omite en lugar de aproximarse. Nord Pool SE3 necesita un plan en SEK; Energy-Charts DE-LU necesita un plan en EUR. Ajuste primero la moneda de su plan y después elija una zona que coincida con ella.

La atribución se muestra, y es a propósito

Cada fuente lleva la mención que exige su propia licencia — por ejemplo Bundesnetzagentur | SMARD.de / Energy-Charts (CC BY 4.0) — y el hub la muestra en la página de precios. No es decoración: es la condición con la que pueden usarse los datos, y le dice qué está viendo. Energy-Charts solo se sirve para las zonas publicadas bajo CC BY 4.0.

Nord Pool se consulta a través de un portal de datos no oficial, y el hub lo dice donde nombra la fuente. No hay ningún acuerdo de servicio detrás: puede cambiar o dejar de funcionar sin aviso. Úselo sabiéndolo, y dele un respaldo donde exista: SE1-4, NO1-5 y DK1-2 también están cubiertas por otra fuente de esta lista, pero para FI, EE, LV y LT Nord Pool es la única — ahí, un envío desde Home Assistant es el único respaldo disponible.


Qué hace su contrato con el precio

Un precio de mercado no es lo que paga. Los dos tipos de fuente difieren en cuánto del resto ya está incluido en el número.

Una fuente spot: el precio es el inicio de la cadena

buy = ( spot × factor
        + markup
        [ + your plan's zone rate, if "zones stack" is on ]
        + your plan's per-kWh energy tax
        + grid fee
        + renewable levy )
      × ( 1 + your plan's VAT )

factor y markup son los términos de su contrato: un multiplicador y una adición por kWh. Todo lo demás procede del plan que ya introdujo en Tariffs, por eso el plan sigue importando cuando el precio es dinámico.

Rangos aceptados, y un valor fuera de ellos se rechaza en lugar de recortarse: factor de 0 a 10, markup de −100 a 100.

Una fuente all-in: el precio es toda la cadena

buy = the provider's price

No se añade nada del plan — ni impuesto, ni cargo de red, ni recargo, ni IVA.

⚠️ Este es el mecanismo que evita el error de coste más común. Un precio all-in ya contiene los impuestos y el IVA. Si pasara por la fórmula spot, cada uno de ellos se añadiría una segunda vez y sus costes saldrían visiblemente demasiado altos. EnergyZero y Octopus Agile están marcados como all-in por esa razón — el hub fija la clase de un proveedor de red, no usted; la ve en la lista de proveedores como · all-in y en la línea de la fórmula. El único lugar donde la clase es su elección es Home Assistant, donde usted indica qué tipo está enviando. Si sus costes parecen inflados y el precio en sí parece correcto, esto es lo primero que hay que leer.

Home Assistant como fuente

Home Assistant — o cualquier cliente — puede enviar precios al hub en lugar de que el hub los descargue: hasta 200 periodos cada vez, guardados en el propio almacén del hub. Usted marca si lo que envía es un precio spot o un precio all-in, y a partir de ahí se trata exactamente como un proveedor de ese tipo. Es el camino para un suministrador del que el hub no tiene fuente, o para un precio que calcula usted mismo.

En la versión ESPHome, Home Assistant aparece en la lista de fuentes desde el principio; en el firmware independiente aparece en la lista una vez que ha llegado un envío. En cualquier caso los precios dinámicos están desactivados hasta que los active, y la fuente la elige usted — Home Assistant es una opción de la lista, no la que ya viene seleccionada.

Todo lo de esta página es cierto para ambas versiones: el hub ESPHome ejecuta el mismo núcleo y el mismo descargador, con los mismos proveedores, calendario y cadena de respaldo. Lo único que cambia es dónde se configura — en la versión ESPHome es el panel de RBgrid en Home Assistant, no la aplicación web.


El lado de venta

La exportación se valora por separado, y nunca con el mismo número que la importación. Tres modos:

Modo El precio de venta es
Desde el proveedor (por defecto) el precio de exportación propio de la fuente, donde lo tiene; si no, la tarifa de venta de zona de su plan
Desde el plan tarifario la tarifa de venta de zona de su plan
Market price × factor − fee spot × export factor − export fee

El factor de exportación acepta de 0 a 10, la tasa de exportación de −100 a 100 (k_sell y la tasa de vertido en la API). No se aplica impuesto ni IVA al lado de venta.

El valor de la exportación nunca se resta de su coste. La energía importada y su coste, la energía exportada y su valor, lado a lado — véase Economics. Un precio dinámico cambia las cifras, no esa regla.


Facturar a la media horaria: cuando su contrato liquida por hora

Algunos contratos siguen el mercado pero se liquidan por hora, aunque el mercado publique cada 15 minutos. Active Bill at the hourly mean y cada periodo de 15 minutos de una hora se factura a la media de los precios de esa hora.

Es una propiedad de su contrato, no de su fuente. Una fuente de 15 minutos con liquidación horaria la necesita activada; una fuente horaria no la necesita en absoluto, porque sus cuatro periodos ya comparten un precio. Activarla "porque mi proveedor es horario" no cambia nada; dejarla desactivada cuando su contrato es horario hace que cada periodo difiera un poco de la aritmética de su suministrador.

Los periodos facturados así se marcan como hourly_mean en el registro de precios, para que pueda distinguirlos después.


Precios negativos, y suelos

Cuando el mercado se vuelve negativo, el hub conserva el precio negativo y registra un coste negativo para ese periodo. Es la lectura honesta: durante esos periodos, consumir energía le abona dinero con un contrato que sigue el mercado.

Si su contrato no traslada los precios negativos, establezca un suelo: Lowest buy price y Lowest sell price (de −100 a 100, o none; floor_buy y floor_sell en la API). Desactivados, cada uno aparece como «None: negative prices pass through». El suelo se aplica al final, después de todo lo demás.

Con los precios dinámicos desactivados, las tarifas del plan nunca bajan de cero, como antes. Los suelos existen porque un precio de mercado sí puede serlo, y su contrato quizá no.


Cuándo llegan los precios

  • Los precios de hoy se descargan en cuanto el día no está cubierto por completo.
  • Los de mañana se descargan desde las 11:00 UTC, cuando empieza la publicación day-ahead; la aplicación lo presenta como lo vive un lector — «they usually arrive after 13:00 CET».

  • Si una descarga falla, o los de mañana aún no han salido, el hub reintenta cada 15 minutos hasta las 15:00 UTC, y después cada hora. Pasadas las 15:00 UTC la página también lo dice abiertamente: el estado pasa a «Tomorrow's prices not in yet».

Así que una segunda mitad del gráfico vacía antes del mediodía es normal, no un fallo: mañana todavía no existe.

Ambos resultados se escriben en el registro del hub, y puede leerlos en Events:

price: state A -> B (source …)
FAIL price: <provider> <zone> fetch failed (<reason>), retry in N min

El motivo es uno de fetch_failed, http_status, parse, auth, no_data_for_zone o rate_limited — y cuál sea decide qué hacer al respecto (véase abajo). El estado en vivo y hasta dónde se conocen los precios están en la página Prices, y en la API como price_state y valid_until.


El registro: qué precio se usó, para cada periodo

El precio aplicado de cada periodo de 15 minutos se registra con su fuente, y se guarda durante 40 días — también cuando los precios dinámicos están desactivados, donde la entrada simplemente dice plan. Descárguelo como CSV desde la página Prices.

prov procedencia del precio
source su fuente principal
backup su fuente de respaldo
ha_push enviado por Home Assistant u otro cliente
hourly_mean la media de esa hora, según el ajuste de su contrato
plan la tarifa de zona de su plan tarifario

🔑 Esto es lo que hace que una cifra de coste sea comprobable en lugar de creíble. Un monitor que le muestra un coste le pide que lo crea. Un monitor que le muestra el precio que usó, por periodo, con el origen de ese precio, le entrega la aritmética — y 40 días bastan para zanjar una discusión con una factura mensual en la mano.

Los registros del historial en sí no cambian de formato: el dinero se calcula con el precio propio de cada periodo, y cualquiera que ya lea el historial o el CSV del hub no necesita cambios.


Dónde aparece el precio en otros sitios

  • Dynamic prices — la pantalla: precio ahora, hoy y mañana, su fuente y su fórmula, ventanas baratas, picos, el registro.

  • Why this hour costs what it costs — la cadena completa desde la energía hasta el dinero, ahora con un precio de mercado dentro.

  • Cheap windows and the price notification — lo que publica el hub para que otra cosa pueda actuar sobre un tramo barato.

  • Import peaks — la importación más alta de 15 minutos y por hora de un ciclo de facturación. Se mide tanto si usa precios dinámicos como si no.

  • Home Assistant y MQTT — la telemetría en vivo lleva el estado, la fuente en uso, hasta dónde se conocen los precios y la tarifa de compra y de venta actual; véase MQTT broker.


Si usa el firmware v1.2.0, actualice

Las notas de versión del propio hub incluyen una recomendación, y merece la pena seguirla en lugar de pasarla por alto: actualice desde v1.2.0 si usa precios dinámicos.

En v1.2.0 los periodos de precio descargados se guardaban en el pequeño almacén de ajustes del hub — el mismo que guarda la hora en curso y los anclajes de energía. Con los precios dinámicos activados, los precios podían llenarlo, y entonces un reinicio podía perder parte de la hora que se estaba midiendo. El hub lo dice cuando ocurre: el registro del hub muestra FAIL hour persist …: ESP_ERR_NVS_NOT_ENOUGH_SPACE.

v1.2.1 traslada los periodos de precio al sistema de archivos del hub y libera ese espacio en el primer arranque, registrando price: stores moved from NVS to the file system. Nada de lo que hace un lector cambia, y nada de esta página se lee distinto en ninguna de las dos versiones — pero el fallo de arriba deja de ser posible.

Las reglas de ventanas baratas y las cifras de picos de importación son pequeñas y siguen en el almacén de ajustes en ambas versiones: que «the price stores moved» no significa que todo lo relacionado con precios se trasladara.

Lo que no hace

Dicho claramente, porque cada una de estas cosas es algo que un lector podría esperar razonablemente:

  • Sin Tibber, sin Amber. No implementado. Si su suministrador es uno de ellos, envíe el precio desde Home Assistant.
  • Sin conversión de moneda. La moneda de su plan y la de su zona deben ser la misma.
  • Sin acuerdo de servicio detrás de Nord Pool. El endpoint es un portal de datos no oficial y puede cambiar sin aviso.
  • Sin control de carga. El hub mide y valora; no conmuta nada. La notificación es el punto de traspaso.
  • Sin facturación de cargos por potencia contratada. Los picos se miden, no se valoran en sus costes.

Cuando la cifra es errónea: qué revisar

Mis costes son muy altos, y el precio en sí parece correcto. Su fuente es all-in pero se trata como spot, así que los impuestos y el IVA del plan se añaden sobre un precio que ya los contenía. Para un proveedor de red la clase es del hub, no suya: léala en la lista de proveedores, donde una fuente all-in se muestra con · all-in, y en la línea de la fórmula. Para Home Assistant la clase sí es suya — compruebe What Home Assistant sends.

Mis costes parecen demasiado bajos, o el precio es menor que en la aplicación de mi suministrador. Lo contrario: un precio spot sin los términos del contrato detrás. Compruebe que factor y markup coinciden con su contrato, y que el plan que hay detrás lleva su impuesto de energía, cargo de red, recargo e IVA. Un precio spot desnudo es un número mayorista, no minorista.

La mitad del gráfico está vacía. Si es antes de media tarde, los precios de mañana aún no han salido — el hub empieza a pedirlos a las 11:00 UTC y normalmente llegan después de las 13:00 CET. Si es después de eso, busque en Events una línea FAIL price: y lea su motivo.

FAIL price: … no_data_for_zone. El proveedor respondió, pero no para su zona. O la zona no está en la lista de esa fuente, o la fuente ha dejado de servirla. Cambie la zona, o cambie la fuente.

FAIL price: … parse o http_status, repetidamente. La fuente cambió o está caída. Este es el caso para el que existe una fuente de respaldo; configure una de un proveedor distinto que cubra la misma zona — si la lista tiene una para su zona; véase Why a backup is worth setting más arriba.

FAIL price: … rate_limited. Demasiadas peticiones llegaron al proveedor desde su dirección. El hub se retira por sí solo — cada 15 minutos hasta las 15:00 UTC, y después cada hora — así que se resuelve sola. Si persiste durante un día, otra cosa en su red está consultando el mismo endpoint.

Guardé una zona y se rechazó. La moneda de la zona no coincide con la de su plan, y el hub no convierte. Ponga la moneda del plan en la que opera su mercado, y después guarde la zona.

El precio es correcto, pero los costes siguen calculados con mi plan. Mire el registro de precios de esos periodos: una entrada plan significa que ni la fuente principal ni la de respaldo los cubrieron. O los precios no habían llegado para ese tramo, o los precios dinámicos estaban desactivados en ese momento — el ajuste se aplica desde el momento en que se guarda, y la energía ya medida conserva el precio con que se calculó.

Mis cifras difieren de las de mi suministrador en una cantidad pequeña y constante. Compruebe hourly mean frente a su contrato: si se liquida por hora y el hub valora por periodo de 15 minutos, cada hora quedará ligeramente desviada en ambos sentidos. Actívelo y el hub valora cada periodo de la hora a la media de esa hora.

Un periodo costó menos que cero. El precio de mercado fue negativo y su contrato lo traslada, así que el hub registró un coste negativo. Si su contrato no lo traslada, establezca floor_buy en el precio más bajo que realmente le puedan cobrar.

Cambié la fuente y los costes antiguos no cambiaron. Nunca cambian. Un periodo se calcula una vez, con el precio vigente cuando se midió, y la cifra se mantiene — véase Why this hour costs what it costs. Cambiar una fuente cambia lo que pase a partir de ahora.

⚠️ Para cualquier trabajo dentro de un cuadro eléctrico, llame a un electricista cualificado.