Las horas más baratas sin controlador: el hub lo indica, Home Assistant decide

  • Probado con el firmware v1.2.1
  • Intermedio

Pregunte a Home Assistant qué horas son las más baratas de mañana y acabará en un lugar al que no pensaba llegar: una integración de planificación, un sensor de plantilla con una macro dentro, una lista ordenada de horas y una automatización que compara la hora actual con el resultado. Funciona, y la gente mantiene exactamente esa configuración durante años. Pero son muchas piezas móviles para una pregunta que tiene una respuesta de una palabra: ¿es buen momento ahora?

El hub responde a esa pregunta por sí mismo. Conoce los precios de cada período de 15 minutos, así que puede calcular cuáles son baratos, y publica el resultado como una ventana: abierta o cerrada, hasta cuándo, y cuándo empieza la siguiente.

Lo que no hace es actuar en consecuencia. Esa parte es suya.

Qué es una ventana

Usted describe la regla; el hub la evalúa con los precios que tiene.

Regla Qué significa Úsela cuando
Precio por debajo de un nivel abierta mientras el precio de compra todo incluido (all-in price; el precio de mercado con los cargos, los impuestos y el IVA de su contrato ya incluidos — de qué se compone) esté en su nivel o por debajo, y vuelve a cerrarse por encima de un segundo nivel, más alto su umbral es absoluto: «mientras la electricidad esté por debajo de 10 céntimos, siempre que ocurra»
Los períodos más baratos en un intervalo horario abierta durante los n períodos más baratos dentro de un intervalo que usted indica necesita n períodos y no le importa cuándo, dentro de un tramo del día
Los períodos más baratos antes de una hora abierta durante los n períodos más baratos entre ahora y un plazo límite algo debe estar hecho a las 07:00 y quiere la forma más barata de llegar a tiempo

Usar dos niveles en la primera regla en lugar de uno no es un capricho: un precio que oscila alrededor de una sola cifra haría que la ventana parpadeara, abriéndose y cerrándose en cada período. Deje un margen entre ambos.

Junto a las reglas hay dos indicadores sencillos — buy is cheap below y sell is low below — que dicen algo sobre el precio en este momento, sin planificación ni histéresis. El de venta es el más útil en una instalación con generación: es la señal de que su propia energía vale más si se consume que si se exporta.

Ocho reglas es el límite. Una novena se rechaza en lugar de descartarse en silencio.

Lea el estado, no el mensaje

Este es el único consejo que decide si su automatización funciona.

El estado de la ventana se vuelve a publicar en cada límite de 15 minutos, e inmediatamente cada vez que algo cambia: se abre o se cierra una ventana, llegan precios nuevos o se edita una regla. Es un estado, no un anuncio.

Por eso, construya sobre el valor actual. Una automatización que trata cada publicación como un evento se dispara una y otra vez durante una ventana larga, y se pierde la transición que ocurrió mientras se reiniciaba. Una automatización que pregunta «¿está activa esta ventana?» acierta en cada momento, incluido el momento en que vuelve.

Leerla desde Home Assistant: las dos rutas, tal como está escrito

Aquí la respuesta honesta depende de cómo ejecute el hub.

En la ruta propia del hub, por MQTT, el estado llega como un mensaje retenido en rbgrid/<mac>/price — menos de un kilobyte, con una entrada por regla: su nombre, si está activa, hasta cuándo y cuándo empieza la siguiente. «Retenido» es la palabra importante: cualquier cliente que se conecte más tarde recibe el estado actual de inmediato, así que un reinicio no le cuesta nada. El mensaje es JSON, así que lo habitual es un sensor MQTT con una plantilla que extrae la regla que le interesa; la referencia del propio hub incluye un ejemplo práctico de exactamente eso, con los nombres de los campos.

En la ruta ESPHome, las ventanas también son entidades: un sensor binario por regla, en el dispositivo del hub, on mientras la ventana está abierta, con la hora de cierre y la de la siguiente apertura. Junto a ellos están un indicador de precio barato, un indicador de precio de venta bajo y un sensor de posición para el período actual. Se actualizan cada minuto y de inmediato después de cada evento de precios del hub.

Así, una automatización es una condición de estado sobre una sola entidad, en cualquiera de las dos rutas. La posición, ya que aparece en ambas: indica dónde se sitúa el período actual entre los períodos de hoy que se conocen; 1 es el más barato, y el denominador es cuántos períodos tiene el hub con precio hasta el momento.

⚠️ Si su integración es anterior a eso, las ventanas no son entidades y el estado hay que pedirlo — mediante una acción que devuelve la misma estructura que contiene el mensaje MQTT. La receta para eso es un sensor de plantilla basado en disparadores, y sigue funcionando; simplemente ya no es necesaria. Actualice la integración y el paso desaparece.

Un límite que conviene tener presente: los sensores por regla se verificaron en pruebas, no viendo abrirse una ventana en un hub real, porque el banco estaba apagado antes de que llegara una ventana. La asignación está comprobada; la observación en directo todavía no está registrada.

En qué se reduce una automatización

La fontanería difiere, como se ha visto. La lógica no, y una vez que el estado está donde su automatización puede verlo, son tres líneas:

  1. ¿Está activa la ventana llamada Boiler? — pregunte por el estado.
  2. Sí → su automatización enciende el interruptor del calentador.
  3. No → su automatización lo apaga.

Cada decisión después del paso 1 es de Home Assistant. El hub aportó un valor booleano y el motivo.

Además, las aperturas y los cierres también se escriben en el registro del propio hub, así que puede leer después qué pasó mientras no estaba mirando:

price: window 'Boiler' on until <time>
price: window 'Boiler' off, next <time>

El único blueprint incluido y para qué sirve

La integración trae dos blueprints. El primero, RBgrid — notify on hub events, hace lo que su nombre indica: notifica. Su lista predeterminada de tipos de evento cubre eventos de hardware y de conexión: flujo inverso, un módulo que desaparece o vuelve, un nodo que se desconecta o se conecta, un bus bloqueado, firmware, fallos.

Los eventos de precio no están en esa lista predeterminada. Puede añadir usted mismo el tipo price, y entonces recibirá notificaciones sobre las ventanas, junto con todos los demás eventos de precio, incluida cada descarga correcta, porque comparten el mismo tipo y no pueden separarse.

El segundo, RBgrid — cheap window turns a switch on and off, recibe un sensor de ventana y un interruptor, una luz, un ventilador o un booleano de entrada, con una opción para invertir. Conviene ser exacto sobre lo que significa, porque es el mismo límite que aparece en todo este artículo: la automatización conmuta; el hub informa. El blueprint es una automatización preparada, no una capacidad del medidor.

Lo que el hub nunca hará

  • No conmuta nada. No tiene relé y no hay ningún ajuste que le haga encender nada.
  • No planifica por usted más allá de la regla. Una regla es una descripción de qué períodos cumplen la condición; el hub la aplica y dice cuál es el resultado.
  • No hay ventanas en el lado de la venta. Las ventanas usan el precio de compra todo incluido. Para la exportación, la señal es el indicador sell is low.
  • Nada ocurre sin un reloj configurado. Las reglas describen horas y días; un hub que no ha sincronizado su reloj no puede situarlas.

Cuando no se abrió y usted lo esperaba

  • Compruebe que los precios llegaron — y lea el párrafo siguiente, porque este es el caso habitual. Una regla sobre los períodos más baratos de un intervalo necesita los precios de ese intervalo. El registro del hub indica qué se almacenó y cuándo.
  • Compruebe los dos niveles. Los niveles iguales hacen parpadear una ventana; un margen demasiado ancho la mantiene cerrada.
  • Compruebe el reloj. Vea lo anterior: es el problema silencioso.
  • Compruebe qué precio usó el período. Si la fuente falló y su plan cubrió el período en su lugar, la ventana se evaluó con la tarifa del plan, que es una cifra distinta. El registro indica la fuente de cada período.

Los precios de mañana llegaron tarde por la noche

Merece un párrafo propio, porque produce una ventana que parece errónea y no lo es.

El hub no espera a los precios ni omite las horas para las que no tiene precio de mercado. Clasifica cada período de la ventana según el precio que cobraría por ese período — primero la fuente de mercado, después su respaldo, y después la tarifa por zona de su plan con sus cargos e IVA. Luego vuelve a decidir de forma continua, así que cuando llegan los precios, la ventana se desplaza a las horas que realmente son las más baratas entre las que aún quedan por delante.

Dos consecuencias, y ambas son un comportamiento correcto, no un fallo:

  • la ventana puede abrirse en un momento que no esperaba — por la tarde, si los precios de mercado de hoy superan la tarifa de su plan en esas horas, o de madrugada a la tarifa del plan cuando no se conoce nada más;
  • la ventana puede durar menos de lo que pidió. Una selección que ya ha pasado no se deshace; si el nuevo conjunto más barato incluye períodos que ya han transcurrido, cuentan como elegidos y ya no pueden ejecutarse, y el hub no completa la noche con períodos adicionales. El día siguiente es normal.

Si los precios no llegan nunca, todo se clasifica a la tarifa de su plan y la ventana cae en los períodos más baratos del plan — normalmente la zona nocturna, si su plan tiene una.

En cada uno de esos casos la ventana se abrió correctamente con los datos que el hub tenía en ese momento. El registro de eventos muestra cada cambio, y la columna de fuente del registro de precios indica qué períodos se calcularon con el plan en lugar del mercado.

Dónde leer más