openHAB 5.0 Release Discussion

First, I’d like to thank all of the maintainers, volunteers, and everyone for this release. Upgrade was very smooth from 4.3.5. I’m looking forward to digging into this release and fixing some things (lots of semantic issues - thankfully WARN - but need to be cleaned up), and I’m really looking forward to Python scripting and Z-Wave-JS. Thanks to all of you (it probably feels like a thankless job - but lots of us out here really appreciate it and should say it more often).

For those upgrading on a x86 system, hope this is valuable. FWIW, I’m running a full VM on Proxmox x86 and using openhabian.

Upgrade to Temurin first. Then upgrade the whole system (assuming you’re upgrading to stable). Then watch the WARN messages on boot (I’m still running fronttail, but my system is not exposed outside of a VPN).

Let it settle if there are a lot of issues, then restart openHAB via command line (systemctl reboot openhab).

Everything “just worked” afterward except a few non-core bindings, which I reinstalled. And I use @rlkoshak 's time of day state machine extensively (actually, two instances of it, but that gets complicated…), so after you upgrade, make sure you’re using the latest add-on and reinstall the template. After that, one moreverything was very smooth.

Again, thanks to all of the developers and the community. Really great stuff. Looking forward to all of the enhancements and changes. One of the smoothest releases yet, in my experience.

2 Likes

I was wondering about that. I’m also still on 4.3.5. Is it better to first upgrade to 4.3.6, or can I safely jump over that version, straight to 5.0.0?

Use the initialconfig option.

1 Like

No need to first upgrade to 4.3.6, it only includes a few backported bug fixes from 5.0.0, so you can directly go to 5.0.0

2 Likes

Thx for answering and the Link with “DNS”.

After “cleaning” I made a reboot.

This morning I tried again with the “cache-cleanng” and after that i made a “Shutdown” and switched off my RasPi for half an hour.
Then starting up again and the first message was again

2025-07-23 09:55:54.589 [INFO ] [org.openhab.core.Activator          ] - Starting openHAB 5.0.0 (Release Build)
2025-07-23 09:55:54.780 [INFO ] [core.karaf.internal.FeatureInstaller] - Some .kar files are not installed yet. Delaying add-on installation by 15s.
2025-07-23 09:55:58.088 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Time zone set to 'Europe/Berlin'.
....
2025-07-23 10:19:57.812 [INFO ] [e.automation.internal.RuleEngineImpl] - Rule engine started.
...

After that I do a restart with “sudo systemctl restart openhab” and then I got again

2025-07-23 10:35:52.374 [INFO ] [.thing.internal.GenericThingProvider] - No ThingHandlerFactory found for thing mqtt:topic:danny:liftoff (thing-type is mqtt:topic). Deferring initialization.
2025-07-23 10:35:52.375 [INFO ] [.thing.internal.GenericThingProvider] - No ThingHandlerFactory found for thing mqtt:topic:danny:rpi4bgb2 (thing-type is mqtt:topic). Deferring initialization.
2025-07-23 10:35:52.376 [INFO ] [.thing.internal.GenericThingProvider] - No ThingHandlerFactory found for thing mqtt:topic:danny:rpi3bplus (thing-type is mqtt:topic). Deferring initialization.
.......

No Warning in MainUI. All Things seem to be online ???!!!

Ok, thanks. Installed ‘Temurin 21’ and upgraded to OH5. It did start after reboot and seems to run with my given settings so far. I guess I could remove ‘OpenJDK 17 JRE’ now?

In the logs I can see some occasional warnings related to OH internal icons used in PaperUI. There haven’t been similar warnings in OH4.x before. Two of the blocks:

2025-07-23 11:10:38.709 [WARN ] [org.eclipse.jetty.server.HttpChannel] - /icon/battery
java.lang.IllegalStateException: ABORTED
        at org.eclipse.jetty.server.HttpChannelState.sendError(HttpChannelState.java:915) ~[?:?]
        at org.eclipse.jetty.server.Response.sendError(Response.java:473) ~[?:?]
        at org.openhab.core.ui.icon.internal.IconServlet.doGet(IconServlet.java:149) ~[?:?]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:497) ~[bundleFile:4.0.4]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:584) ~[bundleFile:4.0.4]
        at org.ops4j.pax.web.service.spi.servlet.OsgiInitializedServlet.service(OsgiInitializedServlet.java:102) ~[?:?]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[?:?]
        at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[?:?]
        at org.ops4j.pax.web.service.spi.servlet.OsgiFilterChain.doFilter(OsgiFilterChain.java:113) ~[?:?]
        at org.ops4j.pax.web.service.jetty.internal.PaxWebServletHandler.doHandle(PaxWebServletHandler.java:334) ~[?:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[?:?]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) ~[?:?]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[?:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[?:?]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[?:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[?:?]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[?:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[?:?]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[?:?]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[?:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[?:?]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[?:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[?:?]
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234) ~[?:?]
        at org.ops4j.pax.web.service.jetty.internal.PrioritizedHandlerCollection.handle(PrioritizedHandlerCollection.java:96) ~[?:?]
        at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:731) ~[?:?]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[?:?]
        at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[?:?]
        at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[?:?]
        at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) ~[?:?]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) ~[?:?]
        at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:439) ~[?:?]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:137) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.http2.HTTP2Connection.produce(HTTP2Connection.java:193) ~[?:?]
        at org.eclipse.jetty.http2.HTTP2Connection.onFillable(HTTP2Connection.java:148) ~[?:?]
        at org.eclipse.jetty.http2.HTTP2Connection$FillableCallback.succeeded(HTTP2Connection.java:371) ~[?:?]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) ~[?:?]
        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) ~[?:?]
        at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) ~[?:?]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
        at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[?:?]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[bundleFile:9.4.57.v20241219]
        at java.lang.Thread.run(Unknown Source) [?:?]
2025-07-23 11:11:30.012 [WARN ] [org.eclipse.jetty.server.HttpChannel] - /icon/humidity
java.lang.IllegalStateException: ABORTED
        at org.eclipse.jetty.server.HttpChannelState.sendError(HttpChannelState.java:915) ~[?:?]
        at org.eclipse.jetty.server.Response.sendError(Response.java:473) ~[?:?]
        at org.openhab.core.ui.icon.internal.IconServlet.doGet(IconServlet.java:149) ~[?:?]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:497) ~[bundleFile:4.0.4]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:584) ~[bundleFile:4.0.4]
        at org.ops4j.pax.web.service.spi.servlet.OsgiInitializedServlet.service(OsgiInitializedServlet.java:102) ~[?:?]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[?:?]
        at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[?:?]
        at org.ops4j.pax.web.service.spi.servlet.OsgiFilterChain.doFilter(OsgiFilterChain.java:113) ~[?:?]
        at org.ops4j.pax.web.service.jetty.internal.PaxWebServletHandler.doHandle(PaxWebServletHandler.java:334) ~[?:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[?:?]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) ~[?:?]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[?:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[?:?]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[?:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[?:?]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[?:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[?:?]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[?:?]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[?:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[?:?]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[?:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[?:?]
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234) ~[?:?]
        at org.ops4j.pax.web.service.jetty.internal.PrioritizedHandlerCollection.handle(PrioritizedHandlerCollection.java:96) ~[?:?]
        at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:731) ~[?:?]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[?:?]
        at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[?:?]
        at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[?:?]
        at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) ~[?:?]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) ~[?:?]
        at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:439) ~[?:?]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:137) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.http2.HTTP2Connection.produce(HTTP2Connection.java:193) ~[?:?]
        at org.eclipse.jetty.http2.HTTP2Connection.onFillable(HTTP2Connection.java:148) ~[?:?]
        at org.eclipse.jetty.http2.HTTP2Connection$FillableCallback.succeeded(HTTP2Connection.java:371) ~[?:?]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) ~[?:?]
        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) ~[?:?]
        at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) ~[?:?]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
        at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[?:?]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[bundleFile:9.4.57.v20241219]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[bundleFile:9.4.57.v20241219]
        at java.lang.Thread.run(Unknown Source) [?:?]

No warnings on Iconify or Framework7 icons.

Are the MQTT Things online now?
The log messages with deferring Thing initialization basically means openHAB is waiting for something before being able to initialize the Thing.
Do you have the openhab-addons package installed? (You will have .kar file in /usr/share/openhab/addons/ if you are on Linux and have them installed).

Do you use Main UI, or the mobile app when this happens? It would be great if you could pin down what you use in the moment this happens.

That’s because they aren’t loaded from the server, they are bundled inside Main UI.

It is MainUI per Browser, actually Firefox in my case. Cannot see warnings using and refreshing iOS App, but immediately if I refresh MainUI in the browser.

Yes. But all things (bindings) have this information in the log (after the second restart).

MainUI shows
grafik

The Directory shows:

hab4@raspi58:~ $ ls -alF /usr/share/openhab/addons
insgesamt 569948
drwxrwxr-x 2 openhab openhab      4096 22. Jul 16:16 ./
drwxrwxr-x 4 openhab openhab      4096 22. Jul 16:15 ../
-rw-r--r-- 1 openhab openhab 583607815 21. Jul 18:53 openhab-addons-5.0.0.kar
-rw-r--r-- 1 openhab openhab        70 21. Jul 18:52 README


There had been issues with Firefox in the past, don’t know if they still exist. Please give Chrome a try…

There are packages Java 21 JDK for arm32 available. Will Openhabian continue working on my old Pi2 when I install them?
For now, I have openhab and openhab-addons on hold.
Thx in adv.

openHAB 5 will drop support for 32-bit systems. This means you will need a 64-bit operating system to run openHAB 5.

I just use Firefox, since decades meanwhile, also with OH and as mentioned there were no similar warnings until today after OH5 upgrade. Down the line its obviously just a warning no error, I just posted the findings directly after OH5 upgrade.

Tried with MS Edge (also Chrome-based) and cannot reproduce those warnings.

I thought, the reason for that was the missing Java 21 package…

Technically seen openHAB should start up on 32-bit, but it is not tested on it anymore and you must not expect support or help when running into issues. Several add-ons (e.g. everything GraalVM based, i.e. JavaScript Scripting, Python Scripting, MQTT Home Assistant) require 64-bit now.
Given a Pi 2 is relatively old, I would suggest upgrading to a Pi 4 or even 5, they will be so much faster, your user experience will be way better.

There are no certified 32-bit Java 21 JREs from well-known vendors (OpenEMS community doesn’t count as a real JVM vendor for me). With no certified 32-bit JRE from any of the major vendors available, we decided to officially drop 32-bit support for openHAB 5.0, allowing us to start using technologies requiring 64-bit (e.g. recent GraalVM versions).

1 Like

Congrats. Anyone seeing any issues with Insteon? Specifically ItemCommandEvents not matching ItemStatePredictedEvent?

For example, when turning off a light via Office_Overhead_Lights.sendCommand(OFF) the light doesn’t turn off, and in the logs I see:

==> /var/log/openhab/events.log <==
2025-07-23 04:38:45.970 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'Office_Overhead_Lights' received command 0
2025-07-23 04:38:45.970 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Office_Overhead_Lights' predicted to become 100
==> /var/log/openhab/events.log <==
2025-07-23 04:46:18.618 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'Office_Overhead_Lights' received command OFF
2025-07-23 04:46:18.618 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Office_Overhead_Lights' predicted to become 100

This was working in 4.3.6 previously. The same logic works for my zwave lights, just not these Insteons. I get events from the lights when I do local control so I think the Insteon communication is fine, it’s almost like something in the local state of the item is messed up.

For what it’s worth, here’s what the item definition looks like:

Dimmer              Office_Overhead_Lights  "Office Overhead Lights"         <wallswitch>  (Office) ["WallSwitch"]           { channel="insteon:device:eda00bd4bb:296ebb:dimmer", ga="Light" }

I’m not getting any warnings / errors loading the default.items file, so I suspect that it hasn’t changed in 5, but I haven’t researched that yet so I’ll do that.

Can you create a GitHub issue and provide debug log information for the Insteon binding? Maybe @jsetton can help you out

1 Like

Thanks for clarification :+1:

Seriously, how do you expect anyone to answer that?
Just try yourself. Manually install that pkg, then install openhab from the menu and let us know.

Clearing the cache at this point likely undoes much of the work you were patient for in the first step. Have you ever tried without the cache clearing?

It works for me to just wait and then restart. And in fact it seems to be OK if I just wait except that any system started rules I have which tried to trigger before the JS Scripting add-on was installed will not trigger again. So I just restart to make sure they all get a chance to run.

That’s the wonderful thing about templates. You can run any number of copies of the template with different configurations. But there really hasn’t been any changes to the Time State Machine template for a while so reinstalling may not have been necessary, You can always tell though by looking at the first line in the script action of your instantiated rule. That shows the version number of the template. If it’s behind what the marketplace posting says under the change log then you need to upgrade. NOTE: this is for my templates only.

I do want to point out the new feature in OH 5 that will let you regenerate rules based on templates without needing to remove and recreate the rules like we used to. This way you can just remove and reinstall the template to pick up the new version, select the rule or rules based off the template and click “regenerate” to pick up the changes. It will remember your properties. If you do this with only one rule you will have a chance to change the properties.

However, the reason I bring this up is that the regenerate only works for rules created from templates after upgrading to OH 5. So even if there are no changes to the template on the marketplace, it might be worth recreating all your rules so that when there are changes it will be easier. If you don’t remember what you set for the properties, you can open the code tab and see them in the “configuration” section.

Rules that can be regenerated are marked with an orange tag.

Yes

A Pi 2 likely doesn’t have enough RAM to run OH now. It was marginal for OH 2 and the RAM requirements for OH has only increased over time.