Tibber Binding

This sounds like a really good idea! With energy field it should also be possible to identify negative energy prices despite the total price is positive.

So at the end it’ll end up into:

  • price#total - price to pay to Tibber
  • price#spot - pure energy market price
  • price#tax - tax and extra costs like described in Tibber API

All provided as Timeseries. Correct?

I’ll try to bring this in!

Yes, the negative spot price is the reason I want this data.
Thanks!

Please check binding from this post or install it via Marketplace after deinstall official binding. No need to destroy item or thing!

FYI

image

Thanks, yes works perfect. :+1:

Hey,

since upgrading to openHAB 5.0 my tibber integration won’t work correct. I’ve recreated all items - but the spot-price channel only has value null.

So i’ve just installed the oh5 version from marketplaces. All values (including total price, tax and price level) are working fine, but spot-prices and average price are only showing null.

Nothing inside the log files (i don’t even have the possibility to change the log level for tibber binding within the settings, is this correct?). All items from the price-group are configured within persistence configuration to store forecast values.

Any idea, what might be wrong here?

BR

Sönke

Sorry, missed your post :frowning:

Do you see something in /var/log/openhab/events.log like
2025-08-29 13:00:32.208 [INFO ] [hab.event.ItemTimeSeriesUpdatedEvent] - Item 'Tibber_API_Spot_Price' updated timeseries with 48 values.

If yes the data is there. Which persistence do you use to store forecast data and can you show your config?

Hi @weymann
just a heads up, I experienced the exact same thing as Sönke. What I did this morning was:

in short:

  1. unlink all items from the binding
  2. remove the thing
  3. remove the (core) Tibber binding
  4. install the (core) Tibber binding
  5. linked all (existing) items again

This resulted at first in the same thing happening: all live-items got updated, but spot-price, level and average24h stayed the same value, even though there were the “shall process timeseries” entries in the events.log (see the hidden details in my above post).
After a while and after 13:00h it reverted to normal and all three TimeSeries items got updated as expected. Nothing really in the logs (even though I set the binding to TRACE).

Oh. I just found out, that it already did change at 12:00h, sorry wasn’t aware of that. that happens to be the next full hour after I did those remove und re-install things.

2025-08-29 12:00:00.034 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'TIB_Current_Total_Price' changed from 0.1711 EUR/kWh to 0.2433 EUR/kWh
2025-08-29 12:00:00.035 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ForecastSolar_Energy_Forecast' changed from 5.6259999999999994 kWh to 7.968999999999999 kWh
2025-08-29 12:00:00.036 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ForecastSolar_Power_Forecast' changed from 2226 W to 2428 W
2025-08-29 12:00:00.037 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'TIB_SpotPrices' changed from 0.1711 EUR/kWh to 0.2433 EUR/kWh
2025-08-29 12:00:00.038 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'TIB_SpotPrices' changed from 0.1711 EUR/kWh to 0.2433 EUR/kWh

I do have both “TIB_Current_Total_Price” and “TIB_SpotPrices” linked to the #spotPrice channel. But “TIB_SpotPrices” changed value two times within a millisecond. Perhaps that’s a hint?

But then again, I just also found out, that’s happening with the ForecastSolar binding (also the core 5.0.1 and not your Marketplace one! :wink: ) also:

2025-08-29 14:00:00.094 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ForecastSolar_Power_Forecast' changed from 2469 W to 3148 W
2025-08-29 14:00:00.095 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ForecastSolar_Power_Forecast' changed from 2469 W to 3148 W
2025-08-29 14:00:00.095 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'TIB_Current_Total_Price' changed from 0.2272 EUR/kWh to 0.234 EUR/kWh
2025-08-29 14:00:00.095 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'TIB_Average24h' changed from 0.28890243055555553 EUR/kWh to 0.28870833333333334 EUR/kWh
2025-08-29 14:00:00.095 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'TIB_Current_Total_Price' changed from 0.2272 EUR/kWh to 0.234 EUR/kWh

I’m quite sensitive regarding TimeSeries because I see many problems during setup, but if it runs, it runs!

I cannot state a root cause yet but I assume the use case and it gets into technical details

  • Tibber thing (or other thing providing forecast) is created
  • Itens are attached e.g. add equipment to model and stay null but binding sends forecast to channel (not item) for 100%, I’m sure!
    • Mostly during 1st setup the items are not connected to the right persistence forecast strategy in beforehand.
      Just my guess, I know I’ve done that plenty of times!
    • So after guidance items are attached to the correct persistence strategy
      • now the persistence is correct but items still stay null.
        Of couse: the new attached persistence hasn’t received any data yet!
      • the binding itsself, which is just updating channels, not items isn’t aware of any item persistence changes
        • due to the fact TIbber is updating TimeSeries once per day you’ll stay a long time with null items

@jlaur We discussed several times regarding update strategy. Do you think the above analysis is correct?

First: thanks for your support!

To be sure i’ve deleted and re-created all items and checked the log.

Result.

2025-08-30 21:18:30.563 [INFO ] [hab.event.ItemTimeSeriesUpdatedEvent] - Item ‘Tibber_API_Total_Price’ updated timeseries with 48 values.

but there is no log entry at all containing Tibber_API_Spot_Prices (i’ve attached an events.log file).

All values seems good, only the spot prices do not work.

I’m using InfluxDB, here is the persistence-config:

Tibber Binding Version

247 │ Active │ 80 │ 4.3.8.202508221357 │ openHAB Add-ons :: Bundles :: Tibber Binding

Influx Persistence config
configurations:
  - items:
      - Regenmesser*
      - Wetterstation_Draussen*
      - Wetterstation_Innen*
      - Windmesser*
    strategies:
      - everyChange
      - everyMinute
      - everyHour
      - everyDay
    filters: []
  - items:
      - EG__Arbeitszimmer__Heizung_Actual_Temperature
      - EG__Arbeitszimmer__Heizung_Set_Point_Temperature
      - EG__Esszimmer__Heizung_Actual_Temperature
      - EG__Esszimmer__Heizung_Set_Point_Temperature
      - EG__Flur__Heizung_Actual_Temperature
      - EG__Flur__Heizung_Set_Point_Temperature
      - EG__Kuche__Heizung_Actual_Temperature
      - EG__Kuche__Heizung_Set_Point_Temperature
      - EG__Wohnzimmer__Heizung_Actual_Temperature
      - EG__Wohnzimmer__Heizung_Set_Point_Temperature
      - OG__Ankleide__Heizung_Actual_Temperature
      - OG__Ankleide__Heizung_Set_Point_Temperature
      - OG__Bad__Heizung_Actual_Temperature
      - OG__Bad__Heizung_Set_Point_Temperature
      - OG__Kinderzimmer__Heizung_Actual_Temperature
      - OG__Kinderzimmer__Heizung_Set_Point_Temperature
      - OG__Schlafzimmer__Heizung_Actual_Temperature
      - OG__Schlafzimmer__Heizung_Set_Point_Temperature
    strategies:
      - everyChange
      - everyMinute
      - everyHour
      - everyDay
    filters: []
  - items:
      - OG__Treppenhaus__Steckdose_Current
      - OG__Treppenhaus__Steckdose_Power
    strategies:
      - everyChange
      - everyMinute
      - everyHour
      - everyDay
    filters: []
  - items:
      - Sonnendaten_Azimut
      - Sonnendaten_Hohenwinkel
      - Sonnendaten_Sonnenphase
    strategies:
      - everyChange
    filters: []
  - items:
      - Weihnachtsbaum*
    strategies:
      - everyChange
    filters: []
  - items:
      - Solcast_Hauptdach*
      - Sungrow_Inverter*
    strategies:
      - everyChange
      - everyUpdate
      - forecast
      - everyMinute
      - everyHour
      - everyDay
    filters: []
  - items:
      - Tibber_API*
    strategies:
      - everyChange
      - everyUpdate
      - forecast
      - everyHour
      - everyDay
    filters: []
aliases: {}
cronStrategies:
  - name: everyMinute
    cronExpression: 0 * * ? * *
  - name: everyHour
    cronExpression: 0 0 * * * ?
  - name: everyDay
    cronExpression: 0 0 0 * * ?
defaultStrategies:
  - everyChange
  - everyUpdate
  - everyMinute
  - everyHour
  - everyDay
thresholdFilters: []
timeFilters: []
equalsFilters: []
includeFilters: []

Tibber-API is a group item, generated by add equipment function:

label: Tibber API
type: Group
icon: ""
groupNames: []
tags:
  - WebService
groupType: None
function: None
System information
runtimeInfo:
  version: 5.0.1
  buildString: Release Build
locale: de-DE
systemInfo:
  configFolder: /openhab/conf
  userdataFolder: /openhab/userdata
  logFolder: /openhab/userdata/logs
  javaVersion: 21.0.8
  javaVendor: Debian
  osName: Linux
  osVersion: 6.8.0-64-generic
  osArchitecture: amd64
  availableProcessors: 4
  freeMemory: 482796680
  totalMemory: 926941184
  uptime: 351731
  startLevel: 70
addons:
  - automation-jsscripting
  - binding-astro
  - binding-avmfritz
  - binding-denonmarantz
  - binding-deutschebahn
  - binding-ecovacs
  - binding-exec
  - binding-heos
  - binding-homematic
  - binding-icalendar
  - binding-mielecloud
  - binding-modbus
  - binding-mqtt
  - binding-netatmo
  - binding-network
  - binding-ntp
  - binding-solarforecast
  - binding-tankerkoenig
  - binding-tradfri
  - persistence-influxdb
  - persistence-rrd4j
  - transformation-jsonpath
  - transformation-map
  - transformation-regex
  - transformation-scale
clientInfo:
  device:
    ios: false
    android: false
    androidChrome: false
    desktop: true
    iphone: false
    ipod: false
    ipad: false
    edge: false
    ie: false
    firefox: false
    macos: false
    windows: true
    cordova: false
    phonegap: false
    electron: false
    nwjs: false
    webView: false
    webview: false
    standalone: false
    os: windows
    pixelRatio: 1.5
    prefersColorScheme: light
  isSecureContext: true
  locationbarVisible: true
  menubarVisible: true
  navigator:
    cookieEnabled: true
    deviceMemory: 8
    hardwareConcurrency: 12
    language: de-DE
    languages:
      - de-DE
      - de
      - en-US
      - en
    onLine: true
    platform: Win32
  screen:
    width: 2560
    height: 1440
    colorDepth: 24
  support:
    touch: false
    pointerEvents: true
    observer: true
    passiveListener: true
    gestures: false
    intersectionObserver: true
  themeOptions:
    dark: light
    filled: true
    pageTransitionAnimation: default
    bars: light
    homeNavbar: default
    homeBackground: default
    expandableCardAnimation: default
    blocklyRenderer: null
  userAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
    like Gecko) Chrome/139.0.0.0 Safari/537.36
timestamp: 2025-08-30T19:27:34.085Z

Let me know, if you need any further information.

events.log (556.8 KB)

Config looks good and as you mentioned total,tax and other items are receiving timeseries are receiving information.

2025-08-30 21:00:42.393 [INFO ] [openhab.event.ItemTimeSeriesEvent   ] - Item 'Tibber_API_Total_Price' shall process timeseries with 48 values.
2025-08-30 21:00:42.394 [INFO ] [openhab.event.ItemTimeSeriesEvent   ] - Item 'Tibber_API_Tax' shall process timeseries with 48 values.
2025-08-30 21:00:42.394 [INFO ] [openhab.event.ItemTimeSeriesEvent   ] - Item 'Tibber_Infos_Price_Level' shall process timeseries with 48 values.
2025-08-30 21:00:42.398 [INFO ] [hab.event.ItemTimeSeriesUpdatedEvent] - Item 'Tibber_API_Total_Price' updated timeseries with 48 values.
2025-08-30 21:00:42.401 [INFO ] [hab.event.ItemTimeSeriesUpdatedEvent] - Item 'Tibber_API_Tax' updated timeseries with 48 values.
2025-08-30 21:00:42.401 [INFO ] [hab.event.ItemTimeSeriesUpdatedEvent] - Item 'Tibber_Infos_Price_Level' updated timeseries with 48 values.
2025-08-30 21:00:42.416 [INFO ] [openhab.event.ItemTimeSeriesEvent   ] - Item 'Tibber_Infos_Average_24h' shall process timeseries with 288 values.
2025-08-30 21:00:42.425 [INFO ] [hab.event.ItemTimeSeriesUpdatedEvent] - Item 'Tibber_Infos_Average_24h' updated timeseries with 288 values.

Let’s check your spot price items:

  1. is it attached to the Tibber API group and
  2. connected to the channel?

I’ve used the “Add Equiptment to Model” function to create the items and i think it looks all good :slight_smile:

Yes, looks good. Thanks to your pictures I think I know where the problem is.


There are 2 channels spot-price and spot-prices
During the official review openHAB maintainers and I discussed a lot about channel naming. In OH5 current release binding contains spot-price which delivers the total price and this is misleading as stated in community post.
Finally we agreed to stay compatible and introduce new channels.

Long story short:

  • Please delete thing
  • uninstall tibber binding
  • install version from Marketplace again - it contains now the final version which will be released with OH5.1
  • Channels shall look like below picture

Thanks a lot!

Seems to work now, i was just a few days behind the current release

Old247 │ Active │  80 │ 4.3.8.202508221357    │ openHAB Add-ons :: Bundles :: Tibber Binding
new364 │ Active │  80 │ 4.3.8.202508312018    │ openHAB Add-ons :: Bundles :: Tibber Binding

Quick question: My tibber binding sometimes stops working and only starts working again (for a couple of days) when I deactivate and then activate the tibber API-thing:

The topic was also mentioned here, but there wasn’t a solution (but merely a workaround) listed for this problem.

Does anyone know what to do?

never had that issue, since Bernd took over the developement of the binding with 5.x. What version of openHAB and binding do you run?

I’m on openHAB 5.0.1.

But now that you mention it: Do I have the wrong binding installed?

OH5.0.1 (the left picture) is fine.

The right picture is the Marketplace binding containing additional changes requested by community posts

Your graph is showing gaps int the live measurements which is protected with a watchdog which constantly checks the websocket connection.

Please enable trace logging to analyze what’s going wrong.

Thanks for your response. Will do / just activated trace.

What’s odd: The connection appears to be coming back, even if I don’t de-/reactivate the Thing (as seen in the most recent gap in the data: I did not de-/reactivate the Thing).

Will report back once I have more data.

Hi guys,

I have stopped my Tibber contract back in February and was still receiving live data without any problem. at some point in summer, my Tibber binding was stopping to receive the live data.

I reinstalled the binding, generated another token, tried the Tibber oh 5 binding and all of these without success.

from what ai helped me so far it seems that the binding fails due to some contract/subscription check. but so I am wondering that it was working for quite a long time without the contract/subscription and suddenly not any longer.

I am able to get the live data via tibbers API page and also another app (EHW+) is getting the data without any problems.

would someone help me, I would highly appreciate!

I still got my contract with Tibber, so I can’t test. But I think, the token for using the Tibber API has to be renewed once in a while. The OH-token obviously expired and the one for your other App ist still valid (but should also expire soon).
My advice would be to use a “offline” solution and replace the Tibber Pulse with an IR-reader. There’s a bunch of ootb IR-Reader available for digital meters.
have a look at the SmartMeter Binding:

not sure, if you’re german or can read german, but I did have this one before I had to replace it with the Tibber Pulse: hardware:controllers:ir-schreib-lesekopf [wiki.volkszaehler.org]. It’s much cheaper and works perfectly fine with standard eHZ or the likes.