FHEMweb ungenügender update

Begonnen von martinp876, 28 Dezember 2013, 10:42:55

Vorheriges Thema - Nächstes Thema

martinp876

Im web-interface wird die Ansicht nicht immer korrekt upgedated.

Beispiel ist HM. Wenn ein licht geschaltet wird komme erst der status "set_on" und dann "on".
Korrekt funktioniert es (2 updates) wenn
- man es in einem externen Fenster oder von einer console aus macht
- man das devstateicon anclickt UND xhr genutzt wird

inkorrekt ist es wenn
- man ein webCmd im Fenster anclickt
- man longpoll abschaltet und das devstateicon anclickt

Im fehlerfall wird nur das erste Event verarbeitet (set_on) aber nicht mehr das 2. Auch andere Readings auf der webseite, wenn sie sich zeitgleich ändern sollten, bleiben beim ersten Ereigniss stehen (Beispiel: der state des device bleibt auf CMD_processing und geht nicht auf CMDS_done)

Parallel laufende webseiten, von denen aus keine kommandos gesendet werden sind aktuell, habe keine Fehler

Gruss Martin

rudolfkoenig

Wenn man longpoll abschaltet, dann wird es fuer HM nie richtig funktionieren, prinzipbedingt. Das war der Grund, warum ich mit set_on lange nicht anfreunden konnte.

Falls es bei angeschalteten longpoll auch nicht funktioniert, dann bitte folgendes beschreiben:
- FHEMWEB Definition mit allen Attributen
- Definition eines betroffenen Geraetes mit allen Attributen
- Event-Mitschnitt beim Schalten.
- Browser/OS
- worauf man geklickt hat, und was man bekommt.

martinp876

Hallo Rudi,

dein Problem mit set_ verstehe ich nicht. Das web-interface muss schnell genug sein, alle Änderungen mitzubekommen. Da sehe ich keinen Spielraum. Es könnte schließlich auch anderen Ereignisse geben, die quasi gleichzeitig kommen.  Zumindest die letzte Event darf nicht verloren gehen.
Ansonsten ist set_ m.E. hilfreich falls kein ack kommt.

Nachstellen sollte es eigentlich einfach sein. Es konnte bisher jeder nachvollziehen wenn man es so macht wie einleitend beschrieben.
longpoll war nur als Hinweis zu verstehen. das Icon, oder besser der link dahinter ist grundlegend anders bei longpoll - das macht den Unterschied. evtl spart der xhr mode die Entscheidende Performance?
Die commands von webCmd sind immer 'nur' mit einem Link hinterlegt. Bei Nutzung des Links ist irgend etwas zu langsam.

Hier die Daten
Gruss und Danke Martin

Zitatfhem> list LichtFH

Internals:
   DEF        1A0A0201
   NAME       LichtFH
   NR         93
   STATE      off
   TYPE       CUL_HM
   chanNo     01
   device     LichtDev
   peerList   FB_Btn_11,Tast_01,self01,
   Readings:
     2013-12-28 09:56:42   CommandAccepted yes
     2013-12-27 10:10:31   R-FB_Btn_11-lgActionType jmpToTarget
     2013-12-27 10:10:31   R-FB_Btn_11-lgCtDlyOff geLo
     2013-12-27 10:10:31   R-FB_Btn_11-lgCtDlyOn geLo
     2013-12-27 10:10:31   R-FB_Btn_11-lgCtOff geLo
     2013-12-27 10:10:31   R-FB_Btn_11-lgCtOn geLo
     2013-12-27 10:10:31   R-FB_Btn_11-lgCtValHi 100
     2013-12-27 10:10:31   R-FB_Btn_11-lgCtValLo 50
     2013-12-27 10:10:31   R-FB_Btn_11-lgMultiExec on
     2013-12-19 09:27:52   R-FB_Btn_11-lgOffDly 0 s
     2013-12-19 09:27:52   R-FB_Btn_11-lgOffTime 111600 s
     2013-12-27 10:10:31   R-FB_Btn_11-lgOffTimeMode absolut
     2013-12-19 09:27:52   R-FB_Btn_11-lgOnDly 0 s
     2013-12-19 09:27:52   R-FB_Btn_11-lgOnTime 111600 s
     2013-12-27 10:10:31   R-FB_Btn_11-lgOnTimeMode absolut
     2013-12-27 10:10:31   R-FB_Btn_11-lgSwJtDlyOff off
     2013-12-27 10:10:31   R-FB_Btn_11-lgSwJtDlyOn on
     2013-12-27 10:10:31   R-FB_Btn_11-lgSwJtOff dlyOn
     2013-12-27 10:10:31   R-FB_Btn_11-lgSwJtOn dlyOff
     2013-12-27 10:10:31   R-FB_Btn_11-shActionType jmpToTarget
     2013-12-27 10:10:31   R-FB_Btn_11-shCtDlyOff geLo
     2013-12-27 10:10:31   R-FB_Btn_11-shCtDlyOn geLo
     2013-12-27 10:10:31   R-FB_Btn_11-shCtOff geLo
     2013-12-27 10:10:31   R-FB_Btn_11-shCtOn geLo
     2013-12-27 10:10:31   R-FB_Btn_11-shCtValHi 100
     2013-12-27 10:10:31   R-FB_Btn_11-shCtValLo 50
     2013-12-19 09:27:52   R-FB_Btn_11-shOffDly 0 s
     2013-12-19 09:27:52   R-FB_Btn_11-shOffTime 111600 s
     2013-12-27 10:10:31   R-FB_Btn_11-shOffTimeMode absolut
     2013-12-19 09:27:52   R-FB_Btn_11-shOnDly 0 s
     2013-12-19 09:27:52   R-FB_Btn_11-shOnTime 111600 s
     2013-12-27 10:10:31   R-FB_Btn_11-shOnTimeMode absolut
     2013-12-27 10:10:31   R-FB_Btn_11-shSwJtDlyOff off
     2013-12-27 10:10:31   R-FB_Btn_11-shSwJtDlyOn on
     2013-12-27 10:10:31   R-FB_Btn_11-shSwJtOff dlyOn
     2013-12-27 10:10:31   R-FB_Btn_11-shSwJtOn dlyOff
     2013-12-27 10:10:32   R-Tast_01-lgActionType jmpToTarget
     2013-12-27 10:10:32   R-Tast_01-lgCtDlyOff geLo
     2013-12-27 10:10:32   R-Tast_01-lgCtDlyOn geLo
     2013-12-27 10:10:32   R-Tast_01-lgCtOff geLo
     2013-12-27 10:10:32   R-Tast_01-lgCtOn geLo
     2013-12-27 10:10:32   R-Tast_01-lgCtValHi 100
     2013-12-27 10:10:32   R-Tast_01-lgCtValLo 50
     2013-12-27 10:10:32   R-Tast_01-lgMultiExec on
     2013-12-19 09:27:53   R-Tast_01-lgOffDly 0 s
     2013-12-19 09:27:53   R-Tast_01-lgOffTime 111600 s
     2013-12-27 10:10:32   R-Tast_01-lgOffTimeMode absolut
     2013-12-19 09:27:53   R-Tast_01-lgOnDly 0 s
     2013-12-19 09:27:53   R-Tast_01-lgOnTime 111600 s
     2013-12-27 10:10:32   R-Tast_01-lgOnTimeMode absolut
     2013-12-27 10:10:32   R-Tast_01-lgSwJtDlyOff off
     2013-12-27 10:10:32   R-Tast_01-lgSwJtDlyOn on
     2013-12-27 10:10:32   R-Tast_01-lgSwJtOff dlyOn
     2013-12-27 10:10:32   R-Tast_01-lgSwJtOn dlyOff
     2013-12-27 10:10:32   R-Tast_01-shActionType jmpToTarget
     2013-12-27 10:10:32   R-Tast_01-shCtDlyOff geLo
     2013-12-27 10:10:32   R-Tast_01-shCtDlyOn geLo
     2013-12-27 10:10:32   R-Tast_01-shCtOff geLo
     2013-12-27 10:10:32   R-Tast_01-shCtOn geLo
     2013-12-27 10:10:32   R-Tast_01-shCtValHi 100
     2013-12-27 10:10:32   R-Tast_01-shCtValLo 50
     2013-12-19 09:27:53   R-Tast_01-shOffDly 0 s
     2013-12-19 09:27:53   R-Tast_01-shOffTime 111600 s
     2013-12-27 10:10:32   R-Tast_01-shOffTimeMode absolut
     2013-12-19 09:27:53   R-Tast_01-shOnDly 0 s
     2013-12-19 09:27:53   R-Tast_01-shOnTime 111600 s
     2013-12-27 10:10:32   R-Tast_01-shOnTimeMode absolut
     2013-12-27 10:10:32   R-Tast_01-shSwJtDlyOff off
     2013-12-27 10:10:32   R-Tast_01-shSwJtDlyOn on
     2013-12-27 10:10:32   R-Tast_01-shSwJtOff dlyOn
     2013-12-27 10:10:32   R-Tast_01-shSwJtOn dlyOff
     2013-12-27 10:10:33   R-self01-lgActionType jmpToTarget
     2013-12-27 10:10:33   R-self01-lgCtDlyOff geLo
     2013-12-27 10:10:33   R-self01-lgCtDlyOn geLo
     2013-12-27 10:10:33   R-self01-lgCtOff geLo
     2013-12-27 10:10:33   R-self01-lgCtOn geLo
     2013-12-27 10:10:33   R-self01-lgCtValHi 100
     2013-12-27 10:10:33   R-self01-lgCtValLo 50
     2013-12-27 10:10:33   R-self01-lgMultiExec on
     2013-12-19 09:27:54   R-self01-lgOffDly 0 s
     2013-12-19 09:27:54   R-self01-lgOffTime 111600 s
     2013-12-27 10:10:33   R-self01-lgOffTimeMode absolut
     2013-12-19 09:27:54   R-self01-lgOnDly 0 s
     2013-12-19 09:27:54   R-self01-lgOnTime 111600 s
     2013-12-27 10:10:33   R-self01-lgOnTimeMode absolut
     2013-12-27 10:10:33   R-self01-lgSwJtDlyOff off
     2013-12-27 10:10:33   R-self01-lgSwJtDlyOn on
     2013-12-27 10:10:33   R-self01-lgSwJtOff dlyOn
     2013-12-27 10:10:33   R-self01-lgSwJtOn dlyOff
     2013-12-27 10:10:33   R-self01-shActionType jmpToTarget
     2013-12-27 10:10:33   R-self01-shCtDlyOff geLo
     2013-12-27 10:10:33   R-self01-shCtDlyOn geLo
     2013-12-27 10:10:33   R-self01-shCtOff geLo
     2013-12-27 10:10:33   R-self01-shCtOn geLo
     2013-12-27 10:10:33   R-self01-shCtValHi 100
     2013-12-27 10:10:33   R-self01-shCtValLo 50
     2013-12-19 09:27:54   R-self01-shOffDly 0 s
     2013-12-19 09:27:54   R-self01-shOffTime 111600 s
     2013-12-27 10:10:33   R-self01-shOffTimeMode absolut
     2013-12-19 09:27:54   R-self01-shOnDly 0 s
     2013-12-19 09:27:54   R-self01-shOnTime 111600 s
     2013-12-27 10:10:33   R-self01-shOnTimeMode absolut
     2013-12-27 10:10:33   R-self01-shSwJtDlyOff no
     2013-12-27 10:10:33   R-self01-shSwJtDlyOn no
     2013-12-27 10:10:33   R-self01-shSwJtOff dlyOn
     2013-12-27 10:10:33   R-self01-shSwJtOn dlyOff
     2013-12-27 10:10:27   R-sign          off
     2013-12-28 09:56:42   deviceMsg       off (to iohl1)
     2013-12-28 09:56:42   level           0 %
     2013-12-28 09:56:42   pct             0
     2013-12-27 10:10:28   peerList        FB_Btn_11,Tast_01,self01,
     2013-12-28 09:56:42   recentStateType ack
     2013-12-28 09:56:42   state           off
     2013-12-28 09:56:42   timedOn         off
     2013-12-27 18:04:47   trigLast        Tast_01 :short
     2013-12-27 18:04:47   trig_Tast_01    short
   Helper:
     peerIDsRaw ,1A0A0201,194DBD01,1820830B,00000000
     Bm:
       Cul_hm_set:
         cnt        305
         mAr        HASH(0xde7da8); LichtFH; toggle
         max        106
         tot        2579
     Role:
       chn        1
     Shadowreg:
Attributes:
   event-on-change-reading .*
   expert     1
   model      HM-LC-SW2-FM
   peerIDs    00000000,1820830B,194DBD01,1A0A0201,
   room       CUL_HM,Licht,Actor
   webCmd     toggle:on:off:statusRequest

###############################################
hem> list WEB

Internals:
   CONNECTS   213
   DEF        8083 global
   FD         5
   NAME       WEB
   NR         8
   NTFY_ORDER 50-WEB
   PORT       8083
   STATE      Initialized
   TYPE       FHEMWEB
   Helper:
     Bm:
       Fw_attr:
         cnt        4
         mAr       
         max        0
         tot        0
       Fw_get:
         cnt        5
         mAr       
         max        0
         tot        0
       Fw_notify:
         cnt        3968
         mAr        HASH(0x75c7f8); HASH(0xdee380)
         max        2
         tot        11
       Fw_read:
         cnt        204
         mAr        HASH(0x75c7f8)
         max        9
         tot        432
       Fw_set:
         cnt        9
         mAr       
         max        0
         tot        0
Attributes:
   roomIcons  Everything:icoEverything Heating:icoHEIZUNG Licht:on Common:icoSYSTEM Heating:icoHEIZUNG IOdev:Prev Rollo:shutter_3
####################################################
#Events beim clicken auf 'off' des webCmd
# das icon bleibt auf dem set_off pendant,
# der sich auch ändernde Status des zugehörigen LichtDev bleibt auf CMDs_processing...
# 'off' wird nicht verarbeitet
2013-12-28 16:33:07.397 CUL_HM LichtFH set_off
2013-12-28 16:33:07.808 CUL_HM LichtFH off
#####################################################
#################webseiten-code##################
<tr class="even"><td><div class="col1"><a href="/fhem?detail=LichtFH">LichtFH</a></div></td>
<td informId="LichtFH"><div id="LichtFH"  class="col2"><a onClick="FW_cmd('/fhem?XHR=1&cmd.LichtFH=set LichtFH on&room=Licht')"><img class=' set_off' src="/fhem/images/default/set_off.png" alt="set_off" title="set_off"></a></div></td>
<td><div class="col3"><a href="/fhem?cmd.LichtFH=set LichtFH toggle&amp;room=Licht">toggle</a></div></td>
<td><div class="col3"><a href="/fhem?cmd.LichtFH=set LichtFH on&amp;room=Licht">on</a></div></td>
<td><div class="col3"><a href="/fhem?cmd.LichtFH=set LichtFH off&amp;room=Licht">off</a></div></td>
<td><div class="col3"><a href="/fhem?cmd.LichtFH=set LichtFH statusRequest&amp;room=Licht">statusRequest</a></div></td>
</tr>

# probleme gibt es bei links (href). Es funktioniert mit "onClick"

###############################
browser Firefox 26.0
internet explorer 11.0.9600
Windows 8
FB7390 Linux fritz.fonwlan.box 2.6.28.10 #1 Mon May 13 14:27:51 CEST 2013 mips GNU/Linux

rudolfkoenig

Definition & Attribut haette wirklich gereicht, die Readings verwirren nur. Ich kann es aber auch nicht Nachstellen, beim Click auf off kommt nur "Unknown argument off, choose one of clear:readings,register,rssi,msgEvents getConfig getRegRaw peerBulk regBulk regSet sign:on,off ", egal ob es mit oder ohne ein CUL.

Bei meinem einzigen HM-Schalter funktioniert sowohl das webCmd als auch das Klicken auf dem Icon. Wohlgemerkt nur mit longpoll, das ist aber seit einiger Zeit default.

Ich weiss immer noch nicht, ob Du das ganze Bild siehst, deswegen hier nochmal im Detail:

- ohne longpoll: Man klickt, FHEMWEB kriegt ein HTTP Request mit Befehl, setzt das Befehl ab, und danach erstellt eine Antwort HTML-Seite, was genauso aussieht wie die Alte, aber mit aktuellen Status des betroffnen Geraetes. Fuer HM ist das set_on, da "set" erst 0.5 Sekunden spaeter kommt. Bis dahin ist aber FHEMWEB dran, bzw. fertig.

- mit longpoll: eine Javascript Funktion setzt das Befehl ab, was von FHEMWEB zwar ausgefuehrt wird, es wird aber nichts zurueckgeliefert. Parallel dazu "lauscht" eine zweite Verbindung per "longpoll", und darueber werden alle Events die den aktuellen Raum betreffen, an den Browser geschickt. Hier werden die Daten vom JavaScript interpretiert, und  Status oder Zeitstempel neu gemalt. Javascript muss natuerlich aktiviert sein fuer diese Seite.

-> Ohne longpoll+JavaScript ist es nicht moeglich dem Browser Nachrichten zu schicken, der HM-Status bleibt auf set_on.

Internet-Explorer teste ich nicht, Firefox funktioniert.

Btw. es gibt einen aktuellen Bug mit longpoll, falls auf der Seite auch noch SVG-Plots sichtbar sind.
Und in der Detail-Ansicht wird due Zeile state nie aktualisiert.

justme1968

hier ist übrigens ein screeenshot wie es dann ausschaut: http://forum.fhem.de/index.php/topic,17913.msg118975.html#msg118975

es scheint insofern mit dem svg problem zu tun zu haben das dann da auch die seite neu aufgebaut wird. beim seitenaufbau scheint dann immer die zweite aktualisierung per longpoll verloren zu gehen.

ich versuche noch mal zu debuggen und mehr rauszufinden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

martinp876

auf meiner webseite ist kein svg zu sehen (generell gibt es welche - auf anderen browser-tabs - falls das auch zählt..??)

wenn 'off' nicht funktioniert ist dein schalter wohl nicht korrekt parametrisiert. Evtl hat du versucht das Device zu schalten und nicht den channel.
CUL_HM gibt dem User initial wenn verfügbar ein webCmd, da mit er arbeiten kann. Wenn du später channel und device trennst gibt es das Kommando nicht mehr...

Readings kannst du sicher ausblenden, ist ja ein kompakter Block. Filterst du nur Perl mit den Augen? ;)

Ich denke es war klar: mit longpoll geht das clicken auf webCmds bei mir (und anderen) nicht. Ohne longpoll interessiert mich nicht, war nur ein Hinweis für dich.

und gerade noch einmal probiert - nur ein browser-tab, kein svg-plot

ZitatInternet-Explorer teste ich nicht, Firefox funktioniert.
internet explorer war eine 2. referenz - dachte mir schon das dir das nicht passt. Zeigt aber dass es kein Browser-eigenes Problem ist. Sollte auch nur ein Hinweis sein.

firefox funktioniert nicht

wenn ich der einzige wäre, wäre es mein lokales Problem. Es wurde aber von 3 Seiten in homematic beanstandet.

Gruss Martin

rudolfkoenig

Zitatgenerell gibt es welche - auf anderen browser-tabs - falls das auch zählt..
Nein, sowas zaehlt nicht. Und ich habe diesen Bug gerade behoben.

Zitatwenn 'off' nicht funktioniert ist dein schalter wohl nicht korrekt parametrisiert.
Ich habe alle Attribute hinzugefuegt, und ein Geraet mit 1A0A02 definiert. Muss ich auch Readings hinzufuegen?

ZitatIch denke es war klar: mit longpoll geht das clicken auf webCmds bei mir (und anderen) nicht.
Und bei meinem eigenen Geraet schon, es sei denn ich versuche dein Beispiel zu testen, aber da komme ich nicht mal soweit.

martinp876

Readings sind nicht notwendig. Die sollten auch keine Rolle beim Aufbau der webseite spielen - oder erwartest du wegen der Mengen einen Einfluss auf das Timing?

Das Attribut 'model' ist aber letztendlich der key, der die Config dieser Entity installiert.
Um das device auto-zu-installieren ist das einfachste einmal config/anlernen am device zu drücken. Dann dann werden ggf fehlende Kanäle gebaut. Kanal 01 wird von Device representiert, wenn dieser nicht als eigene Entity definiert ist

Ein Unterschied ist sicher die unterliegende Platform Windows versus ein Linux. Was nutzt andre?
Ich werde einmal mir ubuntu testen

Gruss Martin

justme1968

fhem unter linux. alles andere auf einem mac. d.h. browser ist immer safari.

ich habe gestern und vorhin noch mal versucht das problem zu debuggen. aber ich kann gerade noch nicht mal mehr das beispiel aus dem screenshot reproduzieren.

das einzige gestern war mit einem SVG plot im raum. dann ist dieses erste longpoll update auf der neuen seite leer. aber da hat rudi ja vorhin ewas gemacht.

das nicht verlässliche reproduzieren deutet meiner meinung nach auf ein timingproblem hin.

kann es sein das es eine racecondition gibt zwischen seiten aufbau und diesem zweiten update per longpoll?

und hängig davon: wäre xhr nicht auch für die webCmd schöner?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

martinp876

#9
Also bei mir ist es stabil reproduzierbar.
nach einem refresh oder jeder anderen 'erheuernden' Aktion ist alles korrekt - war klar nehme ich an.

Das Problem tritt auch bei Firefox in Ubuntu 12 auf virtualBox auf.

Gruss Martin

Nachtrag: ein User hat vermeldet, dass es in der webansicht passt, aber dass es im floorplan nicht funktioniert, also das '!' stehenbleibt.
Vielleicht hilft das bei der Suche

martinp876

ich habe es einmal auf die Schnelle mit XHR probiert. der Update funktioniert - nur auf die Schnelle war die Darstellung der Icons versaut. Aber keine update-probleme mehr....
evtl hat andre mit dem Ansatz recht....