luuuis / hass_omie

OMIE Home Assistant Integration
https://forum.cpha.pt/t/integracao-omie-precos-horarios-diarios-mecanismo-de-ajuste/11668
Apache License 2.0
56 stars 6 forks source link

Atributos por horas #13

Closed rexp2 closed 1 year ago

rexp2 commented 1 year ago

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

luuuis commented 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]?

rexp2 commented 1 year ago

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.

luuuis commented 1 year ago

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/

rexp2 commented 1 year ago

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

luuuis commented 1 year ago

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) }}
rexp2 commented 1 year ago

Perfecto, muchas gracias por todo, eres un crack