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!
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.
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.




