webCoRE dashboard load error

I've encountered this before and the solution always ends up being something obscure and I can't remember what ti did last time.

The error I get on the webcore dashboard screen is:

There was a problem loading the dashboard data. The data shown below may be outdated; please log out if this problem persists.

I'm gonna feel stupid, I'm pretty certain, but maybe this way it'll get written down when it gets figured out this time.

First off - I have webcore installed on a local system (odroid - think raspberry pi, but a lot faster - not really important)

So, in my boredom I updated the webcore and webcore piston smart apps from imnotbob's webcore-hubitat patches repo. Everything else was already up to date, but those two were updated 2 days ago (25MAR2020) so I figured what the heck. Now I can't get to the dashboard. I tried all the combinations of rebooting, changing the password, logging out, registering a new instance and always end up in the same spot.

The frustrating bit is that I don't know where to debug this from - nothing shows up in the hubitat logs - even with the //log.debugs uncommented, and the logs on the webcore server are not revealing - which is to say, looking at the apache logs don't tell me anything.

The console for chrome on the other hand (I tried other browsers and machines, as well as clearing cache, rebuilding the cache etc.) has quite a bit to say:

A cookie associated with a cross-site resource at https://google.com/ was set without the `SameSite` attribute. It has been blocked, as Chrome now only delivers cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
(index):1 A cookie associated with a cross-site resource at http://google.com/ was set without the `SameSite` attribute. It has been blocked, as Chrome now only delivers cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
(index):1 Unchecked runtime.lastError: The message port closed before a response was received.
(index):1 Error handling response: TypeError: Cannot read property 'css' of undefined
    at chrome-extension://pabfempgigicdjjlccdgnbmeggkbjdhd/stylist.js:5:49
visors.module.js:1 Uncaught SyntaxError: Unexpected token '<'
DevTools failed to parse SourceMap: chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/include.preload.js.map
DevTools failed to parse SourceMap: chrome-extension://hdokiejnpimakedhajhdlcegeplioahd/sourcemaps/onloadwff.js.map
dashboard.module.js:1305 [Deprecation] getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
(anonymous) @ dashboard.module.js:1305
instantiate @ components.min.js:48
(anonymous) @ components.min.js:98
link @ components.min.js:343
(anonymous) @ components.min.js:20
sa @ components.min.js:89
n @ components.min.js:74
g @ components.min.js:65
(anonymous) @ components.min.js:65
(anonymous) @ components.min.js:70
d @ components.min.js:67
m @ components.min.js:71
E @ components.min.js:342
$broadcast @ components.min.js:156
(anonymous) @ components.min.js:347
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
$apply @ components.min.js:153
l @ components.min.js:106
v.onload @ components.min.js:111
load (async)
(anonymous) @ components.min.js:111
q @ components.min.js:107
(anonymous) @ components.min.js:105
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
$apply @ components.min.js:153
(anonymous) @ components.min.js:25
invoke @ components.min.js:48
c @ components.min.js:25
Pc @ components.min.js:26
ue @ components.min.js:24
(anonymous) @ components.min.js:336
j @ components.min.js:2
k @ components.min.js:2
setTimeout (async)
(anonymous) @ components.min.js:2
i @ components.min.js:2
fireWith @ components.min.js:2
fire @ components.min.js:2
i @ components.min.js:2
fireWith @ components.min.js:2
ready @ components.min.js:2
R @ components.min.js:3
components.min.js:110 GET about:blank/intf/dashboard/load?token=&dashboard=0&dev=0&callback=angular.callbacks._0 net::ERR_UNKNOWN_URL_SCHEME
f @ components.min.js:110
(anonymous) @ components.min.js:111
q @ components.min.js:107
(anonymous) @ components.min.js:105
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
(anonymous) @ components.min.js:153
e @ components.min.js:52
(anonymous) @ components.min.js:55
setTimeout (async)
k.defer @ components.min.js:55
$evalAsync @ components.min.js:153
(anonymous) @ components.min.js:137
h @ components.min.js:139
then @ components.min.js:142
n @ components.min.js:104
n.<computed> @ components.min.js:109
dataService.loadInstance @ app.js:923
$scope.init @ dashboard.module.js:36
(anonymous) @ dashboard.module.js:1300
setInterval (async)
(anonymous) @ dashboard.module.js:1297
instantiate @ components.min.js:48
(anonymous) @ components.min.js:98
link @ components.min.js:343
(anonymous) @ components.min.js:20
sa @ components.min.js:89
n @ components.min.js:74
g @ components.min.js:65
(anonymous) @ components.min.js:65
(anonymous) @ components.min.js:70
d @ components.min.js:67
m @ components.min.js:71
E @ components.min.js:342
$broadcast @ components.min.js:156
(anonymous) @ components.min.js:347
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
$apply @ components.min.js:153
l @ components.min.js:106
v.onload @ components.min.js:111
load (async)
(anonymous) @ components.min.js:111
q @ components.min.js:107
(anonymous) @ components.min.js:105
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
$apply @ components.min.js:153
(anonymous) @ components.min.js:25
invoke @ components.min.js:48
c @ components.min.js:25
Pc @ components.min.js:26
ue @ components.min.js:24
(anonymous) @ components.min.js:336
j @ components.min.js:2
k @ components.min.js:2
setTimeout (async)
(anonymous) @ components.min.js:2
i @ components.min.js:2
fireWith @ components.min.js:2
fire @ components.min.js:2
i @ components.min.js:2
fireWith @ components.min.js:2
ready @ components.min.js:2
R @ components.min.js:3
components.min.js:127 TypeError: Cannot read property 'id' of null
    at dashboard.module.js:53
    at components.min.js:139
    at m.$digest (components.min.js:150)
    at m.$apply (components.min.js:153)
    at l (components.min.js:106)
    at components.min.js:111
    at HTMLScriptElement.m (components.min.js:110) "Possibly unhandled rejection: {}"
(anonymous) @ components.min.js:127
(anonymous) @ components.min.js:99
g @ components.min.js:138
$digest @ components.min.js:150
$apply @ components.min.js:153
l @ components.min.js:106
(anonymous) @ components.min.js:111
m @ components.min.js:110
error (async)
f @ components.min.js:110
(anonymous) @ components.min.js:111
q @ components.min.js:107
(anonymous) @ components.min.js:105
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
(anonymous) @ components.min.js:153
e @ components.min.js:52
(anonymous) @ components.min.js:55
setTimeout (async)
k.defer @ components.min.js:55
$evalAsync @ components.min.js:153
(anonymous) @ components.min.js:137
h @ components.min.js:139
then @ components.min.js:142
n @ components.min.js:104
n.<computed> @ components.min.js:109
dataService.loadInstance @ app.js:923
$scope.init @ dashboard.module.js:36
(anonymous) @ dashboard.module.js:1300
setInterval (async)
(anonymous) @ dashboard.module.js:1297
instantiate @ components.min.js:48
(anonymous) @ components.min.js:98
link @ components.min.js:343
(anonymous) @ components.min.js:20
sa @ components.min.js:89
n @ components.min.js:74
g @ components.min.js:65
(anonymous) @ components.min.js:65
(anonymous) @ components.min.js:70
d @ components.min.js:67
m @ components.min.js:71
E @ components.min.js:342
$broadcast @ components.min.js:156
(anonymous) @ components.min.js:347
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
$apply @ components.min.js:153
l @ components.min.js:106
v.onload @ components.min.js:111
load (async)
(anonymous) @ components.min.js:111
q @ components.min.js:107
(anonymous) @ components.min.js:105
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
$apply @ components.min.js:153
(anonymous) @ components.min.js:25
invoke @ components.min.js:48
c @ components.min.js:25
Pc @ components.min.js:26
ue @ components.min.js:24
(anonymous) @ components.min.js:336
j @ components.min.js:2
k @ components.min.js:2
setTimeout (async)
(anonymous) @ components.min.js:2
i @ components.min.js:2
fireWith @ components.min.js:2
fire @ components.min.js:2
i @ components.min.js:2
fireWith @ components.min.js:2
ready @ components.min.js:2
R @ components.min.js:3
/register:1 A cookie associated with a cross-site resource at http://googletagservices.com/ was set without the `SameSite` attribute. It has been blocked, as Chrome now only delivers cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
DevTools failed to parse SourceMap: http://10.20.30.130/css/components/bootstrap-select.css.map
ads:1 Failed to load resource: the server responded with a status of 403 ()
googleads.g.doubleclick.net/pagead/html/r20200324/r20190131/zrt_lookup.html#:1 Unchecked runtime.lastError: The message port closed before a response was received.
googleads.g.doubleclick.net/pagead/html/r20200324/r20190131/zrt_lookup.html#:1 Error handling response: TypeError: Cannot read property 'css' of undefined
    at chrome-extension://pabfempgigicdjjlccdgnbmeggkbjdhd/stylist.js:5:49
DevTools failed to parse SourceMap: http://10.20.30.130/css/components/bootstrap-select.css.map
DevTools failed to parse SourceMap: chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/include.postload.js.map
2DevTools failed to parse SourceMap: chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/include.preload.js.map
DevTools failed to parse SourceMap: chrome-extension://hdokiejnpimakedhajhdlcegeplioahd/sourcemaps/onloadwff.js.map
DevTools failed to parse SourceMap: chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/include.postload.js.map
DevTools failed to parse SourceMap: chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/include.preload.js.map
DevTools failed to parse SourceMap: chrome-extension://hdokiejnpimakedhajhdlcegeplioahd/sourcemaps/onloadwff.js.map
ads:1 Unchecked runtime.lastError: The message port closed before a response was received.
ads:1 Error handling response: TypeError: Cannot read property 'css' of undefined
    at chrome-extension://pabfempgigicdjjlccdgnbmeggkbjdhd/stylist.js:5:49
DevTools failed to parse SourceMap: chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/include.postload.js.map
DevTools failed to parse SourceMap: chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/include.preload.js.map
runner.html:1 Unchecked runtime.lastError: The message port closed before a response was received.
runner.html:1 Error handling response: TypeError: Cannot read property 'css' of undefined
    at chrome-extension://pabfempgigicdjjlccdgnbmeggkbjdhd/stylist.js:5:49
DevTools failed to parse SourceMap: chrome-extension://hdokiejnpimakedhajhdlcegeplioahd/sourcemaps/onloadwff.js.map
DevTools failed to parse SourceMap: chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/include.postload.js.map
components.min.js:110 GET https://http//10.20.30.2.api.smartthings.com/api/token/1/apps/a-pi/4-0/?a-cces-s_token=0bd7/smartapps/installations/791d-2c0-3-45-30-a-a04--bddbc7699b05/intf/dashboard/load?token=&dashboard=0&dev=0&callback=angular.callbacks._1 net::ERR_NAME_NOT_RESOLVED
f @ components.min.js:110
(anonymous) @ components.min.js:111
q @ components.min.js:107
(anonymous) @ components.min.js:105
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
(anonymous) @ components.min.js:153
e @ components.min.js:52
(anonymous) @ components.min.js:55
setTimeout (async)
k.defer @ components.min.js:55
$evalAsync @ components.min.js:153
(anonymous) @ components.min.js:137
h @ components.min.js:139
then @ components.min.js:142
n @ components.min.js:104
n.<computed> @ components.min.js:109
dataService.loadInstance @ app.js:923
$scope.init @ dashboard.module.js:36
(anonymous) @ dashboard.module.js:1300
setInterval (async)
(anonymous) @ dashboard.module.js:1297
instantiate @ components.min.js:48
(anonymous) @ components.min.js:98
link @ components.min.js:343
(anonymous) @ components.min.js:20
sa @ components.min.js:89
n @ components.min.js:74
g @ components.min.js:65
(anonymous) @ components.min.js:65
(anonymous) @ components.min.js:70
d @ components.min.js:67
m @ components.min.js:71
E @ components.min.js:342
$broadcast @ components.min.js:156
(anonymous) @ components.min.js:347
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
$apply @ components.min.js:153
l @ components.min.js:106
v.onload @ components.min.js:111
load (async)
(anonymous) @ components.min.js:111
q @ components.min.js:107
(anonymous) @ components.min.js:105
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
$apply @ components.min.js:153
(anonymous) @ components.min.js:289
dispatch @ components.min.js:3
q.handle @ components.min.js:3
components.min.js:127 TypeError: Cannot read property 'id' of null
    at dashboard.module.js:53
    at components.min.js:139
    at m.$digest (components.min.js:150)
    at m.$apply (components.min.js:153)
    at l (components.min.js:106)
    at components.min.js:111
    at HTMLScriptElement.m (components.min.js:110) "Possibly unhandled rejection: {}"
(anonymous) @ components.min.js:127
(anonymous) @ components.min.js:99
g @ components.min.js:138
$digest @ components.min.js:150
$apply @ components.min.js:153
l @ components.min.js:106
(anonymous) @ components.min.js:111
m @ components.min.js:110
error (async)
f @ components.min.js:110
(anonymous) @ components.min.js:111
q @ components.min.js:107
(anonymous) @ components.min.js:105
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
(anonymous) @ components.min.js:153
e @ components.min.js:52
(anonymous) @ components.min.js:55
setTimeout (async)
k.defer @ components.min.js:55
$evalAsync @ components.min.js:153
(anonymous) @ components.min.js:137
h @ components.min.js:139
then @ components.min.js:142
n @ components.min.js:104
n.<computed> @ components.min.js:109
dataService.loadInstance @ app.js:923
$scope.init @ dashboard.module.js:36
(anonymous) @ dashboard.module.js:1300
setInterval (async)
(anonymous) @ dashboard.module.js:1297
instantiate @ components.min.js:48
(anonymous) @ components.min.js:98
link @ components.min.js:343
(anonymous) @ components.min.js:20
sa @ components.min.js:89
n @ components.min.js:74
g @ components.min.js:65
(anonymous) @ components.min.js:65
(anonymous) @ components.min.js:70
d @ components.min.js:67
m @ components.min.js:71
E @ components.min.js:342
$broadcast @ components.min.js:156
(anonymous) @ components.min.js:347
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
$apply @ components.min.js:153
l @ components.min.js:106
v.onload @ components.min.js:111
load (async)
(anonymous) @ components.min.js:111
q @ components.min.js:107
(anonymous) @ components.min.js:105
(anonymous) @ components.min.js:139
$digest @ components.min.js:150
$apply @ components.min.js:153
(anonymous) @ components.min.js:289
dispatch @ components.min.js:3
q.handle @ components.min.js:3
components.min.js:127 O {message: "adsbygoogle.push() error: Only one 'enable_page_level_ads' allowed per page.", name: "TagError", pbr: true, stack: "TagError: adsbygoogle.push() error: Only one 'enab…esyndication.com/pagead/js/adsbygoogle.js:57:409)"} "<ins class="adsbygoogle" style="display:inline-block;width:120px;height:600px;padding: 20px;" data-ad-client="ca-pub-4643048739403893" data-ad-slot="8683068091" ng-init="initAds();">"

Some of that is some extension complaining, though nothing has changed recently either. 403 is an unauthorized code, but I'm not sure what to do with that. The line that gets me the most confused is this one:
https://http//10.20.30.2.api.smartthings.com/api/token/1/apps/a-pi/4-0/?a-cces-s_token=0bd7/smartapps/installations/791d-2c0-3-45-30-a-a04--bddbc7699b05/intf/dashboard/load?token=&dashboard=0&dev=0&callback=angular.callbacks._1

um... yeah.

Anyway, ask away, I wanted to drop this in here while I had the chance (trying to also be working at the same time).

Did you load the apps that were modified for Hubitat or the ST ones? Do you have the settings enabled for a custom endpoint?

They were the apps off the hubitat-patches branch, custom endpoint is set - all those settings are still the same (this was working fine till I decided to update)

In case I forgot to mention it, the two I updated were:
webcore.src
webcore-piston.src

I tried going back to the previous version that I think was on there (stupidly didn't write it down - but I think it was just the last 2019 build) but that didn't change anything.

I'm on the current build and it's working fine. Did you also update your server to the latest dashboard code? You know, you don't have to use the local dashboard anymore. You can use dashboard.webcore.co to edit your pistons just like in ST.

I updated what had changed - though the point of the local server is to not need to go to the internet for it. Being able to do both would be nice, but one thing at a time.

The dashboard won't load because the dashboard software has to be updated. That's the software on your pi.

thats what I meant by updating whats changed - not just the smart apps. that said, not much changed on the dashboard side either - by which I mean, number of files (not lines of code).

I'll quintuple check I guess..

Yep. Everything's up to date - smart apps on hubitat and server bits on the pi.

Worth noting, all the pistons are actually running... I just can't actually modify them or see the dashboard.

Did you try switching to the cloud dashboard?

Well, all my pistons are stored locally, so they wouldn't show up on the cloud - but for giggles, I tried the cloud anyway and got the same error.

Yes, they will. They are not stored on your dashboard server, they are stored on your hub. They wouldn't be able to run if you stored them on your dashboard server, would they? You can swap between the cloud dashboard and the local dashboard at any time.

sigh

Ok, yes, I'm aware they're stored on the hub. I've not been on the cloud since I was an ST user. The fact that I see the same error on the cloud takes us back to the beginning though since it rules out the server - perhaps in a different way, but it doesn't matter since there's no usable logging going on on the server side thats relevant to accessibility since nothing shows up on the hub logs.

So, you changed to the cloud dashboard and you still can't load your pistons? Are you sure that you pasted the correct code in the correct app? I'm sorry, but if it won't load, and you're sure you have the right code, there's not much anyone can do for you. How many pistons do you have?

Maybe 30 or so. A lot have backup codes - some don't, which is odd because thats like the first thing I do when creating a piston is to enable automatic backups. The code shows up in the piston child app in hubitat - if it has one.

Aha! I must have updated the app.js at some point and forgot about this. This may only apply if your running a local server without https (mine's not accessible outside my net without vpn). At around line 880 you have to change:
if (!uri.startsWith('https://')) {
to
if (!(uri.startsWith('https://') || uri.startsWith('http://'))) {
(or just change the https to http)

This was scratching at the back of my mind... I don't remember for the life of me where I found this solution the first time - wasn't something I came up with.. probably with regards to setup on a local server initially.

Anyway, there you go. :smiley:

That shouldn't be necessary. I was running on a local server for quite a while without having to change that. Do you have your web server set up to not accept HTTPS connections?

Not explicitly, more like the reverse (inverse?) - I don't have it set up to accept https connections. I suppose I could re-direct (or setup https), but this will suffice.

I had to make that change a long time ago - but I could have sworn I'd updated since the last time I had done it. I'd figured they just added some logic in to deal with http connections (similar to what I did), but maybe it was a fluke.. :man_shrugging:

Interesting... I have been trying to figure out why only one of my three Windows 10 PC's (all running same OS build, identical verstions of Chrome, hard reload'ed, etc.) would always fail to load the dashboard from my local Rpi; I was able to use the cloud dashboard on all of them however. Your fix jogged my memory of a problem I ran into some time ago, with a similar but not identical fix that @jp0550 provided: Patched webCoRE for Hubitat (2018/09/09)

I guess this fix never made it into the current repo.

I re-applied the above fix and now my problematic PC works fine with my local dashboard. I also noticed that this PC runs Win10 Home Edition while the other two (which didn't need this fix) are Win10 Pro; only difference in the Windows platform I can see.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.