Closed rexp2 closed 1 year ago
Olá,
Qual a vantagem de ter vários atributos? O que quer fazer com os atributos price_00h
que não consegue fazer, por exemplo, com o day_hours[0]
?
Tengo este sensor:
- platform: template
sensors:
coste_diario_vertido:
friendly_name: "Vertido diario electricidad"
unit_of_measurement: "€"
value_template:
"{% set sensor = ['sensor.balance_vertido00','sensor.balance_vertido01','sensor.balance_vertido02','sensor.balance_vertido03',
'sensor.balance_vertido04','sensor.balance_vertido05','sensor.balance_vertido06','sensor.balance_vertido07','sensor.balance_vertido08',
'sensor.balance_vertido09','sensor.balance_vertido10','sensor.balance_vertido11','sensor.balance_vertido12',
'sensor.balance_vertido13','sensor.balance_vertido14','sensor.balance_vertido15','sensor.balance_vertido16','sensor.balance_vertido17',
'sensor.balance_vertido18','sensor.balance_vertido19','sensor.balance_vertido20','sensor.balance_vertido21',
'sensor.balance_vertido22','sensor.balance_vertido23'] %}
{% set esios_grid_injection_price = ['price_00h','price_01h','price_02h','price_03h','price_04h','price_05h','price_06h', 'price_07h',
'price_08h','price_09h','price_10h','price_11h','price_12h','price_13h','price_14h','price_15h','price_16h','price_17h',
'price_18h','price_19h','price_20h','price_21h','price_22h','price_23h'] %}
{% set ns = namespace(suma=0) %}
{% for i in range(24) %}
{% set ns.suma = ns.suma + ((states(sensor[i]) | float ) * (state_attr('sensor.esios_grid_injection_price', esios_grid_injection_price[i]) | float)) %}
{% endfor %}
{{ns.suma | round(3)}}"
Que me calcula el importe del excedente fotovoltaico en pvpc. Pero mi comercializadora me factura con el precio omie y quería adaptar tu integración para este sensor, quizás se pueda hacer pero yo no se. Es por eso mi petición.
Experimenta assim:
- platform: template
sensors:
coste_diario_vertido:
friendly_name: "Vertido diario electricidad"
unit_of_measurement: "€"
value_template: |
{% set omie = state_attr('sensor.omie_spot_price_es', 'day_hours') %}
{% set ns = namespace(horas=[]) %}
{% for h in range(24) %}
{% set vertido = states('sensor.balance_vertido' ~ ('%02d' % h)) %}
{% set ns.horas = ns.horas + [vertido * omie[h]] %}
{% endfor %}
{{ ns.horas | sum | round(3) }}
Testar aqui -> https://my.home-assistant.io/redirect/developer_template/
TypeError: can't multiply sequence by non-int of type 'float' Cada sensor de balance_vertido×× está creado en configuration.yaml, no es un sensor utility meter. Y es el resultado de comparar consumo y vertido cada hora para que dé el balance neto horario. ################################################## balance_vertido15: friendly_name: "Balance Vertido 15" unit_of_measurement: KWh value_template: "{{ (max( (states.sensor.umvertidod_15h.state | float) - (states.sensor.umconsumod_15h.state | float) ,0)) | round(3) }}" ##################################################
umvertidod_xxh = Utility meter vertido diario umconsumod_xxh = Utility meter consumo diario Osea que hay 24 sensores de umvertidod, de umconsumod y de balance_vertidoxx
Esqueci o |float
. E assim?
- platform: template
sensors:
coste_diario_vertido:
friendly_name: "Vertido diario electricidad"
unit_of_measurement: "€"
value_template: |
{% set omie = state_attr('sensor.omie_spot_price_pt', 'day_hours') %}
{% set ns = namespace(horas=[]) %}
{% for h in range(24) %}
{% set vertido = states('sensor.balance_vertido' ~ ('%02d' % h)) | float %}
{% set ns.horas = ns.horas + [vertido * omie[h]] %}
{% endfor %}
{{ ns.horas | sum | round(3) }}
Perfecto, muchas gracias por todo, eres un crack
Hola, gracias por tu trabajo. Podrías poner como atributo el precio de cada hora en lugar de "day_hours" Price_00h: value Price_01h: value Etc. Gracias