Entsoe Binding

I see the same issue. Last day with prices is Friday Feb 13th. I’ve written to entsoe support team if this is a known problem.

Works again!

1 Like

Looks to me more like an additional price provider binding besides Tibber, Awattar, Entsoe, …

Data is coming from energy-charts.info stated in the attribution.
I love predictions to get an idea how future prices look like even after day-ahead. I’m every time sceptical with an AI or ML tag. In this case in general I can imagine to predict the price based on renewable shares, which are also provided by Frauenhofer Institute. Would like to have more details here but for sure this is the Intellectual Property of the provider.

@ollo

Here you go

I put both services in one binding because they rely on the same datasource. Normal day-ahead is available and pricing forecast if you’ve a token.
Of course it’s alpha stageand feedback is welcome!

@ weymann, I think there is a small glitch in the calculation of hourly prices at 23-24. For example, the price at 23-24 today is 7.64c/kWh in Finland (this includes the VAT and commission of the electricity provider) and Entsoe gives a value of 6.077c/kWh. I think the bug is in the calculation of the average value.

Entsoe comes with net prices without any VAT or other expenses.

I’ve following 15 minutes pricing for FI, (21:00 UTC = 23:00 FI time)

	"2026-02-21T21:00:00Z": "0.07839",
	"2026-02-21T21:15:00Z": "0.06279",
	"2026-02-21T21:30:00Z": "0.04694",
	"2026-02-21T21:45:00Z": "0.04094",

After 60 min averaging

	"2026-02-21T21:00:00Z": "0.057265",

This is also reflected in my graph (22:00 DE time = 23:00 FI time)

@weymann, many thanks for checking this. I’m using a widget below:

uid: Entso_Spot_hinnat_akut
tags: []
props:
  parameters:
    - context: item
      description: Main toggle item (use for single toggle or as main switch for group)
      label: Item
      name: item
      required: false
      type: TEXT
    - context: item
      description: SPOT hinta nyt
      label: Item2
      name: item2
      required: false
      type: TEXT
    - context: text
      default: You forgot to set a card title
      description: Pretty card label
      label: Title
      name: title
      required: false
      type: TEXT
  parameterGroups: []
timestamp: Feb 4, 2026, 6:13:38 AM
component: f7-card
config:
  class:
    - padding-bottom
  title: =props.title
slots:
  default:
    - component: f7-row
      config:
        class:
          - margin-top
      slots:
        default:
          - component: f7-col
            config:
              style:
                align-items: left
                display: flex
                flex-direction: column
                flex-grow: 1
                left: -20px
            slots:
              default:
                - component: f7-block
                  config:
                    style:
                      align-items: center
                      display: flex
                      flex-direction: column
                      height: 4px
                      justify-content: center
                      margin-top: 0
                      width: 110px
                  slots:
                    default:
                      - component: Label
                        config:
                          style:
                            color: black
                            font-size: 15px
                            text-align: center
                            white-space: wrap
                            width: 100px
                          text: ="Hinta nyt:"
                      - component: Label
                        config:
                          style:
                            color: black
                            font-size: 15px
                            text-align: center
                            white-space: wrap
                            width: 100px
                          text: =items[props.item2].displayState
          - component: div
            config:
              content: empty row
              style:
                color: white
          - component: f7-col
            config:
              width: 75
            slots:
              default:
                - component: oh-chart
                  config:
                    chartType: day
                    includeLabels: true
                    label: Kulutus
                  slots:
                    dataZoom:
                      - component: oh-chart-datazoom
                        config:
                          type: inside
                    grid:
                      - component: oh-chart-grid
                        config:
                          bottom: 60
                          containLabel: false
                          height: 50%
                          left: "40"
                          width: 70%
                    legend:
                      - component: oh-chart-legend
                        config:
                          bottom: 3
                          type: scroll
                    series:
                      - component: oh-aggregate-series
                        config:
                          aggregationFunction: last
                          dimension1: hour
                          gridIndex: 0
                          item: =props.item
                          label:
                            formatter: =v=>Number.parseFloat(v.data[1]).toFixed(3)
                            show: false
                          markLine:
                            data:
                              - lineStyle:
                                  color: red
                                  type: solid
                                name: hintaraja
                                yAxis: = (Number.parseFloat(items.Ouflex_AXL_RK_Reg_934.state).toFixed(3))
                              - lineStyle:
                                  color: blue
                                  type: solid
                                name: keskiarvo
                                type: average
                          markPoint:
                            data:
                              - itemStyle:
                                  color: green
                                name: min
                                type: min
                              - formatter: =v=>Number.parseFloat(v.Ouflex_AXL_RK_Reg_934).toFixed(3)
                                itemStyle:
                                  color: red
                                name: max
                                type: max
                              - itemStyle:
                                  color: red
                                name: keskiarvo
                              - formatter: =v=> (Number.parseFloat(items.Ouflex_AXL_RK_Reg_934.state))
                          service: influxdb
                          step: end
                          type: bar
                          xAxisIndex: 0
                          yAxisIndex: 0
                    tooltip:
                      - component: oh-chart-tooltip
                        config:
                          action: analyzer
                          actionAnalyzerChartType: day
                          actionAnalyzerItems:
                            - props.item
                          aggregationFunction: last
                          presetFeatures:
                            - dataZoom
                          right: right
                          show: true
                          top: bottom
                    visualMap:
                      - component: oh-chart-visualmap
                        config:
                          pieces:
                            - color: rgb( 3, 176, 74)
                              max: =Number.parseFloat(items.Ouflex_AXL_RK_Reg_934.state)
                              min: -10
                            - color: rgb( 253, 75, 66)
                              max: 800
                              min: =Number.parseFloat(items.Ouflex_AXL_RK_Reg_934.state)
                          show: false
                          type: piecewise
                    xAxis:
                      - component: oh-category-axis
                        config:
                          categoryType: day
                          gridIndex: 0
                          monthFormat: default
                          name: Aika (h)
                          nameGap: 25
                          nameLocation: center
                          weekdayFormat: default
                    yAxis:
                      - component: oh-value-axis
                        config:
                          gridIndex: 0
                          name: Hinta (snt/kWh)
                          nameGap: 25
                          nameLocation: center

Somewhat strange situation because all the other hourly prices are correct but not the last one (23-24). If I change “last” to “first” in row 115 then the first hour (0-1) is wrong. I don’t understand what is causing this error. The widget for today is shown below:

The bars in green show the hours when I am charging up my batteries. The price for 23-24 is 9.591c/kWh whereas it should be 9.74c/kWh so something is wrong. These prices include the VAT 25.5% and the commission of my electricity provider (0.456c/kWh). I use influxDB and in my influxdb.persist file I have a line “Dayahead_prices_Spot_Price : strategy = forecast”

EDIT: I just looked at the graph for yesterday and now it shows the correct value (7.641c/kWh) for hour 23-24. Yesterday when I made my post it showed wrong value (6.077c/kWh). Really weird.

What do you want to aggregate?
As far as I can see the widget shall only show the item state values without any aggregation.
Try oh-time-series instead of oh-aggregate-series.

OK, thanks for the tip. It seems that with oh-time-series I don’t get anything in my chart. I need to investigate my widget more carefully.