openHAB 5.1 Release discussion

In my experience Homie is still working fine.

I still have homie:homie300 instead homie:device.

That’s interesting.

Do you use file based configuration @jon.hazan ?

Try “bundle:list” to see if something could be the Shelly binding.

Try also “log:set TRACE org.openhab.binding.shelly” and see if you see activity in logs.

Finally if you find no bundle and no activity in logs, there is something wrong with MainUI considering it as installed. Then create a GitHub issue.

There are certainly API requests to check but I am not in a situation I can tell you which ones.

1 Like

What kind of trigger ? Cron ? Channel trigger ? Item changed/updated ? Can you provide a rule example please ?

If channel trigger, is it only for a particular binding ? Which one ? Or for any binding ?

I can check when back to home with a trigger channel from the mater binding for example.

But on my side, I have definitively rules triggered.

Thanks for your reply.

Which binding do you mean?

MQTT broker is running (on green) so you mean the Zigbee2MQTT bridge

All Triggers

But now i take it all back.
After another update from 5.0.3-1 to 5.1.0-1, my DSL rules are now also being triggered.

Amazing, what abilities chatbots have these days.

Adding

... as org.eclipse.xtext.xbase.lib.Functions.Function2<String, String, Void>

to

val mail = [
    String subject, String msg |
    getActions("mail", "mail:smtp:gmx")
        .sendMail(mailAddress, subject, msg)
] as org.eclipse.xtext.xbase.lib.Functions.Function2<String, String, Void>

solved it.

Thanks, Jim!

1 Like

I expect for device:homie300 you meant to writemqtt:homie300.

I did not see any events in the event.log, neither were any rules triggered until I replaced the old Things with the new found Things that were in the inbox.

I restarted openHAB and also removed and reinstalled the Homie binding, but nothing changed.

It’s possible that something else was going on my system although I doubt that. I only have two homie devices and they are the only things that actually control something in my house and were the first thing I checked after the upgrade. My main production system is still on 2.5.2 :slight_smile:

Also after linking the channels from the new Thing to the same items I immediately received triggers in the event log and my rules were also triggered.

Hello, thank you for your work!

Mine DSL file based rules not trigger too.

only if I do some change in my dsl rule file and save it.

any idea why?

Did you just downgrade and upgrade again to the same version?

Take a look into openhab.log. Guess, there you’ll find a reason why the rules are not loaded.

Yes,
yesterday
Update from 5.0.3-1 to 5.1.0-1 (no Triggers, after that a new Testrule was loaded but there where no Trigger)
After 2h checking downgrade from 5.1.0-1 to 5.0.3-1 (Everything runs)
Today agein update from 5.0.3-1 to 5.1.0-1 (Everthing runs)
Strange

Now i wish you merry christmas
Uli

Hello and thank you for the great release. I upgraded from 4.3 on Openhabian and everything went well, except that MQTT Thinks recognized by Home Assistant only displayed errors. This was mentioned in the latest news. I installed the HA binding, but without success. Then I restarted the system, but after that I couldn’t open any Thinks configuration. The screen refreshed cyclically without displaying any data. Finally, I shut down the OH system, cleared the cache, restarted it, and cleared the browser cache. I think the last measure fixed the problem, and now everything is working like a charm. Maybe this will help others who are having the same problem.

1 Like

I created an issue in github about the non-working oh-video-card with non-local video-streams. This is probably breaking all UI-pages with video-streams from cameras, door-bells etc:

@florian-h05 : Is it possible that it’s the same or similar to this one:
https://community.openhab.org/t/openhab-4-3-milestone-discussion/158139/22?u=larsen

Thanks! But with changing it from ‘postCommand:true → false’ I cannot switch on the light any more via MQTT (…./set/state)…? But maybe I misunderstood your comment…

That’s a shame. Two devices were affected here, but neither experienced any functional limitations after the change. I don’t even remember why postCommand was set to true. According to the documentation, this is only necessary under certain conditions.

Hey,

thanks a lot, everything is working now!

But some other binding must have caused this problem (with same dependencies), because i don’T use the xmpp plugin:

runtimeInfo:
version: 5.1.0
buildString: Release Build
locale: de-DE
systemInfo:
configFolder: /openhab/conf
userdataFolder: /openhab/userdata
logFolder: /openhab/userdata/logs
javaVersion: 21.0.9
javaVendor: Debian
osName: Linux
osVersion: 6.8.0-90-generic
osArchitecture: amd64
availableProcessors: 4
freeMemory: 134620160
totalMemory: 905969664
uptime: 393
startLevel: 70
addons:

  • automation-jsscripting
  • automation-jsscriptingnashorn
  • binding-astro
  • binding-avmfritz
  • binding-denonmarantz
  • binding-deutschebahn
  • binding-ecovacs
  • binding-exec
  • binding-heos
  • binding-homeassistant
  • binding-homematic
  • binding-icalendar
  • binding-mielecloud
  • binding-modbus
  • binding-mqtt
  • binding-netatmo
  • binding-network
  • binding-ntp
  • binding-solarforecast
  • binding-tankerkoenig
  • binding-tibber
  • 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
    electron: false
    capacitor: 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
      passiveListener: true
      intersectionObserver: true
      themeOptions:
      dark: light
      autoDarkMode: true
      bars: light
      homeNavBar: default
      homeBackground: default
      disableExpandableCardAnimation: false
      blocklyRenderer: null
      disablePageTransitionAnimation: false
      hideChatInput: false
      webAudio: false
      visibleBreakpointDisabled: false
      userAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
      like Gecko) Chrome/143.0.0.0 Safari/537.36
      timestamp: 2025-12-25T20:23:03.534Z

BR Sönke

ecovacs depends on xmpp I think.

Hi Team

Great new release thanks for all the hard work by everyone

System:

Hardware: Openhabian on Raspberry Pi 8GB Ram

Upgrade from 4.3.9

Issue: Main UI Widget does not display correctly

I have a Custom Widget that worked under 4.3.x and before

When I am in the widget editor the widget displays correctly. (Image 1)

When the widget is displayed as intended on a Page the widget fails to display correctly (Image 2)

If i place the image on a page page and reduce the height of the image the widget shows some of the text but incorrectly:(Image 3) In image 3 the box at the top is the size of the widget now

What the widget does : retrieves items from a custom HTTP Thing and display cloud levels for each hour of the day) Additionaly the text in the row of the currently hour should display in read (side note: the rows before the current hour are the cloud cover for the next day

Browsers tested:(Same results)

Safari on IOS 26 (iPad)

Safari on Mac OS

Chrome on Mac OS

Openhab App 3.1.41(98) on IOS

Images:

Image 1:

Image 2:

Image 3:

The Widget:

uid: hasCloudCoverWidget
tags:
  - has
  - ver3.3
  - vertical
props:
  parameters:
    - default: HTTP_MeteoSource_
      description: The Prefix for MeteoSource
      label: The Prefix for the Group
      name: prefix
      required: false
      type: TEXT
    - default: Cloud Forecast
      label: Title
      name: title
      required: false
    - default: "30"
      label: Icon Size
      name: iconSize
      required: false
    - default: /classic/meteosource-
      label: Icon Location
      name: iconLocation
      required: false
    - default: "600"
      label: Font Weight
      name: fontWeight
      required: false
    - default: 1rem
      label: Font Size
      name: fontSize
      required: false
    - default: rgb(221, 228, 238, 0.7)
      description: Background Color
      name: bg
      required: false
      type: TEXT
  parameterGroups: []
timestamp: Dec 26, 2025, 12:34:19 AM
component: f7-card
config:
  content7: =items[props.item].displayState || items[props.item].state
  footer: =  @"HTTP_MeteoSource_Last_Success"
  style:
    background: =themeOptions.dark=='dark'?'#292524':'white'
    border: 2px ridge silver
    border-radius: 10px
    box-shadow: 2px 2px 2px black
    color: =dayjs(items.HTTP_MeteoSource_Last_Success.state).isBefore(dayjs().subtract(1,'day'))?'red':themeOptions.dark=='dark'?'white':'black'
    margin: 6px
  title: =(props.title)
slots:
  default:
    - component: f7-row
      config:
        style:
          align-items: flex-end
          padding: .5rem
      slots:
        default:
          - component: Label
            config:
              medium: 7
              style:
                color: "=(dayjs().get('hour') == 8 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: =props.fontSize
                font-weight: =props.fontWeight
                padding: .3rem
              text: 8
          - component: Label
            config:
              style:
                color: "=(dayjs().get('hour') == 8 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: 1rem
                font-weight: =props.fontWeight
                padding: .3rem
              text: =@[props.prefix+"cloud_cover_08"]+" %"
              width: 10
          - component: oh-icon
            config:
              color: black
              f7: cloud
              icon: = props.iconLocation+@[props.prefix+"cloud_icon_08"]
              iconX: = 'meteosource-'+@[props.prefix+"cloud_icon_08"]
              iconY: /classic/weather_icons/set02/medium/2
              padding-left: 5px
              width: =props.iconSize
    - component: f7-row
      config:
        style:
          align-items: flex-end
          padding: .5rem
      slots:
        default:
          - component: Label
            config:
              medium: 7
              style:
                color: "=(dayjs().get('hour') == 9 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: =props.fontSize
                font-weight: =props.fontWeight
                padding: .3rem
              text: 9
          - component: Label
            config:
              style:
                color: "=(dayjs().get('hour') == 9 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: 1rem
                font-weight: =props.fontWeight
                padding: .3rem
              text: =@[props.prefix+"cloud_cover_09"]+" %"
              width: 10
          - component: oh-icon
            config:
              color: black
              f7: cloud
              icon: = props.iconLocation+@[props.prefix+"cloud_icon_09"]
              padding-left: 5px
              width: =props.iconSize
    - component: f7-row
      config:
        style:
          align-items: flex-end
          padding: .5rem
      slots:
        default:
          - component: Label
            config:
              medium: 7
              style:
                color: "=(dayjs().get('hour') == 10 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: =props.fontSize
                font-weight: =props.fontWeight
                padding: .3rem
              text: 10
          - component: Label
            config:
              style:
                color: "=(dayjs().get('hour') == 10 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: 1rem
                font-weight: =props.fontWeight
                padding: .3rem
              text: =@[props.prefix+"cloud_cover_10"]+" %"
              width: 10
          - component: oh-icon
            config:
              color: black
              f7: cloud
              icon: = props.iconLocation+@[props.prefix+"cloud_icon_10"]
              padding-left: 5px
              width: =props.iconSize
    - component: f7-row
      config:
        style:
          align-items: flex-end
          padding: .5rem
      slots:
        default:
          - component: Label
            config:
              medium: 7
              style:
                color: "=(dayjs().get('hour') == 11 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: =props.fontSize
                font-weight: =props.fontWeight
                padding: .3rem
              text: 11
          - component: Label
            config:
              style:
                color: "=(dayjs().get('hour') == 11 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: 1rem
                font-weight: =props.fontWeight
                padding: .3rem
              text: =@[props.prefix+"cloud_cover_11"]+" %"
              width: 10
          - component: oh-icon
            config:
              color: black
              f7: cloud
              icon: = props.iconLocation+@[props.prefix+"cloud_icon_11"]
              padding-left: 5px
              width: =props.iconSize
    - component: f7-row
      config:
        style:
          align-items: flex-end
          padding: .5rem
      slots:
        default:
          - component: Label
            config:
              medium: 7
              style:
                color: "=(dayjs().get('hour') == 12 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: =props.fontSize
                font-weight: =props.fontWeight
                padding: .3rem
              text: 12
          - component: Label
            config:
              style:
                color: "=(dayjs().get('hour') == 12 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: 1rem
                font-weight: =props.fontWeight
                padding: .3rem
              text: =@[props.prefix+"cloud_cover_12"]+" %"
              width: 10
          - component: oh-icon
            config:
              color: black
              f7: cloud
              icon: = props.iconLocation+@[props.prefix+"cloud_icon_12"]
              padding-left: 5px
              width: =props.iconSize
    - component: f7-row
      config:
        style:
          align-items: flex-end
          padding: .5rem
      slots:
        default:
          - component: Label
            config:
              medium: 7
              style:
                color: "=(dayjs().get('hour') == 13 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: =props.fontSize
                font-weight: =props.fontWeight
                padding: .3rem
              text: 13
          - component: Label
            config:
              style:
                color: "=(dayjs().get('hour') == 13 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: 1rem
                font-weight: =props.fontWeight
                padding: .3rem
              text: =@[props.prefix+"cloud_cover_13"]+" %"
              width: 10
          - component: oh-icon
            config:
              color: black
              f7: cloud
              icon: = props.iconLocation+@[props.prefix+"cloud_icon_13"]
              padding-left: 5px
              width: =props.iconSize
    - component: f7-row
      config:
        style:
          align-items: flex-end
          padding: .5rem
      slots:
        default:
          - component: Label
            config:
              medium: 7
              style:
                color: "=(dayjs().get('hour') == 14 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: =props.fontSize
                font-weight: =props.fontWeight
                padding: .3rem
              text: 14
          - component: Label
            config:
              style:
                color: "=(dayjs().get('hour') == 14 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: 1rem
                font-weight: =props.fontWeight
                padding: .3rem
              text: =@[props.prefix+"cloud_cover_14"]+" %"
              width: 10
          - component: oh-icon
            config:
              color: black
              f7: cloud
              icon: = props.iconLocation+@[props.prefix+"cloud_icon_14"]
              padding-left: 5px
              width: =props.iconSize
    - component: f7-row
      config:
        style:
          align-items: flex-end
          padding: .5rem
      slots:
        default:
          - component: Label
            config:
              medium: 7
              style:
                color: "=(dayjs().get('hour') == 15 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: =props.fontSize
                font-weight: =props.fontWeight
                padding: .3rem
              text: 15
          - component: Label
            config:
              style:
                color: "=(dayjs().get('hour') == 15 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: 1rem
                font-weight: =props.fontWeight
                padding: .3rem
              text: =@[props.prefix+"cloud_cover_15"]+" %"
              width: 10
          - component: oh-icon
            config:
              color: black
              f7: cloud
              icon: = props.iconLocation+@[props.prefix+"cloud_icon_15"]
              padding-left: 5px
              width: =props.iconSize
    - component: f7-row
      config:
        style:
          align-items: flex-end
          padding: .5rem
      slots:
        default:
          - component: Label
            config:
              medium: 7
              style:
                color: "=(dayjs().get('hour') == 16 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: =props.fontSize
                font-weight: =props.fontWeight
                padding: .3rem
              text: 16
          - component: Label
            config:
              style:
                color: "=(dayjs().get('hour') == 16 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: 1rem
                font-weight: =props.fontWeight
                padding: .3rem
              text: =@[props.prefix+"cloud_cover_16"]+" %"
              width: 10
          - component: oh-icon
            config:
              color: black
              f7: cloud
              icon: = props.iconLocation+@[props.prefix+"cloud_icon_16"]
              padding-left: 5px
              width: =props.iconSize
    - component: f7-row
      config:
        style:
          align-items: flex-end
          padding: .5rem
      slots:
        default:
          - component: Label
            config:
              medium: 7
              style:
                color: "=(dayjs().get('hour') == 17 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: =props.fontSize
                font-weight: =props.fontWeight
                padding: .3rem
              text: 17
          - component: Label
            config:
              style:
                color: "=(dayjs().get('hour') == 17 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: 1rem
                font-weight: =props.fontWeight
                padding: .3rem
              text: =@[props.prefix+"cloud_cover_17"]+" %"
              width: 10
          - component: oh-icon
            config:
              color: black
              f7: cloud
              icon: = props.iconLocation+@[props.prefix+"cloud_icon_17"]
              padding-left: 5px
              width: =props.iconSize
    - component: f7-row
      config:
        style:
          align-items: flex-end
          padding: .5rem
      slots:
        default:
          - component: Label
            config:
              medium: 7
              style:
                color: "=(dayjs().get('hour') == 18 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: =props.fontSize
                font-weight: =props.fontWeight
                padding: .3rem
              text: 18
          - component: Label
            config:
              style:
                color: "=(dayjs().get('hour') == 18 )  ? 'red' :
                  themeOptions.dark=='dark'?'white':'black'"
                font-size: 1rem
                font-weight: =props.fontWeight
                padding: .3rem
              text: =@[props.prefix+"cloud_cover_18"]+" %"
              width: 10
          - component: oh-icon
            config:
              color: black
              f7: cloud
              icon: = props.iconLocation+@[props.prefix+"cloud_icon_18"]
              padding-left: 5px
              width: =props.iconSize

I clicked in ‘Analyse’ in an Item, and noticed the hour is wrong:

It should read “OPEN (09:20)”.

The Items were receiving updates from the Homie devices. Sending a command to an Item worked for some Things but not others, and for these, nothing was received on the MQTT subscribed topics.

All of the Thing UIDs still had mqtt:homie300. I deleted the Things, added them again from the Inbox, stopped OpenHAB, edited the jsondb files and started OpenHAB again. Now everything works as expected.

Even if everything had worked fine on upgrading to 5.1, I would still have encountered the need to relink lots of Items in the event that I had needed to delete and recreate a Thing, so perhaps some kind of migration might be provided for this case.

No, I do not use file based configuration.