openHAB 4.1 Release discussion

This topic can be used to discuss problems/experiences/questions on the openHAB 4.1 release as announced in this topic.


Many thanks to the team for the new release.
Just upgraded my integration system from 4.1.0-RC1-2 and my production system from 4.0.4 to 4.1.0.
Everything went smooth and without any issue so far.

Great work!!!


Congratulations to all for the great work and keeping on schedule!

Now I’m even further behind. I’m assuming my upgrade path is now 3.4.5 to 4.0 and then 4.0 to 4.1?

I think, that would be best.
Not knowing on which system you’re running. Be aware that you need Java version >17 for OH 4.0 and greater

Thanks to the team for another release.
I made the upgrade today on windows system from 4.0.4 to 4.1 and everything its looking good, But i think every time that i visit the main ui i get foul of this errors:
2023-12-23 10:22:58.852 [ERROR] [al.ChannelCommandDescriptionProvider] - Dynamic command description matches original command description. DynamicCommandDescriptionProvider implementations must never return the original command description. class org.openhab.core.internal.types.CommandDescriptionImpl has to be fixed.
First time i see this error on my log file.


I guess directly upgrading to 4.1 would work as well, but the safest possible way is of course to make the step with 4.0.x between.
Don’t forget you need Java 17! This might also require you to upgrade your OS, which can be quite tricky sometimes, so in case it wouldn’t be a ton of work, I’d consider to reinstall my openHAB server. If you are on openHABian, that’s fairly easy if you only run openHAB on it.


also a huge thank you from my side. Very smooth update from 4.0 to 4.1.

My whole setup has files based configurations and always starts with a fresh container.

During the first startups it took a while until all addons was downloaded. So in this moment I was thinking that something went wrong, because there was not log messages and no cpu load for at least 2-3 minutes. After this time I got some exceptions about history items called with a wrong item object (I guess this was related to a not installed persistence) and also some other exceptions about not available transform services.

After some additional restarts, finally it was starting without any error and runs now very stable.

The only thing I had to change was the usage of the pushover action method which had an additional mandatory parameter now.

so, again. HUGE THANK YOU TO ALL CONTRIBUTORS :slight_smile:


That’s unintended. Which method, and how does the usage look before and after your change?

Thanks for the release of OH 4.1, nice just before the holidays :slight_smile:
Would like to report an issue most likely related to start-up sequence.
My JavaScript transformation stops working and I saw the following in the log:

2023-12-23 15:04:30.638 [WARN ] [s.internal.SingleValueTransformation] - couldn't transform response because transformationService of type 'JS' is unavailable

I know it’s normally because JavaScript is not installed, so I uninstall it and reinstall. after restart still doesn’t work. Then I did 10 times restarts and eventually it worked (3 out of 10 times).
So out of 10 times restart, 3 times worked and 7 times failed. I think I have seen very strange random startup behaviour since OH 4 so would like to report the issue and hope it can get fixed.
In the meantime if anybody know a more reliable way of dealing with transformation please share so I can improve. I need transformation for the below ModBus Thing:

	Bridge poller VentilationWrite [ start=4746, length=2, refresh=10000, type="holding" ] {
		Thing data hold4746 [ readStart="4746", readValueType="int16", writeStart="4746", writeValueType="int16", writeType="holding", readTransform="JS:Divide10.js", writeTransform="JS:Multiply10.js"  ]
		Thing data hold4747 [ readStart="4747", readValueType="int16",writeStart="4747", writeValueType="int16", writeType="holding", readTransform="JS:NilanSpeedToPct.js", writeTransform="JS:NilanPctToSpeed.js"  ]


It translate fan speed and temperature by the following JavaScripts:

(function(i) {
    return parseFloat(i) / 10;


(function(i) {
	return Math.round(parseFloat(i, 10) * 10);


(function(i) {
	return 100 + Math.round(i / 25);


(function(i) {
	return (i - 100) * 25;

Is there any other way of doing the transformation without using JavaScript? Many thanks in advance!

I believe that means you have a binding not implementing properly dynamic commands.
List all your installed bindings and we can check each of them, at least the official bindings.

Here is a screenshot from karaf consol:

Perhaps a stupid question, but is there a particular reason to have 3 persistence services installed ?

InfluxDB for graphs
MapDB for restore on startup
RRD4j i dont know :slight_smile:

do i need all of them or not?

No, you can remove RRD4J…

1 Like

Thanks for your info


I upgraded from 4.0.4 to 4.1.0 and now I get this errors. I thought this was already fixed in prior release.

2023-12-23 16:35:42.702 [ERROR] [core.thing.internal.ThingManagerImpl] - bundle org.openhab.core.thing:4.1.0 (219)[org.openhab.core.thing.internal.ThingManagerImpl(267)] : The addThingHandlerFactory method has thrown an exception
java.lang.IllegalArgumentException: Duplicate channels netatmo:presence:113bc184e3:56f681494bda1d5d815806ec:70ee505fbd6c:presence#siren

Best regards


sendMessage(String message, @Nullable String title, @Nullable String sound, @Nullable String url, @Nullable String urlTitle, @Nullable String attachment, @Nullable String contentType, @Nullable Integer priority, @Nullable String device, @Nullable Duration ttl)

the “ttl” parameter is new

Thanks. In that case I must admit it’s not really unintended, but I guess I didn’t expect (m)any usages of this full method signature. It’s documented as:

This method is used to send a plain text message providing all available parameters.

Since TTL is now also available, I simply added it there. All the other methods now have method overloads, so you can use them with or without the TTL parameter.

I should probably have added a breaking note for that change. Sorry for the inconvenience.

1 Like

@nikos7179 : we have not so many bindings using DynamicCommandDescriptionProvider and only one that is in your list of installed bindings: avmfritz
So I would not be very surprised if the problem is coming from that binding.

Edit: I see nothing wrong in that binding regarding DynamicCommandDescriptionProvider.
Edit2: maybe the problem is in MetadataCommandDescriptionProvider (core framework) but I am not sure.

I think i found where is the problem but i don’t know how to solve it.
i am using opentdu for my hoymiles inverter.
Opentdtu have an option: Home Assistant MQTT Auto Discovery. so openhab can discover the inverter through mqtt.

Every time that i am going to the items menu of openhab , i get so much errors as much are the channels, even if the items are used in a widget if i use the widget i get these errors.
For example in one widget i am using one item that is linked in one channel of the inverter, in the logs i get one error.

But this happening only with the version 4.1