Resultado final:

Requerimentos:
- sensor que meça o consumo energético e faça reset ao fim do mês (Exemplo: Utility meter)
Cards
Introdução
Há quem faça isto com o grafana, que está correto na mesma. A minha solução é para evitar isso
A ideia passa por criar 12 input_text, um para cada mês. Como o histórico do HA está programado para pouco tempo (alguns dias no máximo), precisamos de guardar os valores em entidades.
O gráfico vai buscar os dados a cada input_text.
Para guardar os dados, é criada uma automação para que, cada vez que o sensor altere, é registado no input_text do mês atual. Quando passa para o dia 1 do mês seguinte, automaticamente regista no input correto.
Ao passar o cursor por cima das barras, mostra o mês que seleciona. Sem o cursor por cima das barras, mostra o mês atual. Opcionalmente podem meter a soma de todos os meses, mas isso só faz sentido se todos os input_text tiverem os dados preenchidos.
Código:
configuration.yaml
input_text:
  energy_kw_month_01:
    name: "Janeiro"
  energy_kw_month_02:
    name: "Fevereiro"
  energy_kw_month_03:
    name: "Março"
  energy_kw_month_04:
    name: "Abril"
  energy_kw_month_05:
    name: "Maio"
  energy_kw_month_06:
    name: "Junho"
  energy_kw_month_07:
    name: "Julho"
  energy_kw_month_08:
    name: "Agosto"
  energy_kw_month_09:
    name: "Setembro"
  energy_kw_month_10:
    name: "Outubro"
  energy_kw_month_11:
    name: "Novembro"
  energy_kw_month_12:
    name: "Dezembro"
automation:
  - alias: "Energy monthly update total kw"
    initial_state: true
    trigger:
      - platform: state
        entity_id: sensor.energy_monthly_simples
    action:
      - service: input_text.set_value
        data_template:
          entity_id: "input_text.energy_kw_month_{{ now().strftime('%m') }}"
          value: "{{ trigger.to_state.state }}"
lovelace card
- type: entities
  title: Consumo energético
  show_header_toggle: false
  entities:
    - type: 'custom:mini-graph-card'
      name: "Consumo anual (últimos 12 meses)"
      style: |
       .state__time {
          display: none;
        }
      entities:
        - entity: sensor.energy_monthly_simples
          show_graph: false
        - entity: input_text.energy_kw_month_01
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_02
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_03
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_04
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_05
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_06
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_07
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_08
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_09
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_10
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_11
          color: "var(--primary-color)"
        - entity: input_text.energy_kw_month_12
          color: "var(--primary-color)"
      unit: kW
      font_size_header: 14px
      font_size: 80
      bar_spacing: 8
      height: 120
      aggregate_func: last
      fixed_value: true
      group_by: date
      show:
        graph: bar
        icon: false
        legend: false
        average: false
        extrema: false
        labels: false
        labels_secondary: false
    - type: 'custom:hui-markdown-card'
      style: |
       .markdown {
          padding: 0px 0px !important;
        }
       
        table {
          table-layout: fixed;
          width: 100%;
        }
       
        thead {
          display: none;
        }
       
        td {
          text-align: center;
        }
      content: |
       | | | | | | | | | | | | |
        |-|-|-|-|-|-|-|-|-|-|-|-|
        |J|F|M|A|M|J|J|A|S|O|N|D|
Opcional
Barras com cores aleatórias
Retirar o color por baixo de cada entity
Mostrar a soma de todos os meses quando o cursor não está a sobrepor as barras
No mini-graph-card alterar o primeiro sensor no entities por este abaixo:
sensor:
  - platform: template
    sensors:
      energy_anual_consumption_kw:
        friendly_name: "Consumo anual (total)"
        unit_of_measurement: "kW"
        value_template: >
         {{ states.input_text.energy_kw_month_01.state | float +
             states.input_text.energy_kw_month_02.state | float +
             states.input_text.energy_kw_month_03.state | float +
             states.input_text.energy_kw_month_04.state | float +
             states.input_text.energy_kw_month_05.state | float +
             states.input_text.energy_kw_month_06.state | float +
             states.input_text.energy_kw_month_07.state | float +
             states.input_text.energy_kw_month_08.state | float +
             states.input_text.energy_kw_month_09.state | float +
             states.input_text.energy_kw_month_10.state | float +
             states.input_text.energy_kw_month_11.state | float +
             states.input_text.energy_kw_month_12.state | float }}
 
      
    


