Evaluierungsversion 2.2

Begonnen von setstate, 17 März 2016, 10:40:13

Vorheriges Thema - Nächstes Thema

setstate

Der Parser-Error ist doch eine heiße Spur. Kannst du das Zeichen noch rausbekommen? line 1402 column 32

Und dann muss ich rausfinden, wie man das abfängt ...

Zur Info, longpoll (kontinuierlichen Update der UI) startet erst, wenn Shortpoll (vollständiges Update auf Anforderung) komplett durchgelaufen ist. Dann triggert das document 'updateDone'. Das ist der Startschuss für initLongpoll();

setstate



Zitat1402:       "g_altitude": { "Value":"", "Time":"2016-01-24 12:49:22" },


Der Value hat komische Sonderzeichen drin.  :o

matzemoerk

Ja wie bereits geschrieben mach da das GDS Modul komische Dinge. Ohne GDS klappt alles!
Vielen Dank für die Hilfe!

StefanD

Ok, vielleicht kann ich dann was zuliefern.

Zuerstmal fällt mir auf, dass Chrome und FF unterschiedliche Ausgabe auf der Console schreiben:

FF: shortPoll request failed: parsererror, SyntaxError: JSON.parse: bad control character in string literal at line 18608 column 28 of the JSON data
Chrome:  shortPoll request failed: parsererror, SyntaxError: Unexpected token

Wenn ich mir den JSON-Content vom FF ins Notepad++ kopiere, hört's in Zeile 8298 plötzlich auf:
    }
  },
  {
    "Name":"doif_


Aus dem Chrome bekomme ich mehr, aber auch "nur" 18526 Zeilen... Edge liefert mir zwar 18681 Zeilen, jedoch enden beide identisch mit:
  {
    "Name":"uartGarage",
    "PossibleSets":"reopen classdef",
    "PossibleAttrs":"verbose:0,1,2,3,4,5 room group comment:textField-long alias eventMap userReadings:textField-long classdefs split logTraffic:0,1,2,3,4,5 timeout partial requestSeparator responseSeparator cmdIcon devStateIcon devStateStyle fm_type icon sortby webCmd widgetOverride userattr",
    "Internals": {
      "DEF": "telnet xuartwifi.fritz.box:8080",
      "DeviceName": "xuartwifi.fritz.box:8080",
      "NAME": "uartGarage",
      "NEXT_OPEN": "1461413818.72502",
      "NR": "515",
      "PARTIAL": "",
      "Protocol": "telnet",
      "STATE": "disconnected",
      "TYPE": "ECMD"
    },
    "Readings": {      "state": { "Value":"disconnected", "Time":"2016-04-23 14:15:58" }    },
    "Attributes": {
      "requestSeparator": "


VG Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

setstate

Okay, fein.
Das muss auf FHEM Seite (Modul Seite) behandelt werden!
Der JSON Standard erlaubt keine Control Character in String Literalen.

Zitatchar
    any-Unicode-character-
        except-"-or-\-or-
        control-character
    \"
    \\
    \/
    \b
    \f
    \n
    \r
    \t
    \u four-hex-digits

http://www.json.org/

setstate

Zitat von: StefanD am 23 April 2016, 14:28:47
Ok, vielleicht kann ich dann was zuliefern.

Zuerstmal fällt mir auf, dass Chrome und FF unterschiedliche Ausgabe auf der Console schreiben:

...

Das wird die Begrenzung der Ausgabe sein. Gib mal die Anforderung in die Adressleiste des Browsers ein und kopiere den Output in einen Texteditor.

http://<FHEMSERVER>:8083/fhem/?cmd=jsonlist2&XHR=1&timeout=60000

Vielleicht kann der Editor auch Sonderzeichen anzeigen und du siehst, welches Modul die verbotenen Zeichen reinbringt.

setstate

Zitat von: matzemoerk am 23 April 2016, 14:22:51
...
Vielen Dank für die Hilfe!

ich muss euch danken für die geduldige und intensive Mitarbeit bei der Fehlersuche.

StefanD

Zitat von: setstate am 23 April 2016, 14:36:19
Das wird die Begrenzung der Ausgabe sein. Gib mal die Anforderung in die Adressleiste des Browsers ein und kopiere den Output in einen Texteditor.

http://<FHEMSERVER>:8083/fhem/?cmd=jsonlist2&XHR=1&timeout=60000

Vielleicht kann der Editor auch Sonderzeichen anzeigen und du siehst, welches Modul die verbotenen Zeichen reinbringt.

Leider schon zu spät, das das Device uartGarage das war, an dem der Output hing, habe ich es kurzerhand mal gelöscht. War eh noch nicht in Verwendung. Siehe da, schon läuft FTUI wie am Schnürchen und so irre schnell, wie andere berichten. Hab's wieder angelegt und es lief immer noch.  :o
Das kam mir dann schon etwas komisch vor und ich habe das Device in FHEM noch mal angesehen und habe wohl auch die Ursache gefunden. In der alten Konfiguration war der Wert des Attributs requestSeparator ein Leerzeichen, das kann ich jetzt nicht mehr konfigurieren, bzw. wenn ich das eingebe, wird jetzt im GUI eine 1 daraus gemacht. Die Definition in der fhem.cfg bleibt aber nach wie vor gleich:

define uartGarage ECMD telnet xuartwifi.fritz.box:8080
attr uartGarage requestSeparator
attr uartGarage room _Test


Nur in der GUI wird jetzt, im Gegensatz vor dem Löschen, eine 1 angezeigt... (s. Screenshot)

Vielen Dank für die Unterstützung!

VG Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

StefanD

Zitat von: setstate am 23 April 2016, 14:42:08
ich muss euch danken für die geduldige und intensive Mitarbeit bei der Fehlersuche.

Den Ball muss ich aber zurückspielen!  :)

Was du hier an Motivation und Zeit investierst ist aller Ehren wert!!!

VG Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

matzemoerk

Zitat von: StefanD am 23 April 2016, 14:48:28
Den Ball muss ich aber zurückspielen!  :)

Was du hier an Motivation und Zeit investierst ist aller Ehren wert!!!

VG Stefan

Dem kann ich nur zustimmen!

setstate

Wenn beim Datenholen von FHEM Fehler passieren, zeige ich jetzt eine Error-Toast Message in rot an. Falls andere auch noch solche Probleme haben, damit es gleich ins Auge springt.

StefanD

Zitat von: setstate am 23 April 2016, 15:22:43
Wenn beim Datenholen von FHEM Fehler passieren, zeige ich jetzt eine Error-Toast Message in rot an. Falls andere auch noch solche Probleme haben, damit es gleich ins Auge springt.

*daumenhoch* Das dürfte viel Zeit beim Vorsortieren einsparen.

Vielleicht wäre ein dedizierter Thread sinnvoll, der im Startpost eine Art Leitfaden für die Fehlersuche beinhaltet. Ggf. auch mit einer nicht zu langen Checkliste, die einen dann schneller in die richtige Richtung führt.

VG Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

roman1528

#282
so... ich bekomme mal wieder 'ne mittelschwere Krise.

FTUI 2.2, Fully FullScreenBrowser

Dieses Switch-Widget: (ja, etwas komplex)

<div data-type="switch"
data-device="ku_intentradio_dummy"
data-set-states='["setSTOP","","setPLAY"]'
data-states='["play","play/buffering|setPLAY","stop|play/pause|play/duck|play/disconnected|complete|error"]'
data-icons='["fa-stop","fa-play fa-blink","fa-play"]'
data-colors='["#eee","#aa6900","#eee"]'
data-background-icons='["fa-circle","fa-circle","fa-circle"]'
data-background-colors='["#0088CC","#0088CC","#aaa"]'
class="col-1-4 right-align big">
</div>


Seite auf Smartphone mit Slideout-Menü.

Auf meinem Samsung Galaxy S5 (Android 5.0) läuft das ganz hervorragend!

Auf meinem Samsung Galaxy S3 (CyanogenMod Android 4.4.4) läuft das wie der letzte Dreck.
Alle "set-states" werden immer 2 mal gesendet (toast-messages).

Der allergrößte Humbug ist es, wenn "play" ansteht und ich folglich "setSTOP" drücke wird erst "setSTOP" und direkt danach "setPLAY" gesendet!!!

Warum?
Das oberwitzigste daran ist, dass es von 1000 mal 1 mal richtig funktioniert. Vorrausgesetzt ich leere jedes mal den Cache und starte Fully neu.

Gleiches gilt bei Firefox am Desktop-PC.


Zum Slideout-Menü gedöns:
Wenn ich die Seite das erste mal aufrufe wird der Titel nicht im <header> angezeigt. Erst nach Menü -> Menü-Item wird der richtige Titel eingetragen. "data-active-pattern" ist richtig gesetzt.

<body>

    <!-- Demo FTUI 2.1 mobil page with slideout navigation -->

<nav id="menu">
<div data-type="link" class="default large top-space-2x left-space-3x"
data-width="150"
data-icon-left="fa-home"
data-color="white"
data-text-align="right"
data-load="#content_home"
data-url="#content_home.html"
data-active-color="blue"
data-active-pattern="(.*index.html|.*#content_home.html)">Home
</div>
<div data-type="link" class="prefetch large top-space-2x left-space-3x"
data-width="150"
data-icon-left="fa-tint"
data-color="white"
data-text-align="right"
data-load="#content_bad"
data-url="#content_bad.html"
data-active-color="blue"
data-active-pattern=".*#content_bad.html">Bad
</div>
<div data-type="link" class="prefetch large top-space-2x left-space-3x"
data-width="150"
data-icon-left="ro-pc"
data-color="white"
data-text-align="right"
data-load="#content_buro"
data-url="#content_buro.html"
data-active-color="blue"
data-active-pattern=".*#content_buro.html">Büro
</div>
<div data-type="link" class="prefetch large top-space-2x left-space-3x"
data-width="150"
data-icon-left="fa-cutlery"
data-color="white"
data-text-align="right"
data-load="#content_kuche"
data-url="#content_kuche.html"
data-active-color="blue"
data-active-pattern=".*#content_kuche.html">Küche
</div>
</nav>

<main id="panel" class="">
<header id="header-nav" class="bg-lightgray row">
<div data-type="slideout"
class="col-1-4 big left-align notouch">
</div>
<div id="linkname"
class="col-1-4 large left-align middle">
</div>
<div data-type="symbol"
data-device="gds"
data-get="a_count"
data-states='["[1-9]{1}|[0-9]{2}","0"]'
data-icons='["fa-bolt","fa-bolt"]'
data-colors='["firebrick","black"]'
class="col-1-8 right-align big">
</div>
<div data-type="switch"
data-device="KeyMatic"
data-get="door"
data-set="door"
data-states='["closed","open","MISSING.*"]'
data-set-states='["open","",""]'
data-icons='["ftui-door","ftui-door","ftui-door warn"]'
data-background-icons='["","",""]'
data-colors='["green","firebrick","#808080"]'
data-background-colors='["","",""]'
class="col-1-8 right-align big">
</div>
<div data-type="clock"
data-format="H:i"
data-interval="1000"
class="col-1-5 right-align large orange">
</div>
</header>
        <div class="page" id="content_home"></div>
        <div class="page" id="content_bad"></div>
        <div class="page" id="content_buro"></div>
        <div class="page" id="content_kuche"></div>
    </main>

</body>


Grüße^^

EDIT:

Ich habe festgestellt, dass das oben beschriebene, äußerst ätzende verhalten nur auf der zuerst geladenen seite/unterseite eintritt!

beispiel mit egal welchem switch:
öffne ich die index.html (#content_home) direkt und drücke auf ein switch: sendet 2 mal
öffne ich die index.html#content_kuche.html direkt und drücke hier auf ein switch: sendet 2 mal.
wechsle ich nun von hier aus (index.html#content_kuche.html), über das menü auf eine andere seite (index.html#content_home.html) und drücke ich ein switch ist alles in ordnung.
wechsle ich über das menü zurück auf die zuerstgeladene seite (index.html#content_kuche.html) wird wieder 2mal gesendet.

super nervig.
es liegt aber nicht an den unterschiedlichen geräten... sondern scheinbar an der ersten einbindung der contenSeite beim laden.

dass der titel im header der zuerst aufgerufenen seite nicht geladen wird bleibt.
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

setstate

#283
Ich sehe bei mir mit meinen Seiten auch bei Klick auf einen Switch auch die doppelte Toast-Message. Sehr komisch.
Ich schaue mir das sofort an ...

News
- es sind immer zwei Buttons übereinander, deshalb vermutlich das doppelte Senden
- es passiert nur, wenn man nicht abwartet, bis die Subseiten im Hintergrund geladen wurden ("Full Refresh done ..."), die Subseiten class="prefetch" haben und man vorher schon auf die Subseite wechselt, dann ist der Switch doppelt.
- es liegt am Widget Link

roman1528

#284
Genau das habe ich auch versucht auszuschließen.
Aber auch nach abwartend des full refresh done  habe ich dieses verhalten.
index.html öffnen... warten... full refresh done... switch klick... doppeltes senden.
Kein pagetab-Widget in verwendung. Baue meine mobil-ui neu auf.

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik