Então Walber…
Percebi depois esse “erro” de identificação do sensor mas como já era quase 3h da madrugada, tive que abortar a idéia de fazer a devida correção aqui.
Mas o processo foi um tanto mais chato e mais demorado para fazer porque, na verdade, precisei criar uma quantidade grande de sensores distintos para cada dispositivo para ter o resultado que queria… e ainda está dando um trabalho danado.
Mas deixa eu exemplificar aqui para que, caso mais alguém queira fazer, tenha um ponto de partida já funcional e seja bem menos trabalhoso implementar. Para isso, tive que trabalhar com os seguintes arquivos:
sensor.yaml:
platform: history_stats - calcular o tempo (ligado/desligado)
platform: integration - converter Wh para kWh (W * Tempo / 1000)
platform: template - calcular os custos (kWh * $)
template.yaml
sensor - calcular a potência (Ws * Tempo)
utility_meter.yaml
para calcular o consumo (kWh * Tempo)
sensor.yaml:
### Calcular Tempo (ligada e standby) ###
- platform: history_stats
name: LG Sala Ligada
entity_id: media_player.lg_50um7510psb
state: 'on'
type: time
start: '{{ now().replace(day=1).replace(hour=0).replace(minute=0).replace(second=0) }}'
end: '{{ now() }}'
- platform: history_stats
name: LG Sala Standby
entity_id: media_player.lg_50um7510psb
state: 'off'
type: time
start: '{{ now().replace(day=1).replace(hour=0).replace(minute=0).replace(second=0) }}'
end: '{{ now() }}'
### Converter W para kWh ###
- platform: integration
source: sensor.lg_sala_power
name: LG da Sala Ligada Energy
unique_id: sensor.lg_sala_energy
unit_prefix: k
method: left
round: 2
- platform: integration
source: sensor.lg_sala_standby_power
name: LG da Sala Standby Energy
unique_id: sensor.lg_sala_standby_energy
unit_prefix: k
method: left
round: 2
### Calcular Custos ###
- platform: template
sensors:
lg_sala_ligada_custo_dia:
friendly_name: LG Sala Ligada Custo Dia
unique_id: sensor.lg_sala_ligada_custo_dia
unit_of_measurement: 'R$'
value_template: '{{ (states("sensor.lg_sala_ligada_consumo_dia") | int(states("sensor.lg_sala_ligada_consumo_dia")) * (states("input_number.box1") | float)) | round(2) }}'
lg_sala_ligada_custo_semana:
friendly_name: LG Sala Ligada Custo Semana
unique_id: sensor.lg_sala_ligada_custo_semana
unit_of_measurement: 'R$'
value_template: '{{ (states("sensor.lg_sala_ligada_consumo_semana") | int(states("sensor.lg_sala_ligada_consumo_semana")) * (states("input_number.box1") | float)) | round(2) }}'
lg_sala_ligada_custo_mes:
friendly_name: LG Sala Ligada Custo Mês
unique_id: sensor.lg_sala_ligada_custo_mes
unit_of_measurement: 'R$'
value_template: '{{ (states("sensor.lg_sala_ligada_consumo_mes") | int(states("sensor.lg_sala_ligada_consumo_mes")) * (states("input_number.box1") | float)) | round(2) }}'
lg_sala_standby_custo_dia:
friendly_name: LG Sala Standby Custo Dia
unique_id: sensor.lg_sala_standby_custo_dia
unit_of_measurement: 'R$'
value_template: '{{ (states("sensor.lg_sala_standby_consumo_dia") | int(states("sensor.lg_sala_standby_consumo_dia")) * (states("input_number.box1") | float)) | round(2) }}'
lg_sala_standby_custo_semana:
friendly_name: LG Sala Standby Custo Semana
unique_id: sensor.lg_sala_standby_custo_semana
unit_of_measurement: 'R$'
value_template: '{{ (states("sensor.lg_sala_standby_consumo_semana") | int(states("sensor.lg_sala_standby_consumo_semana")) * (states("input_number.box1") | float)) | round(2) }}'
lg_sala_standby_custo_mes:
friendly_name: LG Sala Standby Custo Mês
unique_id: sensor.lg_sala_standby_custo_mes
unit_of_measurement: 'R$'
value_template: '{{ (states("sensor.lg_sala_standby_consumo_mes") | int(states("sensor.lg_sala_standby_consumo_mes")) * (states("input_number.box1") | float)) | round(2) }}'
template.yaml
sensor:
- name: "LG Sala Power"
unique_id: lg_sala_power
device_class: power
unit_of_measurement: 'W'
state_class: measurement
state: >
{% set lg_sala_ligada_w = 0.0375 %} ### consumo da tv (W) a cada segundos ###
{% set lg_sala_ligada_time = states('sensor.lg_sala_ligada') | float %}
{% set lg_sala_ligada_consumption = (lg_sala_ligada_w * lg_sala_ligada_time) | round(2) %}
{% if is_state('media_player.lg_50um7510psb', 'on') %}
{{ lg_sala_ligada_consumption }}
{% endif %}
- name: "LG Sala Standby Power"
unique_id: lg_sala_standby_power
device_class: power
unit_of_measurement: 'W'
state_class: measurement
state: >
{% set lg_sala_standby_w = 0.0001388888889 %} ### consumo da tv (W) a cada segundos ###
{% set lg_sala_standby_time = states('sensor.lg_sala_standby') | float %}
{% set lg_sala_standby_consumption = (lg_sala_standby_w * lg_sala_standby_time) | round(2) %}
{% if is_state('media_player.lg_50um7510psb', 'off') %}
{{ lg_sala_standby_consumption }}
{% endif %}
utility_meter.yaml
lg_sala_ligada_consumo_dia:
source: sensor.lg_sala_energy
name: LG Sala Ligada Consumo Dia
unique_id: lg_sala_ligada_consumo_dia
cycle: daily
lg_sala_ligada_consumo_semana:
source: sensor.lg_sala_energy
name: LG Sala Ligada Consumo Semana
unique_id: lg_sala_consumo_semana
cycle: weekly
lg_sala_ligada_consumo_mes:
source: sensor.lg_sala_energy
name: LG Sala Ligada Consumo Mês
unique_id: lg_sala_consumo_mes
cycle: monthly
lg_sala_standby_consumo_dia:
source: sensor.lg_sala_standby_energy
name: LG Sala Standby Consumo Dia
unique_id: lg_sala_standby_consumo_dia
cycle: daily
lg_sala_standby_consumo_semana:
source: sensor.lg_sala_standby_energy
name: LG Sala Standby Consumo Semana
unique_id: lg_sala_standby_consumo_semana
cycle: weekly
lg_sala_standby_consumo_mes:
source: sensor.lg_sala_standby_energy
name: LG Sala Standby Consumo Mês
unique_id: lg_sala_standby_consumo_mes
cycle: monthly
Ufa, demorei até para escrever isso aqui… agora imagina fazer isso para cada dispositivo que tenha em casa, incluindo 3 TV’s, vários eletrodomésticos e umas 10 T3 e uns 20 T2 da Sonoff. Daqui para o final de semana acabo de fazer tudo e depois vem a criação dos cards, que será outra dor de cabeça, pois estou usando o Mushroom (com animação) e tentando implementar de forma satisfatória o Honeycomb em algumas coisa.
Mas é isso, espero que de alguma forma ajude outros no tocante ao consumo de energia para lâmpadas e outros dispositivos que não fornecem isso.
Forte abraço