API: permitir que las integraciones externas declaren sus propios tipos de contrato de energía

¡Hola a todos!

Hoy, el seguimiento de energía en Gladys tiene tres tipos de contratos: Base, Horas Válidas y Tempo. Tan pronto como un contrato se sale de estos casos (oferta de fin de semana, días festivos, tarifa estacional, precio spot…), es imposible usarlo.

Estoy cambiando esto a fondo :raising_hands:

Lo que viene:

  • Un verdadero « contrato » por contador, creado en unos pocos clics: elección del contador, elección del modelo, ajuste de los parámetros (sus horas válidas, su suscripción…), y una vista previa del costo en sus últimos 7 días antes de guardar.
  • Muchos más tarifas posibles: horas válidas, fines de semana, días festivos, vacaciones escolares, estaciones, niveles de consumo, precios que cambian todos los días… y no solo en Francia.
  • Calendarios tarifarios: días festivos, colores Tempo, vacaciones escolares… Gladys los usa para aplicar el precio correcto en el momento adecuado.
  • Un widget « precio actual » en el tablero de control, que muestra el precio del momento y el próximo cambio.
  • Escenas basadas en el precio: por ejemplo, « cuando pasamos a horas válidas, iniciar el calentador de agua ».
  • Contratos publicables por la comunidad, sin esperar una actualización de Gladys: ya sea simplemente añadidos al catálogo comunitario, o en forma de integración externa para los casos más complejos (calendarios que mantener actualizados, cálculo de precio específico…).

Para las capturas de abajo, he creado una pequeña integración de prueba, « Francia Fin de Semana & Vacaciones », con tres contratos: horas válidas + fin de semana + días festivos, una oferta reducida durante las vacaciones escolares, y una oferta de fidelidad calculada por la propia integración.

Sus contratos actuales serán migrados automáticamente, no tendrá que hacer nada.

Aún está en revisión antes de llegar a una próxima versión :slight_smile:

La PR: https://github.com/GladysAssistant/Gladys/pull/3130

La imagen Docker si quieres probar:

ghcr.io/gladysassistant/gladys-preview:claude-amazing-einstein-6f4ub7