Yes, I did some debug and see that this value pushed by binding for channel but for 2 channels linked to item OH core get random channel and get readonly value from this channel:
private @Nullable StateDescription getStateDescription(String itemName, @Nullable Locale locale) {
Set<ChannelUID> boundChannels = itemChannelLinkRegistry.getBoundChannels(itemName);
if (!boundChannels.isEmpty()) {
ChannelUID channelUID = boundChannels.iterator().next();
Channel channel = thingRegistry.getChannel(channelUID);
if (channel != null) {
StateDescription stateDescription = null;
ChannelType channelType = thingTypeRegistry.getChannelType(channel, locale);
if (channelType != null) {
stateDescription = channelType.getState();
}
StateDescription dynamicStateDescription = getDynamicStateDescription(channel, stateDescription,
locale);
if (dynamicStateDescription != null) {
return dynamicStateDescription;
}
return stateDescription;
}
}
return null;
}
For R3 channel OH get value from mqtt:topic:SNG-IOT-RTL-01:SNG-IOT-RTL-01-RL-03 channel, it is not readonly channel and I see switch
2025-06-02 18:51:30.561 [DEBUG] [rnal.ChannelStateDescriptionProvider] - getStateDescription, boundChannels: [mqtt:topic:SNG-IOT-RTL-01:SNG-IOT-RTL-01-RL-03, mqtt:topic:SNG-IOT-RTL-01:SNG-IOT-RTL-01-SW-14]
2025-06-02 18:51:30.562 [DEBUG] [rnal.ChannelStateDescriptionProvider] - Channel channel: org.openhab.core.thing.binding.builder.ChannelBuilder$ChannelImpl@1f4a8b47
2025-06-02 18:51:30.562 [DEBUG] [rnal.ChannelStateDescriptionProvider] - ChannelType channelType: mqtt:switch
2025-06-02 18:51:30.562 [DEBUG] [rnal.ChannelStateDescriptionProvider] - StateDescription stateDescription: null
2025-06-02 18:51:30.562 [DEBUG] [rnal.ChannelStateDescriptionProvider] - Channel channel: org.openhab.core.thing.binding.builder.ChannelBuilder$ChannelImpl@8d2e62ae
2025-06-02 18:51:30.562 [DEBUG] [rnal.ChannelStateDescriptionProvider] - ChannelType channelType: mqtt:switch
2025-06-02 18:51:30.562 [DEBUG] [rnal.ChannelStateDescriptionProvider] - StateDescription stateDescription: null
2025-06-02 18:51:30.563 [DEBUG] [rnal.ChannelStateDescriptionProvider] - getDynamicStateDescription, provider org.openhab.binding.mqtt.generic.MqttChannelStateDescriptionProvider@2215a54c, channel: mqtt:topic:SNG-IOT-RTL-01:SNG-IOT-RTL-01-RL-03
2025-06-02 18:51:30.563 [DEBUG] [rnal.ChannelStateDescriptionProvider] - getDynamicStateDescription, result StateDescription [minimum=null, maximum=null, step=null, pattern=%s, readOnly=false, channelStateOptions=[]], dynamicStateDescription: false
2025-06-02 18:51:30.563 [DEBUG] [.service.StateDescriptionServiceImpl] - stateDescriptionFragmentProvider: org.openhab.core.thing.internal.ChannelStateDescriptionProvider@55d03374, class org.openhab.core.thing.internal.ChannelStateDescriptionProvider
2025-06-02 18:51:30.563 [DEBUG] [.service.StateDescriptionServiceImpl] - Create fragment for item: 'SNG_RTL_IOT_DEV_01_RL_03', fragment: 'StateDescription [minimum=null, maximum=null, step=null, pattern=%s, readOnly=false, channelStateOptions=[]]', result: StateDescription [minimum=null, maximum=null, step=null, pattern=%s, readOnly=false, channelStateOptions=[]]
But for R2 channel OH core get state from read only switch channel mqtt:topic:SNG-IOT-RTL-01:SNG-IOT-RTL-01-SW-15, as result I see text
2025-06-02 18:51:29.592 [DEBUG] [rnal.ChannelStateDescriptionProvider] - getStateDescription, boundChannels: [mqtt:topic:SNG-IOT-RTL-01:SNG-IOT-RTL-01-SW-15, mqtt:topic:SNG-IOT-RTL-01:SNG-IOT-RTL-01-RL-02]
2025-06-02 18:51:29.592 [DEBUG] [rnal.ChannelStateDescriptionProvider] - Channel channel: org.openhab.core.thing.binding.builder.ChannelBuilder$ChannelImpl@f6c4dc8b
2025-06-02 18:51:29.592 [DEBUG] [rnal.ChannelStateDescriptionProvider] - ChannelType channelType: mqtt:switch
2025-06-02 18:51:29.592 [DEBUG] [rnal.ChannelStateDescriptionProvider] - StateDescription stateDescription: null
2025-06-02 18:51:29.592 [DEBUG] [rnal.ChannelStateDescriptionProvider] - Channel channel: org.openhab.core.thing.binding.builder.ChannelBuilder$ChannelImpl@b8339307
2025-06-02 18:51:29.592 [DEBUG] [rnal.ChannelStateDescriptionProvider] - ChannelType channelType: mqtt:switch
2025-06-02 18:51:29.592 [DEBUG] [rnal.ChannelStateDescriptionProvider] - StateDescription stateDescription: null
2025-06-02 18:51:29.592 [DEBUG] [rnal.ChannelStateDescriptionProvider] - getDynamicStateDescription, provider org.openhab.binding.mqtt.generic.MqttChannelStateDescriptionProvider@2215a54c, channel: mqtt:topic:SNG-IOT-RTL-01:SNG-IOT-RTL-01-SW-15
2025-06-02 18:51:29.592 [DEBUG] [rnal.ChannelStateDescriptionProvider] - getDynamicStateDescription, result StateDescription [minimum=null, maximum=null, step=null, pattern=%s, readOnly=true, channelStateOptions=[]], dynamicStateDescription: true
2025-06-02 18:51:29.593 [DEBUG] [.service.StateDescriptionServiceImpl] - stateDescriptionFragmentProvider: org.openhab.core.thing.internal.ChannelStateDescriptionProvider@55d03374, class org.openhab.core.thing.internal.ChannelStateDescriptionProvider
2025-06-02 18:51:29.593 [DEBUG] [.service.StateDescriptionServiceImpl] - Create fragment for item: 'SNG_RTL_IOT_DEV_01_RL_02', fragment: 'StateDescription [minimum=null, maximum=null, step=null, pattern=%s, readOnly=true, channelStateOptions=[]]', result: StateDescription [minimum=null, maximum=null, step=null, pattern=%s, readOnly=true, channelStateOptions=[]]
I guess it is bug. Is it correct?