Bom dia,
Quero partilhar convosco um mini algoritmo que poderá dar jeito uma vez que vejo utilidade nestas andanças do Home Assistant.
A ideia é medir e registar o consumo teórico de um determinado aparelho que, apesar de integrar com o Home Assistant, não faz medição de potência, e, desta forma, não é possível colocar no meu gráfico de consumo diário/mensal.
O aparelho em questão é um Desumidifcador Midea que consome cerca de 240W contínuos em funcionamento, mas também funciona com luzes ou outros aparelhos que tenham sempre um consumo uniforme.
Ora, resumidamente o que fiz para que levasse avante este algoritmo foi:
-
a) Garantir que o aparelho está a ser registado no “recorder”;
-
b) Criar uma variável com a integração “history-stats” que vai ler diariamente a quantidade de tempo que o aparelho esteve ligado;
-
c) Criar um “sensor template” que irá multiplicar a quantidade de horas (fornecido pelo history-stats do ponto supramencionado) pelo consumo teórico daquele aparelho;
Nota 1: No “sensor template” é necessário criar um “availability_template” para que ele o sensor não vá a valor nulo quando se reinicia o HomeAssistant, isto é, quando o aparelho fica ‘unavailable’. Se não fizesse isto, quando ele fica momentaneamente a zero, o sensor multiplica por zero e depois recupera o valor quando o HA arranca, porém, o utility_meter como deteta uma alteração de valor vai somar outra vez o mesmo valor que já tinha. Isto levava a que cada vez que reiniciava o HA, o utility-meter multiplicava por 2 o valor que já tinha.
-
d) Criar um “utility_meter” mensal para guardar os valores diários, e desta forma, evitar ter um recorder grande.
Nota 2: O “history-stats” só lê enquanto estiver coberto pelo recorder, isto é, se tiver um “purge keep-days” no recorder de 5 dias, não posso pedir ao history-stats para me ler durante um mês inteiro. Por isso é que uso um utility_meter para guardar os valores.
- Em alternativa, e no meu caso, guardo também o valor diário do ponto c) numa base de dados (mariaDB).
Ora, posto isto, vamos lá mostrar-vos o código para por isto a funcionar:
Ponto b)
sensor:
- platform: history_stats
name: daily_horas_ligadas_desumidificador
entity_id: humidifier.midea_dehumidifier
state: "on"
type: time
start: "{{ now().replace(hour=0, minute=0, second=0) }}"
end: "{{ now() }}"
Ponto c)
sensor:
- platform: template
sensors:
dailyenergy_desumidificador:
value_template: >
{{ (states('sensor.daily_horas_ligadas_desumidificador')|float * 0.24)|round(2) }}
availability_template: >
{% if is_state("sensor.daily_horas_ligadas_desumidificador", "unknown") %}
false
{% else %}
true
{%- endif %}
unit_of_measurement: 'kWh'
friendly_name: Consumo Desumidificador Diário
Atenção, não repitam a palavra “sensor:” que só se pode usar uma vez em cada .yaml. Só coloquei aqui para perceberem onde estava identado…
Onde está 0.24, substituem pela potência em kW do vosso aparelho. Neste caso 240W = 0.24 kW.
Ponto d)
utility_meter:
monthlyenergy_desumidificador:
source: sensor.dailyenergy_desumidificador
cycle: monthly
Com isto, vamos ter algo deste género:
Espero que tenha sido claro e que seja útil!
Abraço!
Tiago Matias