openHAB 5.1 Release discussion

Lol, this should be illegal (changing the terms after people have started using/relying on something). It’s very easy to know that when they demand your real name like this, you should not allow it, because they’re obviously up to selling your data. People should just abandon those who try such stunts.

All good, we have the GPDR :joy:

1 Like

Hi sihui,
thanks, i dont read that mail because it was on an old Mailadress.
Thanks for that information.

They get now my real name and i will wait until tomorrow.

by

Since some days my mainUI is just showing a blank page.
http://192.168.1.30:8080 forwards to http://192.168.1.30:8080/overview/ but thats it. Tried chrome and Firefox, tried uninstalling habpanel and clear-cache.
Firefox shows the menu on the left, Crome nothing at all. In Firefox, I can navigate to the overview page, then it shows.
It did work a couple of days back but I have not the slightest clue what I did to break it. I am struggeling with persistence though but thats probably not connected. Any thoughts on how to debug this ?

The browser console and network tab might provide helpful information.

One more point…

I set this in the UI

But still get this warning during startup

[INFO ] [.network.internal.utils.NetworkUtils] - CIDR prefix is smaller than /24 on interface with address 172.20.0.1/16, truncating to /24, some addresses might be lost bei openhab

this does not fit together…

The connection to http://192.168.1.30:8080/rest/events/states was interrupted while the page was loading. index-BKkrdbNu.js:23287:12

SSE error index-BKkrdbNu.js:23318:17

=!= Event source connection broken…

Primary IP doesn’t mean that openHAB will not listen on other IP addresses and won’t work with other IP networks. At least that is how I interpret the term primary IP and my openHAB is able to operate on multiple interfaces in different networks simultaenously.

@s0170071 Please use code fences, provide the network tab and your environment details.

Okay but why don’t get a waring about only one interface and not also the other one?

Because after your description I should see 2 warnings not only 1


Havent found a reasobable way to copy that, hence the screenshot. Seems like a call to http://192.168.1.30:8080/rest/events/states does not get a reply.
But its not like its not working at all. If I click on the link of the page, it does load.

similar here, but only with android/firefox, Windows/firefox works
android/firefox works with desktop mode =on

I know that 5.1.1 has had its challenges but I wanted to make a HUGE call out to the developers on the Web Interface side - I am not sure who included the ability to do search, search & replace (incl support for regex) but you have given a huge boost to using the native UI for yaml editing in particular widget editing because there are many times when a change is needed in multiple places and this makes this soooo much easier. thanks again :folded_hands:

It appears to work across all browsers and including on Mac as well and the first time it opened when i pressed CMD-F I was blown away.

For Reference the Issue could probably be marked as Closed.

Brett

2 Likes

That is indeed interesting, I can’t answer that. I usually see several of those warnings when starting openHAB on my laptop (for development) as there are quite some virtual interfaces installed.

The network tab looks good, Main UI should display something. Again: please provide your environment details. openHAB 5.1.1 fixes an issue that makes the UI display nothing on some devices if the simple navbar is enabled.

Can i do any more troubleshooting or can I provide anymore info for this issue?

The widget YAML, but probably with hardcoded data values, so no items need to be configured.

Thank you ! That did the trick. I wasn’t aware there is 5.1.1 . Openhab website still advertises 5.1.0.
Releases · openhab/openhab-distro · GitHub is where you find it.

1 Like

I have an input widget that hasn’t worked since OH 5.1.0 and is also broken in OH 5.1.1.
The Main UI version is 88ebe7ee

I use the widget to record the missing locations of my cars.

The widget now has the following problems:
The pre-populated fields for:

  • the current time dayjs(),
  • the location data type “Point”,
  • the data type “Information”, and
  • the current mileage from the item props.itemMileage

no longer work.

Furthermore, entered data is deleted when switching to a different input field.
After submitting the data to the props.itemAddButton item, the passed JSON string is processed further in a rule.

Does anyone have any idea what the errors in the widget might be?

Widget Code:

uid: uk_addLogEntry
tags:
  - uk
props:
  parameters:
    - context: item
      description: An item to send informattion
      label: Item
      name: itemAddButton
      required: false
      type: TEXT
    - context: item
      description: Mileage Item
      label: Mileage
      name: itemMileage
      required: false
      type: TEXT
  parameterGroups: []
timestamp: Jan 7, 2026, 3:01:14 PM
component: f7-card
config:
  defineVars:
    entryAddress: ""
    entryDate: =dayjs()
    entryMilage: =Number.parseInt(@@props.itemMileage)
    entryName: Point
    entryPoint: ""
    entryRemark: ""
    entryType: Information
  title: Log-Eintrag hinzufügen
slots:
  default:
    - component: f7-row
      config:
        style:
          height: 2em
          margin-left: 10px
      slots:
        default:
          - component: f7-col
            config:
              style:
                width: 25%
            slots:
              default:
                - component: Label
                  config:
                    style:
                      text-align: left
                    text: "Datum/Zeit:"
          - component: f7-col
            config:
              style:
                width: 75%
            slots:
              default:
                - component: oh-input
                  config:
                    defaultValue: =dayjs()
                    inputmode: text
                    name: entryDate
                    outline: true
                    required: true
                    type: datetime-local
                    validate: true
                    variable: entryDate
    - component: f7-row
      config:
        style:
          height: 2em
          margin-left: 10px
      slots:
        default:
          - component: f7-col
            config:
              style:
                width: 25%
            slots:
              default:
                - component: Label
                  config:
                    style:
                      text-align: left
                    text: "Eintragstyp:"
          - component: f7-col
            config:
              style:
                width: 75%
            slots:
              default:
                - component: oh-input
                  config:
                    defaultValue: Information
                    name: entryType
                    outline: true
                    required: true
                    type: select
                    variable: entryType
                  slots:
                    default:
                      - component: option
                        config:
                          value: Information
                        slots:
                          default:
                            - component: Content
                              config:
                                text: Information
                      - component: option
                        config:
                          value: Halten
                        slots:
                          default:
                            - component: Content
                              config:
                                text: Halten
                      - component: option
                        config:
                          value: Abfahrt
                        slots:
                          default:
                            - component: Content
                              config:
                                text: Abfahrt
                      - component: option
                        config:
                          value: Ankunft
                        slots:
                          default:
                            - component: Content
                              config:
                                text: Ankunft
    - component: f7-row
      config:
        style:
          height: 2em
          margin-left: 10px
      slots:
        default:
          - component: f7-col
            config:
              style:
                width: 25%
            slots:
              default:
                - component: Label
                  config:
                    style:
                      text-align: left
                    text: "Position / Koordinaten:"
          - component: f7-col
            config:
              style:
                width: 40%
            slots:
              default:
                - component: oh-input
                  config:
                    defaultValue: Point
                    name: entryName
                    outline: true
                    required: true
                    type: select
                    variable: entryName
                  slots:
                    default:
                      - component: option
                        config:
                          value: Point
                        slots:
                          default:
                            - component: Content
                              config:
                                text: Point
                      - component: option
                        config:
                          value: Büro
                        slots:
                          default:
                            - component: Content
                              config:
                                text: Büro
                      - component: option
                        config:
                          value: Bahnhof
                        slots:
                          default:
                            - component: Content
                              config:
                                text: Bahnhof
          - component: f7-col
            config:
              style:
                width: 35%
            slots:
              default:
                - component: oh-input
                  config:
                    inputmode: text
                    name: entryPoint
                    outline: true
                    required: true
                    type: text
                    validate: true
                    variable: entryPoint
    - component: f7-row
      config:
        style:
          height: 2em
          margin-left: 10px
      slots:
        default:
          - component: f7-col
            config:
              style:
                width: 25%
            slots:
              default:
                - component: Label
                  config:
                    style:
                      text-align: left
                    text: "Adresse:"
          - component: f7-col
            config:
              style:
                width: 75%
            slots:
              default:
                - component: oh-input
                  config:
                    inputmode: text
                    name: entryAddress
                    outline: true
                    required: true
                    type: text
                    validate: true
                    variable: entryAddress
    - component: f7-row
      config:
        style:
          height: 2em
          margin-left: 10px
      slots:
        default:
          - component: f7-col
            config:
              style:
                width: 25%
            slots:
              default:
                - component: Label
                  config:
                    style:
                      text-align: left
                    text: "Kilometerstand:"
          - component: f7-col
            config:
              style:
                width: 75%
            slots:
              default:
                - component: oh-input
                  config:
                    defaultValue: =Number.parseInt(@@props.itemMileage)
                    inputmode: text
                    name: entryMilage
                    outline: true
                    required: true
                    type: number
                    validate: true
                    variable: entryMileage
    - component: f7-row
      config:
        style:
          height: 2em
          margin-left: 10px
      slots:
        default:
          - component: f7-col
            config:
              style:
                width: 25%
            slots:
              default:
                - component: Label
                  config:
                    style:
                      text-align: left
                    text: "Bemerkungen:"
          - component: f7-col
            config:
              style:
                width: 75%
            slots:
              default:
                - component: oh-input
                  config:
                    inputmode: text
                    name: entryRemarks
                    outline: true
                    required: false
                    type: text
                    validate: true
                    variable: entryRemarks
    - component: oh-button
      config:
        action: toggle
        actionCommand: ='{"date":"' + vars.entryDate + '","type":"' + vars.entryType +
          '","name":"' + vars.entryName + '","point":"' + vars.entryPoint +
          '","address":"' + vars.entryAddress + '","mileage":"' +
          vars.entryMileage + '","remark":"' + vars.entryRemarks + '"}'
        actionCommandAlt: ='{"date":"' + vars.entryDate + '","type":"' + vars.entryType
          + '","name":"' + vars.entryName + '","point":"' + vars.entryPoint +
          '","address":"' + vars.entryAddress + '","mileage":"' +
          vars.entryMileage + '","remark":"' + vars.entryRemarks + '"}'
        actionItem: =props.itemAddButton
        outline: true
        style:
          width: 100%
        text: Absenden

Actually, …dunno why but my rules are not executing right now. Digging hard to get to the bottom of that but the mainUI has loaded…. I think I am haunted by updates :frowning:

Edit:

  • I changed the docker container.
  • I booted twice and thought it works.
  • left it alone for two hours not noticing rules dont work:
  • spent an hour digging around and … voilâ: works.

All it took in the end was a third reboot.
Murphy must hate me :frowning:

2 Likes

I submitted a PR which will fix the pre-populated fields (#3754).

2 Likes

I installed OH5.1.1 over OH5.1.0 and most of the problmes with “canvas-layout” are solved. There is still the problem with the widget “Photoframe_2” which does no longer work in “canvas layout” but only in “grid layout” - it worked in OH5.0.3.

In “canvas-layout” you can click through the images manually but the automatic loop does not work - which is bad.

I have reduced the page just to the widget “Photoframe_2” and it work on “grid layout” but not in “canvas-layout”. Any idea how to solve this problem in “canvas-layout”?

uid: photoframe_2
tags:
  - BG
props:
  parameters:
    - description: <b>Optional prefix</b> for item names
      label: Item prefix
      name: itemPrefix
      required: false
      type: TEXT
    - context: item
      description: Item which holds the image-url and the title
      label: Image/Title Item
      name: image
      required: false
      type: TEXT
  parameterGroups: []
timestamp: Jan 12, 2026, 5:13:29 PM
component: f7-block
config:
  style:
    position: relative
slots:
  default:
    - component: f7-swiper
      config:
        navigation: true
        params:
          autoplay:
            delay: 5000
          grabCursor: true
          initalSlide: 0
          keyboard: true
          mousewheel: true
          observeSlideChildren: true
          observer: true
          rewind: true
          runCallbacksOnInit: true
          slidesPerView: 1
          spaceBetween: 2
          speed: 500
          updateOnWindowResize: true
          watchOverflow: true
        style:
          --swiper-navigation-color: white
          --swiper-navigation-size: 20px
          z-index: 0
      slots:
        default:
          - component: oh-repeater
            config:
              for: images
              fragment: true
              rangeStart: 1
              rangeStop: =items[props.image].state.split(';').length
              sourceType: range
            slots:
              default:
                - component: f7-swiper-slide
                  config:
                    class:
                      - display-flex
                      - justify-content-center
                      - align-items-center
                    style:
                      height: 100%
                      position: relative
                      width: 100%
                  slots:
                    default:
                      - component: oh-image
                        config:
                          style:
                            height: 100%
                            object-fit: contain
                            width: 100%
                          url: =items[props.image].state.split(';')[loop.images_idx]