Ajuda custo de energia


(H Oliveira) #1

boas
Ja procurei no forum e encontrei vários tópicos relativos a isto mas como sou principiante não percebo onde devo colocar o código para o calculo da energia que
vi neste post


abaixo ja coloquei la o nome dos meus sensores
coloquei o código no configuration.yalm mas da erros da ou eu nao o coloquei no local certo e coloquei dentro dos sensors,

- platform: template
    sensors:
      custo_energia_diario:
        friendly_name: "Custo Energia Diario"
        value_template: >
         {{((float(states.name: sensor.sensor.rig_1_todays_power.state) * 0.15184 + 0.11) * 1.23 ) | round(2) }}
        unit_of_measurement: "€"
      custo_energia_dia_anterior:
        friendly_name: "Custo Energia Dia anterior"
        value_template: >
         {{((float(states.sensor.rig_1_yesterdays_power.state) * 0.15184 + 0.11) * 1.23 ) | round(2) }}
        unit_of_measurement: "€"
      custo_energia_mensal:
        friendly_name: "Custo Energia Total"
        value_template: >
         {{((float(states.sensor.rig_1_total_power.state) * 0.15184 + 3.38) * 1.23 ) | round(2) }}
        unit_of_measurement: "€"

alguem pode me pode ajudar sff


(Jorge Assunção) #2

Depende se tens as configurações todas no configuration.yaml, se usas split configuration (um ficheiro para cada plataforma), packages ou misto.

Se dá erros era bom dizeres quais são porque nós não conseguimos adivinhar…


(H Oliveira) #3

boas
tenho tudo atualmente no configuration.yalm
pois ainda nao percebi como funciona os outros a seu tempo irei perceber
os erros que dava era nas entidades acima do meu yalm
retirei o codigo do template e deixou de dar erro
por isso gostava de saber como posso fazer
de “raiz” para colocar isto em funcionamento

e ja agora qual a vantagem entre configurar tudo no configuration.yalm ou usar uma configuração separada


(Jorge Assunção) #4

Resposta simples: manter a sanidade mental! Quando tiveres um configuration.yaml com 3 ou 4 mil linhas vais perceber o que estou a dizer. :joy:

O sensor template é um sub-conjunto do sensors por isso deves usar do seguinte modo:

sensor:
  - platform: template
      sensors:
        custo_energia_diario:
          friendly_name: "Custo Energia Diario"
          value_template: >
           {{((float(states.name: sensor.sensor.rig_1_todays_power.state) * 0.15184 + 0.11) * 1.23 ) | round(2) }}
          unit_of_measurement: "€"
        custo_energia_dia_anterior:
          friendly_name: "Custo Energia Dia anterior"
          value_template: >
           {{((float(states.sensor.rig_1_yesterdays_power.state) * 0.15184 + 0.11) * 1.23 ) | round(2) }}
          unit_of_measurement: "€"
        custo_energia_mensal:
          friendly_name: "Custo Energia Total"
          value_template: >
           {{((float(states.sensor.rig_1_total_power.state) * 0.15184 + 3.38) * 1.23 ) | round(2) }}
          unit_of_measurement: "€"

Tendo em conta que já deves ter sensores configurados, basta colares o codigo desde - platform: template até ao fim e colar depois dos sensores que já tens SEM ESQUECER de respeitar os espaçamentos.


(Jorge Assunção) #5

Caso queiras saber um pouco mais sobre os packages, lê o seguinte tópico:

Se quiseres ver utilizações praticas da separação da configuração em diversos ficheiros vê no meu GitHub.


(H Oliveira) #6

obrigado pela explicação basicamente posso criar ficheiros para cada tipo de entrada no ficheiro configuration.yalm na pasta packeges e no configuration.yalm depois faço a chamada desses ficheiros.
irei separar então o meu ficheiro configuration.yalm no futuro breve
agora carreguei o codigo para o yalm e da me este erro
quando valido a configuração

Error loading /config/configuration.yaml: invalid key: “OrderedDict([(’((float(states.name’, ‘sensor.sensor.rig_1_todays_power.state) * 0.15184 + 0.11) * 1.23 ) | round(2)’)])”

no ficheiro esta todo ok com o visto verde


(Jorge Assunção) #7

Experimenta em vez de utilizares:

value_template: >
  {{((float(states.name: sensor.sensor.rig_1_todays_power.state) * 0.15184 + 0.11) * 1.23 ) | round(2) }}

Utiliza o seguinte:

value_template: '{{ ((float(states.name: sensor.sensor.rig_1_todays_power.state) * 0.15184 + 0.11) * 1.23 ) | round(2) }}'

Corrige também nos outros value_template e diz como correu.


(H Oliveira) #8

ja nao da o mesmo erro da outro

Invalid config for [sensor.template]: invalid template (TemplateSyntaxError: expected token ‘,’, got ‘:’) for dictionary value @ data[‘sensors’][‘custo_energia_diario’][‘value_template’]. Got ‘{{ ((float(states.name: sensor.sensor.rig_1_todays_power.state) * 0.15184 + 0.11) * 1.23 ) | round(2) }}’. (See ?, line ?). Please check the docs at https://home-assistant.io/components/sensor.template/

entretanto estive a tentar resolver e asssim ja da valores nos dois ultimos mas no primeiro nao da no custo diario

  - platform: template
    sensors:
     custo_energia_diario:
      friendly_name: "Custo Energia Diario"
      value_template: >
         {{states.sensor.sensor.rig_1_todays_power.state | multiply(0.1598) | round(2)}}
      #value_template: '{{ ((float(states.name: sensor.sensor.rig_1_todays_power.state) * 0.15184 + 0.11) * 1.23 ) | round(2) }}'
      unit_of_measurement: "€"
     custo_energia_dia_anterior:
      friendly_name: "Custo Energia Dia anterior"
      value_template: '{{ ((float(states.sensor.rig_1_yesterdays_power.state) * 0.15184 + 0.11) * 1.23 ) | round(2) }}'
      unit_of_measurement: "€"
     custo_energia_mensal:
      friendly_name: "Custo Energia Total"
      value_template: '{{ ((float(states.sensor.rig_1_total_power.state) * 0.15184 + 3.38) * 1.23 ) | round(2) }}'
      unit_of_measurement: "€"


(Jorge Assunção) #9

Não dá valores porque o copy/paste por vezes atrapalha mais do que ajuda. Tens escrito sensor duas vezes seguidas.

{{ states.sensor.sensor.rig_1_todays_power.state | multiply(0.1598) | round(2) }}

deve ser:

{{ states.sensor.rig_1_todays_power.state | multiply(0.1598) | round(2) }}


(H Oliveira) #10

ja funciona muito obrigado pela ajuda e o tempo que disponibilizou
e uma duvida ja agora nos packeges para transital para la os meus sensors e switchs
seria um ficheiro apra cada um deles
e no configration.yalm

e posso separa os sensores por varios ficheiros por exemplo por divisao de casa e ter la dentro da divisao os sensores e switch existentes la

colocaria as seguintes linhas de codigo
caso nao de para separar por divisoes da casa
packages: !include_dir_named packages/sensors
packages: !include_dir_named packages/switch

caso de por divisoes de casa
packages: !include_dir_named packages/sala
packages: !include_dir_named packages/garagem


(Jorge Assunção) #11

Está tudo explicado no tutorial do packages. Depois de a configuração estar alterada para aceitas os packages podes criar um ficheiro para cada divisão, tal.como podes ver no outro link que publiquei mais acima.


(H Oliveira) #12

obrigado amanha vou me debruçar sobre isso