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 }}