Missing longpoll events error

Begonnen von malc_b, 05 März 2017, 19:09:13

Vorheriges Thema - Nächstes Thema

malc_b

Sorry this is in english

I'm getting red toast messages saying missing longpoll events since recent upgrades.  Searching seems to come up with any number of suggestions for what the meta tags in the head should be set to so I don't know if this is the problem.  The details on github do not seemed to have changed so could we have a definitive example there of what the metatags should be so I can exclude that.

It would also be useful on github to mention that csrfToken=none and longpoll=websocket are needed as attributes for web.

malc_b

BTW console reports no longpoll for 19-23 minutes, (i.e. 1000+ seconds).  Web browser has been in background sometime too.

setstate

Thats okay. Browser-Tabs in the background doesn't receive updates. The HealthCheck triggers restart longpoll, if the last update is too old. We can discuss about the alert toast, but the restart is okay.
Maybe it's better, just to pop up an info toast instead of the alert. 

malc_b

Thanks for the reply.

I don't think it is a real timeout.  Here is a captured console message

No longpoll event since 1486197329.505secondes -> restart polling

And that was about 30s max after opening the browser window and I didn't shift away from that window

Scrolling back through console here is another message

Longpoll last event before: 17201 day(s) 8 hour(s) 37 minute(s) 29 second(s)

I don't think the timer is actually running.

malc_b

#4
I can't seem to find where

ftui.poll.lastEventTimestamp

is set to the last poll time.  I'm looking with chrome dev tools and ftui.poll.lastEventTimestamp always seems to be 1970.  Hence I'm seeing a missing longpoll event each time health check runs.

According to console ftui.poll.lasteEventTimestamp and lastUpdateTimestamp are both 1970.  Only ftui.poll.lastShortpollTimestamp is showing current date and time.

BTW I mean that I can see line 1050 sets ftui.poll.lastEventTimestamp to new date (i.e. current time) but code never gets there.

UPDATE:

OK, so I need to change something on the screen before update runs.  That then sets lastUpdateTimestamp to current time.  But health check is still running so eventually unless I change something more it will throw up an error.  The logic is wrong with this check or update should run from a timer and not just when the user interacts.

setstate

Seems that longpoll doesn't work. Is it configured? Does you page contain devices which send update events. Load index_state.html to check longpoll settings.

malc_b

#6
Attached is the screen shot of index_state.html

I do have devices like MAX rad valves but they don't change that often.  Do I need a dummy AT to force a changing state?

This is my index.html head

  <meta name='longpoll' content='1'> <!-- 1=longpoll;0=shortpoll every 30sec -->
  <meta name='debug' content='2'> <!-- verbose level 1-6 = output to console;0 = not output -->
  <meta name='longpoll_type' content='websocket'>

setstate

If you feel certain that longpoll works and your only problem is the low frequency of update events, then you could change the meta tag "longpoll_maxage" and  increase the value to your need or set it to 0 to disable the age check.

malc_b

I'll try that.  BTW should you not be setting longpoll last update to the current time when it is created?  Otherwise first healthcheck throws an error if no update has occurred.  Below is my log after "empty cache and hard reload".  I've set maxage to zero which supresses the errors but console still reports them.  I've also created a heart dummy and a heartbeat at to toggle heart.  This toggles every 25s to give fhem some activity.  It's not on the current page I'm looking at in ftui so is that why this has helped?  And what is the #2a2a2a?


fhem-tablet-ui.js:1981 Base dir: ./
fhem-tablet-ui.js:1696 Filename:
fhem-tablet-ui.js:1696 FHEM dir: http://192.168.0.60:8083/fhem/
fhem-tablet-ui.js:1696 initPage - area=
fhem-tablet-ui.js:1696 initWidgets - area=
fhem-tablet-ui.js:1696 Load widget : pagebutton
fhem-tablet-ui.js:1696 Create widget : pagebutton
fhem-tablet-ui.js:1696 Load widget : clock
fhem-tablet-ui.js:1696 Create widget : clock
fhem-tablet-ui.js:1696 init templates - Done
fhem-tablet-ui.js:1696 Got csrf from FHEM:null
fhem-tablet-ui.js:1696 Create widget : famultibutton
fhem-tablet-ui.js:1696 function depends_clock not found (maybe ok)
fhem-tablet-ui.js:1696 Try to init plugin: clock
fhem-tablet-ui.js:1696 init widget: name=clock area=
fhem-tablet-ui.js:1696 Loaded plugin: clock
fhem-tablet-ui.js:1696 Loaded plugin: famultibutton
fhem-tablet-ui.js:1696 Try to init plugin: pagebutton
fa-multi-button.min.js:1#2a2a2a #505050
fa-multi-button.min.js:1dsdsf
fa-multi-button.min.js:1#2a2a2a #2a2a2a
fa-multi-button.min.js:1dsdsf
fa-multi-button.min.js:1#2a2a2a #2a2a2a
fa-multi-button.min.js:1dsdsf
fa-multi-button.min.js:1#2a2a2a #2a2a2a
fa-multi-button.min.js:1dsdsf
fa-multi-button.min.js:1#2a2a2a #2a2a2a
fa-multi-button.min.js:1dsdsf
fa-multi-button.min.js:1#2a2a2a #2a2a2a
fa-multi-button.min.js:1dsdsf
fhem-tablet-ui.js:1696 Loaded plugin: pagebutton
fhem-tablet-ui.js:1696 initWidgets - Done
fhem-tablet-ui.js:1696 start shortpoll in (ms):500
fhem-tablet-ui.js:1696 pagebutton: start to load content from $("#content0")
fhem-tablet-ui.js:1696 pagebutton: start to load content from $("#content1")
fhem-tablet-ui.js:1696 pagebutton: new content from $("#content0") loaded
fhem-tablet-ui.js:1696 initPage - area=#content0
fhem-tablet-ui.js:1696 initWidgets - area=#content0
fhem-tablet-ui.js:1696 initWidgets - Done
fhem-tablet-ui.js:1696 start shortpoll in (ms):500
fhem-tablet-ui.js:1696 init templates - Done
fhem-tablet-ui.js:1696 pagebutton: new content from $("#content1") loaded
fhem-tablet-ui.js:1696 initPage - area=#content1
fhem-tablet-ui.js:1696 initWidgets - area=#content1
fhem-tablet-ui.js:1696 Load widget : popup
fhem-tablet-ui.js:1696 Create widget : popup
fhem-tablet-ui.js:1696 Load widget : thermostat
fhem-tablet-ui.js:1696 Create widget : thermostat
fhem-tablet-ui.js:1696 Load widget : label
fhem-tablet-ui.js:1696 Create widget : label
fhem-tablet-ui.js:1696 Load widget : switch
fhem-tablet-ui.js:1696 Create widget : switch
fhem-tablet-ui.js:1696 Load widget : select
fhem-tablet-ui.js:1696 Create widget : select
fhem-tablet-ui.js:1696 Load widget : homestatus
fhem-tablet-ui.js:1696 Create widget : homestatus
fhem-tablet-ui.js:1696 init templates - Done
fhem-tablet-ui.js:1696 function depends_select not found (maybe ok)
fhem-tablet-ui.js:1696 Try to init plugin: select
fhem-tablet-ui.js:1696 init widget: name=select area=#content1
fhem-tablet-ui.js:1696 Loaded plugin: select
fhem-tablet-ui.js:1696 Create widget : famultibutton
fhem-tablet-ui.js:1696 function depends_label not found (maybe ok)
fhem-tablet-ui.js:1696 Try to init plugin: label
fhem-tablet-ui.js:1696 init widget: name=label area=#content1
fhem-tablet-ui.js:1696 Loaded plugin: label
fhem-tablet-ui.js:1696 Create widget : knob
fhem-tablet-ui.js:1696 start shortpoll
fhem-tablet-ui.js:1696 send to FHEM: jsonlist2 WEB STATE longpoll
fhem-tablet-ui.js:1696 start shortpoll in (ms):30000
fhem-tablet-ui.js:1696 Create widget : knob
fhem-tablet-ui.js:1696 shortpoll: fhemJSON.Results.length=1
fhem-tablet-ui.js:1696 shortPoll - Done
fhem-tablet-ui.js:1696 document triggered updateDone
fhem-tablet-ui.js:1696 initLongpoll: true
fhem-tablet-ui.js:1696 Loaded plugin: famultibutton
fhem-tablet-ui.js:1696 Try to init plugin: switch
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fa-multi-button.min.js:1 #2a2a2a #2a2a2a
fa-multi-button.min.js:1 dsdsf
fhem-tablet-ui.js:1696 Loaded plugin: switch
fhem-tablet-ui.js:1696 Try to init plugin: popup
fhem-tablet-ui.js:1696 Loaded plugin: popup
fhem-tablet-ui.js:1696 websockets URL=ws://192.168.0.60:8083/fhem/?XHR=1&inform=type=status;filter=.*;fmt=JSON&fwcsrf=null
fhem-tablet-ui.js:1696 Loaded plugin: knob
fhem-tablet-ui.js:1696 Try to init plugin: thermostat
fhem-tablet-ui.js:1696 Loaded plugin: thermostat
fhem-tablet-ui.js:1696 Loaded plugin: knob
fhem-tablet-ui.js:1696 Try to init plugin: homestatus
fhem-tablet-ui.js:1696 Loaded plugin: homestatus
fhem-tablet-ui.js:1696 initWidgets - Done
fhem-tablet-ui.js:1696 start shortpoll in (ms):500
fhem-tablet-ui.js:1696 start shortpoll
fhem-tablet-ui.js:1696 send to FHEM: jsonlist2 WEB,HomeState,MAX_Lounge1,MAX_MasterBed,MAX_MasterEnsuite,MHRV1,MHRV2,atMHRV1,atMHRV2,MHRV1btimer,MHRV1stimer,MHRV2btimer,MHRV2stimer STATE longpoll desiredTemperature temperature valveposition Tmode mode battery setList
fhem-tablet-ui.js:1696 start shortpoll in (ms):900000
fhem-tablet-ui.js:1696 shortpoll: fhemJSON.Results.length=13
fhem-tablet-ui.js:1696 update done for "MAX_Lounge1:mode"
fhem-tablet-ui.js:1696 update done for "MAX_Lounge1:mode"
fhem-tablet-ui.js:1696 update done for "MAX_MasterBed:mode"
fhem-tablet-ui.js:1696 update done for "MAX_MasterBed:mode"
fhem-tablet-ui.js:1696 update done for "MAX_MasterEnsuite:mode"
fhem-tablet-ui.js:1696 update done for "MAX_MasterEnsuite:mode"
fhem-tablet-ui.js:1696 shortPoll - Done
fhem-tablet-ui.js:1338 --------- start healthCheck --------------
fhem-tablet-ui.js:1339 now: Tue Mar 07 2017 17:46:05 GMT+0000 (GMT Standard Time)
fhem-tablet-ui.js:1340 FTUI version: 2.6.11
fhem-tablet-ui.js:1341 Longpoll: true
fhem-tablet-ui.js:1342 Longpoll type: websocket
fhem-tablet-ui.js:1343 Longpoll objects there: true
fhem-tablet-ui.js:1344 Longpoll curent line: 0
fhem-tablet-ui.js:1345 Longpoll last event before: 2 second(s)
fhem-tablet-ui.js:1346 Longpoll last reading uodate before: 17201 day(s) 17 hour(s) 46 minute(s) 5 second(s)
fhem-tablet-ui.js:1347 Shortpoll interval: 900
fhem-tablet-ui.js:1348 Shortpoll last run before: 57 second(s)
fhem-tablet-ui.js:1349 FHEM dev/par count: 31
fhem-tablet-ui.js:1350 FTUI known devices count: 13
fhem-tablet-ui.js:1351 Page length: 142607
fhem-tablet-ui.js:1352 Widgets count: 229
fhem-tablet-ui.js:1353 --------- end healthCheck ---------------
fhem-tablet-ui.js:1338 --------- start healthCheck --------------
fhem-tablet-ui.js:1339 now: Tue Mar 07 2017 17:47:05 GMT+0000 (GMT Standard Time)
fhem-tablet-ui.js:1340 FTUI version: 2.6.11
fhem-tablet-ui.js:1341 Longpoll: true
fhem-tablet-ui.js:1342 Longpoll type: websocket
fhem-tablet-ui.js:1343 Longpoll objects there: true
fhem-tablet-ui.js:1344 Longpoll curent line: 0
fhem-tablet-ui.js:1345 Longpoll last event before: 12 second(s)
fhem-tablet-ui.js:1346 Longpoll last reading uodate before: 17201 day(s) 17 hour(s) 47 minute(s) 5 second(s)
fhem-tablet-ui.js:1347 Shortpoll interval: 900
fhem-tablet-ui.js:1348 Shortpoll last run before: 1 minute(s) 57 second(s)
fhem-tablet-ui.js:1349 FHEM dev/par count: 31
fhem-tablet-ui.js:1350 FTUI known devices count: 13
fhem-tablet-ui.js:1351 Page length: 142607
fhem-tablet-ui.js:1352 Widgets count: 229
fhem-tablet-ui.js:1353 --------- end healthCheck ---------------