Integração OMIE: preços horários, diários, mecanismo de ajuste

@luuuis Obrigado e parabéns pela integração que ajuda muita gente com eu. Acho que o valor “casado” da oferta e procura é a media ponderada sem necessidade de ajuste, pelo o que li parece ser o valor final para Portugal (é necessário selecionar PT), o mercado intradiário contínuo tem em conta a limitação da interligação. Podemos ter o preço MWh superior a Espanha porque não temos capacidade nas interligações para importar, uma situação que pode obrigar aumentar a produção de origem térmico (gás) e não importar produção solar que deve resultar num preço MWh superior.

Cumps

Para quem ainda não tiver conhecimento…

Novas TAR a partir de 1 de Julho

image

Isto é um aumento gigante, ou estou a ver mal?

Pois, na Tarifa Simples são 0,0837€ / KWh de diferença…

@Thy_Hunter falta aí um 0 nas casas decimais. Mas sim, é brutal o aumento.

Pois falta! :grimacing:

Corrigido

Actualizei os templates para as novas TAR de 1 de Julho. Avisem se me escapou alguma coisa.

1 Curtiu

Obrigado @luuuis

Esses templates estão onde?
Só achei isto: https://gist.github.com/luuuis/ee29115f4f48719bb355eea0c8a86efb

Nas Wiki:

Obrigado @jsantosdias

Bom trabalho @luuuis !

Falta acrescentar um logo em https://github.com/home-assistant/brands :wink:

2 Curtiram

Atualizei o HA para a versão 2023.9.0 e a integração OMIE está com erros.

Mais alguém?

Comigo aconteceu o mesmo…

Penso que é resolvido pela v1.0.1. No entanto esta versão dá erro no 2023.8, já sei o que tenho a fazer mas de momento não estou ao computador. Mais tarde resolvo.

Só para dizer que a https://github.com/luuuis/hass_omie/releases/tag/v1.0.2 já saiu.

1 Curtiu

Já funciona! Excelente! Muito obrigado!

Bom dia.
Como é que atualizo?

Obrigado

Entre no HACS e aparece logo a atualização.

Excelente.

Está resolvido.

Muito obrigado.

Boa tarde pessoal,
preciso aqui de uma dica no código do card.
Atualizei para a ultima versão, omie v1.0.2 e agora não me aparece a media para amanhã, conforme mostro na foto.
Já andei a verificar, não sei se alterei alguma coisa ou não, o cero é que não mostra nada.

omie

type: custom:button-card
styles:
  card:
    - height: 750px
    - width: 385px
    - background: transparent
    - border: null
    - border-radius: 10px
  grid:
    - position: relative
  custom_fields:
    spot_d:
      - position: absolute
      - top: 5%
      - left: 17%
    amanha:
      - position: absolute
      - top: 45%
      - left: 65%
    media_d:
      - position: absolute
      - top: 45%
      - left: 6%
    delta:
      - position: absolute
      - left: 63%
      - top: 40%
    hourly:
      - position: absolute
      - top: 65%
      - left: '-3%'
custom_fields:
  spot_d:
    card:
      type: custom:button-card
      entity: sensor.omie_spot_price_pt
      show_units: false
      show_icon: false
      name: SPOT
      label: €/MWh
      show_label: true
      show_state: true
      styles:
        card:
          - background: transparent
          - border-radius: 50%
          - aspect-ratio: 1/1
          - height: 250px
          - border: none
          - box-shadow: |
              [[[
                var prec=states['sensor.omie_spot_price_pt'].state
                if (prec >= 180) return '0px 0px 60px green';
                else if (prec >= 140) return '0px 0px 60px #FFFF00';
                else if (prec >= 100) return '0px 0px 60px #FFC000';
                else if (prec >= 60) return '0px 0px 60px  #FA7000';
                else return '0px 0px 60px rgb(247,13,26)';
              ]]]
        state:
          - padding-top: 40px
          - font-size: 36px
        name:
          - padding-top: 85px
          - font-size: 46px
          - color: |
              [[[
                var prec=states['sensor.omie_spot_price_pt'].state
                if (prec >= 180) return 'green';
                else if (prec >= 140) return '#FFFF00';
                else if (prec >= 100) return '#FFC000';
                else if (prec >= 60) return '#FA7000';
                else return 'rgb(247,13,26)';
              ]]]
        label:
          - font-size: 15px
          - padding-top: 0px
  amanha:
    card:
      type: custom:button-card
      position: absolute
      entity: sensor.omie_spot_price_pt.attributes.today_average
      attribute: today_average
      label: |
        [[[
          return states['sensor.omie_spot_price_pt_tomorrow'].attributes_today_average            
        ]]]
      show_units: false
      show_icon: false
      name: Amanhã
      show_label: true
      show_state: false
      styles:
        card:
          - background: transparent
          - border-radius: 50%
          - aspect-ratio: 1/1
          - height: 100px
          - border: none
          - box-shadow: |
              [[[
                var prec=states['sensor.omie_spot_price_pt'].state
                if (prec >= 180) return '0px 0px 10px green';
                else if (prec >= 140) return '0px 0px 10px #FFFF00';
                else if (prec >= 100) return '0px 0px 10px #FFC000';
                else if (prec >= 60) return '0px 0px 10px #FA7000';
                else return '0px 0px 10px rgb(247,13,26)';
              ]]]
          - animation: |
              [[[
                var ajusteam=states['sensor.omie_adjustment_price_pt_tomorrow'].attributes.today_average
                if (ajusteam > 0) return 'blink 2s infinite';
                else return 'none'
              ]]]
        name:
          - padding-bottom: 6px
          - padding-right: 2px
          - font-size: 18px
          - color: |
              [[[
                var prec=states['sensor.omie_spot_price_pt'].state
                if (prec >= 180) return 'green';
                else if (prec >= 140) return '#FFFF00';
                else if (prec >= 100) return '#FFC000';
                else if (prec >= 60) return '#FA7000';
                else return 'rgb(247,13,26)';
              ]]]
        label:
          - font-size: 18px
          - padding-top: px
          - position: absolute
          - bottom: 54%
        grid:
          - position: relative
        custom_fields:
          unit:
            - position: absolute
            - top: 73%
            - left: 30.5%
            - font-size: 11px
      custom_fields:
        unit: €/MWh
  media_d:
    card:
      type: custom:button-card
      position: absolute
      entity: sensor.omie_spot_price_pt.attributes.today_average
      attribute: today_average
      label: |
        [[[
          return states['sensor.omie_spot_price_pt'].attributes.today_average            
        ]]]
      show_units: false
      show_icon: false
      name: Média Hoje
      show_label: true
      show_state: false
      styles:
        card:
          - background: transparent
          - border-radius: 50%
          - aspect-ratio: 1/1
          - height: 100px
          - border: none
          - box-shadow: |
              [[[
                var prec=states['sensor.omie_spot_price_pt'].state
                if (prec >= 180) return '0px 0px 10px green';
                else if (prec >= 140) return '0px 0px 10px #FFFF00';
                else if (prec >= 100) return '0px 0px 10px #FFC000';
                else if (prec >= 60) return '0px 0px 10px  #FA7000';
                else return '0px 0px 10px rgb(247,13,26)';
              ]]]
          - animation: |
              [[[
                var ajuste=states['sensor.omie_adjustment_price_pt'].attributes.today_average
                if (ajuste > 0) return 'blink 2s ease-in-out infinite';
                else return 'none'
              ]]]
        name:
          - padding-bottom: 6px
          - font-size: 18px
          - color: |
              [[[
                var prec=states['sensor.omie_spot_price_pt'].state
                if (prec >= 180) return 'green';
                else if (prec >= 140) return '#FFFF00';
                else if (prec >= 100) return '#FFC000';
                else if (prec >= 60) return '#FA7000';
                else return 'rgb(247,13,26)';
              ]]]
        label:
          - font-size: 18px
          - padding-top: px
          - position: absolute
          - bottom: 54%
        grid:
          - position: relative
        custom_fields:
          unit:
            - position: absolute
            - top: 73%
            - left: 31%
            - font-size: 11px
      custom_fields:
        unit: €/MWh
  delta:
    card:
      type: custom:button-card
      layout: icon_state
      entity: sensor.omie_delta
      show_name: false
      show_state: true
      icon: |
        [[[ 
          var delta=states['sensor.omie_delta'].state;
          if (delta <0) return 'mdi:arrow-down-bold-outline';
          if (delta >0) return 'mdi:arrow-up-bold-outline';
          else return 'mdi:arrow-right-bold-outline'
        ]]]
      styles:
        card:
          - border: none
          - background: transparent
          - width: 90px
        state:
          - font-size: 14px
        icon:
          - color: |
              [[[ 
                var delta=states['sensor.omie_delta'].state;
                if (delta <0) return 'rgb(247,13,26)';
                if (delta >0) return 'green';
                else return 'orange';
              ]]]
          - aspect-ratio: 1/1
          - width: 25px
          - padding-bottom: 2px
  hourly:
    card:
      type: custom:apexcharts-card
      card_mod:
        style: |
          ha-card {
            width: 400px;
            border: none;
            background: transparent
          }
      update_interval: 10m
      now:
        show: true
      span:
        end: day
      graph_span: 24h
      series:
        - entity: sensor.omie_spot_price_pt
          name: Hourly price
          yaxis_id: price
          stroke_width: 1
          type: column
          color: '#FA7000'
          group_by:
            func: last
            duration: 1h
          show:
            extremas: true
            legend_value: true
          data_generator: >
            return
            Object.entries(entity.attributes.today_hours).map(([dateString,
            price]) => [ new Date(dateString), price ])
      yaxis:
        - id: injeção
          max: 9
          opposite: true
          show: true
          decimals: 2
          apex_config:
            forceNiceScale: 'yes'
            labels:
              show: true
              style:
                colors: '#ffffff'
                fontSize: 10px
              offsetX: 0
              offsetY: 0
            axisBorder:
              show: false
              color: '#78909C'
        - id: price
          show: true
          decimals: 1
          apex_config:
            forceNiceScale: 'yes'
            labels:
              show: true
              formatter: |
                EVAL:function(value) {
                let text = parseFloat(value).toFixed(2);
                let result = "€" +text.replace(".", ",");
                return result;
                }
              style:
                colors: '#ffffff'
                fontSize: 10px
              offsetX: 0
              offsetY: 0
            axisBorder:
              show: false
              color: '#78909C'
      apex_config:
        tooltip:
          enabled: true
          shared: true
          followCursor: false
          intersect: false
          inverseOrder: false
          fillSeriesColor: true
          theme: false
          onDatasetHover:
            highlightDataSeries: false
          x:
            show: false
        legend:
          show: false
          position: top
        annotations:
          position: back
        chart:
          height: 250
          type: bar
        grid:
          show: true
          strokeDashArray: '0'
          borderColor: '#666666'


Copyright © 2017-. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade