Android App - This page doesn't contain any widgets that are set to be visible

I have a strange issue with the Android App today.

The App just shows a blank screen with a crossed-out eye and the message “This page doesn’t contain any widgets that are set to be visible”

This is strange, as I have not done any changes.

What can be excluded:

  • I did the “upgrade” option on openHABian around when it started (not sure exact timing), but there was no change available, so nothing changed there.
  • I did not change any settings in the Android App
  • The same is happening on another device with the Android App
  • The sitemaps have not been changed
  • The sitemaps all load fine on any mobile browser on the same Android Devices (and other devices)
  • It does not work in local Wifi and also not through the internet (openhab cloud)
  • I created a really simple test sitemap only with two items, still no luck:
  • I’ve tried restarting openHAB, no luck
  • I’ve tried the openHAB Android BETA App, no luck
sitemap test label="Test Home" {
    Switch  item=Presence
    Text    item=gTemperatures
}

Here is the log of the Android App:
https://pastebin.com/jJqMk8v8

Any idea what I can do to fix this?

Thank you

I recently seen this and closing/reopening the app allowed it to start working again. BTW, I’m using the Beta version.

I did another full reboot of the openHAB server system, and it works again.

Having the same issue I guess. “This page doesn’t contain any widgets that are set to be visible”

I got it for the first time after a restart upgrading from 2.5.4 to 2.5.5. Another restart of OpenHAB fixed it, a third caused this issue again.

I also recoded the logs of the Android App and it looks pretty similar to the one from @SpaceGlider:
https://pastebin.com/dAHyjqcg

I tried calling the REST endpoints (/rest, /rest/sitemaps, /rest/sitemaps/default/default) from the browser and to my eye they seem to be valid. In a browser PaperUI and BasicUI work fine. The crashlytics errors most likely come from the pihole in my local network.

The error occurs for local & remote. I usually have a reverse proxy, but omitting it makes no difference. TLS or unencrypted also makes no difference. Cleaning cache of the app, force quit or wiping all app data has no effect.

As of now my system in in the broken state. As restarts take me some time until the system is fully operable I see restarts only as a workaround, not a solution.

Did you check whether all widgets returned for the default sitemap contained a ‘widgetId’ element? It seems that it’s missing for at least one element, which makes loading the sitemap data fail.

I’m also seeing consistently that I need 2 reboots to get the sitemap in the App back.

This is my test widget that is currently not loading:

{
  "name": "test",
  "label": "Test Home",
  "link": "http://openhab.fritz.box:8080/rest/sitemaps/test",
  "homepage": {
    "id": "test",
    "title": "Test Home",
    "link": "http://openhab.fritz.box:8080/rest/sitemaps/test/test",
    "leaf": false,
    "timeout": false,
    "widgets": [
      {
        "widget_id": "00",
        "type": "Switch",
        "visibility": true,
        "label": "Presence",
        "icon": "presence",
        "mappings": [],
        "item": {
          "link": "http://openhab.fritz.box:8080/rest/items/Presence",
          "state": "ON",
          "type": "Switch",
          "name": "Presence",
          "label": "Presence",
          "category": "presence",
          "tags": [
            "Switchable"
          ],
          "group_names": [
            "gPresence"
          ]
        },
        "widgets": []
      },
      {
        "widget_id": "01",
        "type": "Text",
        "visibility": true,
        "label": "Temperatures Average [23.5 °C]",
        "icon": "temperature",
        "mappings": [],
        "item": {
          "members": [],
          "group_type": "Number",
          "function": {
            "name": "AVG"
          },
          "link": "http://openhab.fritz.box:8080/rest/items/gTemperatures",
          "state": "23.51",
          "state_description": {
            "pattern": "%.1f °C",
            "read_only": false,
            "options": []
          },
          "type": "Group",
          "name": "gTemperatures",
          "label": "Temperatures Average",
          "category": "temperature",
          "tags": [],
          "group_names": [
            "gAll"
          ]
        },
        "widgets": []
      }
    ]
  }
}

Thanks. From that JSON it’s obvious what’s off: the naming style of the elements is different: widgetId is widget_id there, same for groupType -> group_type, stateDescription -> state_description etc.
I’m just completely baffled why something like this would change at runtime… in any case, it’s obviously a server side issue.

Thank you for checking.

Can you do a Bug Report? You seem more familiar with that so it would be nice if we can get that fixed on either the server or the Android App soon.

Thanks!

@Kai @cweitkamp @wborn Since you’re the guys working on REST API, do you know what might be going on here?

@SpaceGlider If neither of the maintainers are around to answer here, I’ll open up an issue on Github. It’s just a little hard for me to provide info there, given I can’t reproduce it myself and am just proxy…

Just an updated observation, as I had to reboot again, and another 4 reboots did not help,
Now I did a restart of the openhab2.service and it helped.

So, sometimes:

sudo systemctl restart openhab2.service

and other times:

sudo reboot

Not sure why that is.

It is probably a race condition on initialization. Sometimes it gets triggered, sometimes not. Both commands do a restart of OpenHAB, thus there is a chance that it works for both.

I did a cache clean and afterwards the problem wasn’t there. However, that is a pretty bad sample rate:

sudo systemctl stop openhab2.service
sudo openhab-cli clean-cache
sudo systemctl start openhab2.service

Problem isn’t gone. I could verify though that I have the same issue with widget_id vs widgetId.

I have exactly the same message in the android App when I try to watch a sitemap. It happened just after an upgrade on ARMbian. Where can I find the widget JSON file to check the ‘widgetid’ element ?

Thank you.

It is not a file, but a HTTP endpoint. For me it is http://homeautomation:8080/rest/sitemaps/default/default
e.g. open the PaperUI in your browser and change the path.

@Julian_Knocke,

Ok I see, thank you.
I got the issue mentioned in the title after upgrading to 2.5.5 and I got several issues so I finally reinstall everything from scratch and all is working fine now (except expire binding but I will share my experience on another specific topic about this). It is the second time I have to reinstall after an update… It is a bit annoying. :confused:

Johan

This looks like the value of Gson’s FieldNamingPolicy is getting changed - FieldNamingPolicy.UPPER_CAMEL_CASE vs. FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES. However, I am unable to find that actually happening in the code. It’s difficult to search though with so many repositories.

I do see one place in openhab-core where it is explicitly set to lower case with underscores (here), but that doesn’t seem to explain the behavior of the sitemaps.

At any rate, the server is clearly responding with widget_id and the Android app is expecting widgetId so there is a mismatch. I can reproduce after upgrading today from 2.5.2 to 2.5.6.

I still have this problem on 2.5.8

Same here openHAB 2.5.9

Yes, for mee too on 2.5.9.

I found a workaround. If you have the Android App open during the bootup/start of OH and refresh the app/page, somehow it comes up ok.