Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gráfico Apex não está a carregar com a lista de atributos tomorrow_hours #41

Closed
JeffersM1 opened this issue Nov 11, 2023 · 4 comments
Labels
question User questions, doubts, clarifications.

Comments

@JeffersM1
Copy link

@luuuis Estou a ter um problema com um gráfico Apex que não carrega. Estou a tentar utilizar este gráfico ApexChart:https://github.com/luuuis/hass_omie/wiki/ApexChartsTodayHourlyValues

Também tentei utilizar os dois geradores de dados do exemplo emhttps://github.com/luuuis/hass_omie/wiki/ApexChartsYesterdayTodayTomorrow mas continua a ser o mesmo

data_generator: >
          return ((hs) => Object.keys(hs).map((dt) => [ new Date(dt), hs[dt]
          ]))(entity.attributes.tomorrow_hours)

e

data_generator: |
          return ((hours) => {
            return Object.keys(hours)
                         .map((dateString) => [ new Date(dateString), hours[dateString]])
                         .map(([date, price]) => [ date, (date.getHours() > 6 && date.getHours() < 21) ? price : null])
          })(entity.attributes.tomorrow_hours)

Estou a tentar criar uma tabela de preços com os atributos tomorrow_hours. Trata-se de um duplicado do gráfico Apex today_hours, em que substituí today_hours por tomorrow_hours no script yaml. Tanto o today_hours como o tomorrow_hours são produzidos a partir do mesmo sensor. O gráfico today_hours do Apex funciona sem qualquer problema e o gráfico tem o seguinte aspeto:
image

Este é o código yaml para o cartão:

type: custom:apexcharts-card
update_interval: 30m
now:
  show: true
span:
  start: day
graph_span: 1d
series:
  - entity: sensor.coopernico_base_tarifario_tri_horario
    name: Coopernico Tri Horario
    stroke_width: 1
    type: line
    curve: stepline
    group_by:
      func: avg
      duration: 30m
    show:
      extremas: true
      legend_value: false
    data_generator: >
      return Object.entries(entity.attributes.tomorrow_hours).map(([dateString,
      price]) => [ new Date(dateString), price ])
yaxis:
  - id: price
    align_to: 10

Este é o aspeto da lista de atributos:
image

Este é o aspeto do gráfico Apex today_hours:
image

O que é que me está a escapar?

@luuuis
Copy link
Owner

luuuis commented Nov 11, 2023

O que é que me está a escapar?

Estás a visualizar o gráfico do dia hoje o qual alimentaste com dados que dizem respeito a amanhã. 🙃

Vê bem a configuração span dos vários gráficos: ApexChartsYesterdayTodayTomorrow.

@luuuis luuuis added the question User questions, doubts, clarifications. label Nov 11, 2023
@JeffersM1
Copy link
Author

Tive de efetuar uma pequena alteração para que o gráfico Apex de tomorrow funcionasse:
antes:

span:
  start: day

agora:

span:
  start: day
  offset: +1d

image

Agora só preciso de descobrir como escalar o preço no gráfico em vez de o fazer no modelo de tarifa.

series:
  - entity: sensor.coopernico_base_tarifario_tri_horario
    name: Coopernico Tri Horario
    unit: €/kWh
    float_precision: 5
    transform: return x / 1000; # Pensei que esta linha iria escalar o preço do sensor
    stroke_width: 2
    type: line
    curve: stepline
    group_by:
      func: avg
      duration: 30m
    show:
      extremas: true
      legend_value: false
    data_generator: >
      return Object.entries(entity.attributes.today_hours).map(([dateString,
      price]) => [ new Date(dateString), price ])

@luuuis
Copy link
Owner

luuuis commented Nov 14, 2023

A documentação do apexcharts-card é muito completa e explica porque é que não está a ser usado o transform.

apexcharts-card: 📈 A Lovelace card to display advanced graphs and charts based on ApexChartsJS for Home Assistant 2023-11-14 09-41-30
https://github.com/RomRider/apexcharts-card#data-processing-steps

Neste caso, qualquer manipulação de dados que seja necessária podes fazer no data_generator.

    data_generator: >
      return Object.entries(entity.attributes.today_hours).map(([dateString,
      price]) => [ new Date(dateString), price / 1000 ])

@JeffersM1
Copy link
Author

Sim, isso resolveu o problema. Obrigado.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question User questions, doubts, clarifications.
Projects
None yet
Development

No branches or pull requests

2 participants