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

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'

Onde está entity: sensor.omie_spot_price_pt penso que é só entity: sensor.omie_spot_price_pt junto com attribute: today_average.

Bem, agora ainda ficou pior :man_facepalming: :grin:
Desinstalei e voltei a instalar a integração omie , agora aparecem 4 entidades e antes ainda apareciam 8.
ainda eram restos da versão 0.0.6 :grinning_face_with_smiling_eyes:

omie2

Não usas o HACS? :thinking:

Esse sensor sensor.omie_spot_price_pt_tomorrow já não existe há bastante tempo, tens antes o atributo tomorrow_average directamente no sensor.omie_spot_price_pt. Experimenta clicar no sensor para ver os atributos que estão disponíveis.

Bom dia,
Já está resolvido. Com ajuda do @Thy_Hunter , ficou a funcionar.
@luuuis, sim eu sabia que os sensores tinham mudado, mas por nabice :grin: minha, não chegava lá.
Ainda tenho muito que aprender, mas vamos andando devagar.
Obrigado :+1:

Boas a todos.
Eu também ainda estava a usar a versão 0.0.6, pois tinha já uma data de template sensors baseados nos sensores anteriores e não me dei ao trabalho…agora fui obrigado a atualizar! :joy:
Além disso também tinha um problema no HACS que não me permitia fazer atualizações, já resolvido entretanto, então instalava tudo manualmente.

Mas com esta atualização, não estou a conseguir ultrapassar uma questão:

Antes a lista de preços horários não tinha “datetime” (era [107, 110, 99…]), então eu tinha uma notificação a disparar ao final do dia com os sensores de máximo e mínimo para o dia seguinte.
Este é o caso do máximo

{% set sensor = [
  (((((((state_attr('sensor.omie_spot_price_pt', 'tomorrow_hours')|max)+14) *1.15)  -12.1)*1.23))/1000)
  ]
%}
{{ (sensor|max) | round(3) }}

Como os novos sensores têm então a “datetime”, os sensores já não estão a funcionar.
image

Alguém me consegue ajudar a retirar os valores dos preços e fazer uma lista apenas com esses valores para depois conseguir então extrair o máx e min?

Muito obrigado!!
AL

Basta descartar a chave do dict, tens aqui um exemplo:

{{ (state_attr('sensor.omie_spot_price_pt', 'today_hours').values()|list) }}

Em vez do list podes usar logo max, etc.

Como sempre, resolvido!

Como posso pagar-te um café?

Obrigado!

1 Curtiu

Bem, talvez tenha festejado cedo de mais.
Para o atributo “tomorrow_hours” dá erro.

TypeError: ‘>’ not supported between instances of ‘NoneType’ and ‘float’ .

Terá certamente a ver com o facto da última hora estar null.
Já tentei retirar essa última hora da lista produzida, mas não consigo. :see_no_evil:

Passei a notificação para depois das 0h e assim uso o atributo “today_hours”, mas agradeço se me ensinares mais uma.

Obrigado!
AL

Sim é isso, é preciso ignorar esse null.

{{ state_attr('sensor.omie_spot_price_pt', 'tomorrow_hours').values()|map('float', 0)|max }}
{{ state_attr('sensor.omie_spot_price_pt', 'tomorrow_hours').values()|map('float', 999)|min }}

Perfeito!

Obrigado novamente
AL

Olá a todos,

Podem ajudar-me com a syntaxe para obter o valor da hora x ? - Ex. Valor ás 11H de amanhã

Obrigado

O mais simples é assim.

{{ (state_attr('sensor.omie_spot_price_pt', 'tomorrow_hours').values()|list)[11] }}

O único senão é que nos dias em que muda a hora, duas vezes por ano, vai dar resultado da hora seguinte ou anterior. Para que fim queres sacar o valor de uma hora específica?


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


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