Evaluierungsversion 2.2

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

Vorheriges Thema - Nächstes Thema

roman1528

Zitat von: FhemPiUser am 29 April 2016, 12:51:02
interessant, nach upate und shutdown restart geht es, aber dann geht das longpoll für die produktive 2.0er version nicht mehr. es scheint am webviewcontrol script im header zu liegen, zumindest wenn es gleichzeitig in beiden versionen (produktiv und eval) läuft...

Äh.. ja.

WebViewControl und FTUI können sich nicht sonderlich gut leiden. Ich bin deshalb auf Fully und AMAD umgestiegen..

Wobei ich auch hier häufig Probleme mit LongPoll habe, welche nicht mit dem Netzwerk zusammen hängen... LongPoll hängt sich auf... wird meistens neu gestartet. Aber halt nicht immer... Und dann stehe ich da wie ein Ochs vor'm Scheunentor  ;D

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

setstate

Ja, das liebe longpoll  :(
Ich würde es auch lieber loswerden und gegen Websockets tauschen, aber mein Tablet ist so alt, dass das installierte Android noch keine Websockets kennt. Also lohnt sich das für mich nicht, dort Arbeit reinzustecken.
Aber das longpoll muss man doch irgendwie in den Griff bekommen können :o
Ich habe dafür extra den HealthCheck eingebaut. Was sagt der? Connection noch da? Zählen die Zeilen hoch? Werden Events verarbeitet?
Wenn dort erkennbare Fehler sind, könnte man evtl. auch daraus eine Selbstdiagnose bauen mit autom. Restart o. ä.
Aber am Anfang sollte es normal starten. 

roman1528

Am Anfang ist bei mir alles schick.

Tja die Konsole... Das ist auf einem Tablet ein kleines Problem... und am Rechner tuts longpoll bei mir überhaupt nicht... sonst würde ich zumindest versuchen diesbezüglich feedback zu liefern^^
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

FhemPiUser

#348
...habs gerade nochmal getestet. Auch wenn ich die webviewcontrol-skripte aus dem header der v2.0er Version rausnehme und nur im header der v2.2er Version stehen habe funktioniert longpoll bei mir nicht stabil (Test ist: Fenster öffnen und schauen ob es in FTUI angezeigt wird...): Auf dem PC mit Firefox geht es, aber auf dem Tablet in der Webviewcontrol-App nicht. Wenn ich die webviewcontrol-skripte nur in dem header der v2.0er Version habe geht es auch auf dem Tablet...

Keine Ahnung woran das liegt und wie ich den Fehler finden kann, denn die webconsole habe ich auf dem Tablet nicht. Ich muss produktiv leider erstmal bei der v2.0er Version bleiben...

harry66

#349
hallo noch mal  ;)

ich steige nicht durch jetzt habe ich nur eine Minimalversion ohne css oder sonstige Anpassungen(fhem und ftui_eval sind auf dem neuesten stand)   einfach einen Schalter in die /demo_ftui.html also so:<!DOCTYPE html>
<html>
<head>
    <!--
     /* FHEM tablet ui */
     /*
     * UI builder framework for FHEM
     *
     * Version: 2.2.*
     * URL: https://github.com/knowthelist/fhem-tablet-ui
     *
     * Copyright (c) 2015-2016 Mario Stephan <mstephan@shared-files.de>
     * Under MIT License (http://www.opensource.org/licenses/mit-license.php)
     *
     * !!!! Evaluation version - run only in a staging enviroment !!!!
     *
     * - create a new folder named 'tablet_eval' in /<fhem-path>/www
     * - copy all files incl. sub folders into /<fhem-path>/www/tablet_eval
     * - add 'define TABLETUIEVAL HTTPSRV ftui_eval ./www/tablet_eval Tablet-EVAL' in fhem.cfg
     * - Tadaaa! A new fhem ui in http://<fhem-url>:8083/fhem/tablet_eval/
     *
     * Create a Demo Device in FHEM
     * define ftuitest dummy
     */
    -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <meta name="widget_base_width" content="74">
    <meta name="widget_base_height" content="71">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="gridster_disable" content="1">
    <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 http-equiv="Cache-Control" content="no-store" />

    <link rel="stylesheet" href="lib/jquery.gridster.min.css" />
    <link rel="stylesheet" href="css/fhem-tablet-ui.css" />
    <link rel="stylesheet" href="lib/font-awesome.min.css" />
    <link rel="stylesheet" href="lib/jquery.toast.min.css" />

    <!-- define your personal style here, it wont be overwritten  -->
    <!-- link rel="stylesheet" href="css/fhem-green-ui.css" / -->
    <!-- link rel="stylesheet" href="css/fhem-tablet-ui-user.css" / -->

    <script src="../pgm2/jquery.min.js"></script>
    <script src="lib/jquery.toast.min.js"></script>
    <script src="lib/jquery.gridster.min.js"></script>
    <script src="js/fhem-tablet-ui.js" defer></script>

    <title>FTUI Demo</title>
</head>
<body>
<div class="gridster">
<ul>
  <li data-row="1" data-col="1" data-sizex="3" data-sizey="4">
    <header>EXAMPLE1</header>

    <div class="top-space gray">STATE of the device</div>
    <div data-type="label" data-device="BRENN_A" class="big bold thin"></div>

    <div class="top-space gray">STATE of the device colorized</div>
    <div data-type="label" data-device="BRENN_A" data-colors='["red","green"]' data-limits='["on","off"]' class="big bold thin"></div>

    <div class="top-space gray">Timestamp of the reading</div>
    <div data-type="label" data-device="BRENN_A" data-get="state" class="large thin timestamp"></div>

</li>
<li data-row="5" data-col="1" data-sizex="3" data-sizey="3">
  <header>EXAMPLE2</header>
  <!-- place your widget here -->
</li>
<li data-row="1" data-col="4" data-sizex="6" data-sizey="4">
   <header>EXAMPLE3</header>
   <!-- place your widget here -->

    <div class="top-space gray">Switch on/off</div>
    <div data-type="switch" data-device="BRENN_A" class="cell"></div>

    <div class="top-space gray">Switch on/off blue square</div>
    <div data-type="switch" data-device="BRENN_A" data-background-icon="fa-square" class="cell blue"></div>

    <div class="top-space gray">Botton Group</div>
    <div data-type="switch" data-device="ftuitest" data-background-icon="fa-square-o" data-icon="" data-get-on="0|off" data-get-off="!on" data-set-on="0" class="small green"><span class="small gray top">0</span></div>
    <div data-type="switch" data-device="ftuitest" data-background-icon="fa-square-o" data-icon="" data-get-on="[123][0-9]" data-get-off="!on" data-set-on="25" class="small left-narrow-10 green"><span class="small gray top">25</span></div>
    <div data-type="switch" data-device="ftuitest" data-background-icon="fa-square-o" data-icon="" data-get-on="[456][0-9]" data-get-off="!on" data-set-on="50" class="small left-narrow-10 green"><span class="small gray top">50</span></div>
    <div data-type="switch" data-device="ftuitest" data-background-icon="fa-square-o" data-icon="" data-get-on="[789][0-9]" data-get-off="!on" data-set-on="75" class="small left-narrow-10 green"><span class="small gray top">75</span></div>
    <div data-type="switch" data-device="ftuitest" data-background-icon="fa-square-o" data-icon="" data-get-on="100|on" data-get-off="!on" data-set-on="100" class="small left-narrow-10 green"><span class="small gray top">100</span></div>

</li>
<li data-row="1" data-col="10" data-sizex="3" data-sizey="4">
    <header>EXAMPLE4</header>
    <!-- place your widget here -->
    <div data-type="range" data-device="ftuitest" data-min="0" data-max="100" data-limit-low="25" data-limit-high="75" class="top-space"></div>
</li>
<li data-row="5" data-col="10" data-sizex="3" data-sizey="3">
  <header>EXAMPLE5</header>
  <!-- place your widget here -->
</li>
<li data-row="5" data-col="4" data-sizex="6" data-sizey="3">
  <header>EXAMPLE6</header>
  <!-- place your widget here -->
</li>
</ul>
</div>
</body>
</html>


Die Lampe schaltet  ;D aber die readings werden weder aktualisiert noch bekomme ich bei einem reload einen wert, ich habe das gefühl das nur readings aus dem Browsercache angezeigt werden?

console zeigt folgendesfhem-tablet-ui.js:920 Plugin dir: js
fhem-tablet-ui.js:920 Filename: demo_ftui.html
fhem-tablet-ui.js:920 FHEM dir: /fhem/
fhem-tablet-ui.js:920 initPage - area=
fhem-tablet-ui.js:920 start shortpoll in (ms):30000
fhem-tablet-ui.js:920 count of templates:
fhem-tablet-ui.js:920 Object {modules: Array[0]}
fhem-tablet-ui.js:920 Object {modules: Array[0]}
fhem-tablet-ui.js:920 initWidgets - area=
fhem-tablet-ui.js:920 Load widget : label
fhem-tablet-ui.js:920 Create widget : label
fhem-tablet-ui.js:920 dynamic load file:js/widget_label.js / async:true
fhem-tablet-ui.js:920 Load widget : switch
fhem-tablet-ui.js:920 Create widget : switch
fhem-tablet-ui.js:920 dynamic load file:js/widget_switch.js / async:true
fhem-tablet-ui.js:920 Load widget : range
fhem-tablet-ui.js:920 Create widget : range
fhem-tablet-ui.js:920 dynamic load file:js/widget_range.js / async:true
fhem-tablet-ui.js:920 dynamic load done:js/widget_label.js
fhem-tablet-ui.js:920 function depends_label not found (maybe ok)
fhem-tablet-ui.js:920 init widget: label
2fhem-tablet-ui.js:920 label - value:off, substitution:
fhem-tablet-ui.js:920 Loaded plugin: label
fhem-tablet-ui.js:920 dynamic load done:js/widget_switch.js
fhem-tablet-ui.js:920 Create widget : famultibutton
fhem-tablet-ui.js:920 dynamic load file:js/widget_famultibutton.js / async:true
fhem-tablet-ui.js:920 dynamic load done:js/widget_range.js
fhem-tablet-ui.js:920 function depends_range not found (maybe ok)
fhem-tablet-ui.js:920 init widget: range
fhem-tablet-ui.js:920 Loaded plugin: range
fhem-tablet-ui.js:920 dynamic load done:js/widget_famultibutton.js
fhem-tablet-ui.js:920 dynamic load file:lib/fa-multi-button.min.js / async:false
fhem-tablet-ui.js:920 dynamic load done:lib/fa-multi-button.min.js
fhem-tablet-ui.js:920 Loaded plugin: famultibutton
fhem-tablet-ui.js:920 Loaded plugin: switch
fhem-tablet-ui.js:920 initWidgets - Done
fhem-tablet-ui.js:297 initPage: 286.857ms
fhem-tablet-ui.js:920 start shortpoll in (ms):2500
fhem-tablet-ui.js:920 start shortpoll
fhem-tablet-ui.js:920 start shortpoll in (ms):30000
fhem-tablet-ui.js:920 shortPoll request failed: parsererror, SyntaxError: Unexpected token 


BananaPI, RPI, nanoCUL433, RCS 1000 N Comfort, Dect200, Powerline546E, MAX!Cube, 7xMAX! HT's,3xMAX!FK HMLAN, HM-LC-Bl1PBU-FM, HM-LC-Sw4-Ba-PCB Relay Karte,  LW12, Sqeezelite, TabletUI=Kindel 8" FireHD+Handy,AmazonEcho

setstate

#350
Da ist doch schon die Antwort:
ZitatshortPoll request failed: parsererror, SyntaxError: Unexpected token

Dein Fhem hat in einem Reading ein Zeichen, was nicht dort sein darf. Blöderweise gibt das Jsonlist2 Modul alles 1:1 weiter, ohne Validierung. Sagt er noch die Zeile und Spalte, wo der Fehler passiert? Dann könnte man sehen welches Reading das ist.

Du kannst mal versuchen, das JSON, was dein FHEM ausspuckt zu Validieren. Direkt auf der FHEM Kiste:

curl "http://localhost:8083/fhem/?cmd=jsonlist2&XHR=1" | jsonlint3 -v

Eventuell muss man jsonlint3 erst noch installieren

sudo apt-get install python3-demjson

harry66

Danke das werde ich Morgen mal versuchen muss leider heute Arbeiten  :(

Kurze Frage: Wenn ich dich da richtig verstehe, werden alle readings aus Fhem beim Start eingelesen oder geprüft?
                     Und das mit dem falschen Zeichen produziert den Fehler?
                     Oder nur die, die ich in ftui definiert habe?

Gruß Rolf
BananaPI, RPI, nanoCUL433, RCS 1000 N Comfort, Dect200, Powerline546E, MAX!Cube, 7xMAX! HT's,3xMAX!FK HMLAN, HM-LC-Bl1PBU-FM, HM-LC-Sw4-Ba-PCB Relay Karte,  LW12, Sqeezelite, TabletUI=Kindel 8" FireHD+Handy,AmazonEcho

setstate

Alles wird auf einmal geholt, nicht nur die in FTUI definierten Device:Readings. Das macht die Suche nicht einfach. Aber ich hoffe, mit dem Validierungstool wird das Problem gleich angezeigt.

Tobias

Hi,
kann das sein das der Multistatebutton mit der 2.2 noch nicht funktioniert?
Ich probier hier mit meinem ersten MSB hin und her, und es klappt einfach nicht...
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

harry66

Hallo

root@bananapi ~ # curl "http://localhost:8083/fhem/?cmd=jsonlist2&XHR=1" | jsonlint3 -v
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  541k  100  541k    0     0   590k      0 --:--:-- --:--:-- --:--:--  590k
<stdin>:878:27: Warning: Zero-byte character (U+0000) in string may not be universally safe
   |  At line 878, column 27, offset 90235
   |  String started at line 878, column 26, offset 90234
<stdin>: ok, with warnings


hilft mir das jetzt weiter "at line 878, column 26, offset 90234"  wo finde ich die?
BananaPI, RPI, nanoCUL433, RCS 1000 N Comfort, Dect200, Powerline546E, MAX!Cube, 7xMAX! HT's,3xMAX!FK HMLAN, HM-LC-Bl1PBU-FM, HM-LC-Sw4-Ba-PCB Relay Karte,  LW12, Sqeezelite, TabletUI=Kindel 8" FireHD+Handy,AmazonEcho

roman1528

Zitat von: harry66 am 30 April 2016, 15:59:36
Hallo

root@bananapi ~ # curl "http://localhost:8083/fhem/?cmd=jsonlist2&XHR=1" | jsonlint3 -v
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  541k  100  541k    0     0   590k      0 --:--:-- --:--:-- --:--:--  590k
<stdin>:878:27: Warning: Zero-byte character (U+0000) in string may not be universally safe
   |  At line 878, column 27, offset 90235
   |  String started at line 878, column 26, offset 90234
<stdin>: ok, with warnings


hilft mir das jetzt weiter "at line 878, column 26, offset 90234"  wo finde ich die?

Hier: "http://localhost:8083/fhem/?cmd=jsonlist2&XHR=1" im Browser eingeben... ja und dann... Viel Spaß  ;D

Eventuell bekommst du im browser die zeilenzahl wenn du das ergebnis der url als quelltext öffnest und/oder diesen in einen editor kopierst

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

harry66

Na das war ja einfach ;D DANKE an allle Helfer

"Readings": {      "state": { "Value":"opened", "Time":"2016-04-29 18:01:48" }    },
    "Attributes": {
      "classdefs": "bai00.class=/opt/fhem/FHEM/bai00.cfg:HK.SOL.class=/opt/fhem/FHEM/ebus_solar.cfg:HK.WW.class=/opt/fhem/FHEM/ebus_ww.cfg:HK.Hz.class=/opt/fhem/FHEM/ebus_hz.cfg",
      "requestSeparator": "�",
      "room": "Vaillant"
    }


den  "requestSeparator" gelöscht und schon geht die FTUI 2.2 einwandfrei.

Bleibt nur abzuwarten ob meine ebud abfragen noch gehen.

Gruß Rolf

BananaPI, RPI, nanoCUL433, RCS 1000 N Comfort, Dect200, Powerline546E, MAX!Cube, 7xMAX! HT's,3xMAX!FK HMLAN, HM-LC-Bl1PBU-FM, HM-LC-Sw4-Ba-PCB Relay Karte,  LW12, Sqeezelite, TabletUI=Kindel 8" FireHD+Handy,AmazonEcho

setstate

#357
Schön, dass du den Fehler gefunden hast. Das Vermeiden ist Sache des Jsonlist2 Moduls. Das muss solche Character rauslassen. Wer ist der Maintainer des Moduls, wie finde ich das raus? Ich schaue mal im Code selbst oder im Commandref nach ...

Der Vollständigkeitheit halber:
curl "http://localhost:8083/fhem/?cmd=jsonlist2&XHR=1" | cut -f870-890-d$'\n'

MichaelT

#358
Hallo setstate,

ich bekomme die Fehlermeldung

fhem-tablet-ui.js:656 Uncaught QuotaExceededError: Failed to execute 'setItem' on 'Storage': Setting the value of 'deviceStates' exceeded the quota.

Ist der String zu lang der gespeichert werden soll?


EDIT: Ich hab mal geschaut, die JSON-Abfrage an FHEM ist ca. 1,25MB groß. Ist das viel?
Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

setstate

Der Fehler kommt, wenn localStorage nicht ausgeführt werden kann. Im Safari passiert das, wenn der Private Mode an ist.
Ich habe aber einen Check dafür eingebaut und zeige eine Toast-Message in rot, als Hinweis. Hast du das letzte Update?