Autor Thema: New FHEM Tablet UI  (Gelesen 1063542 mal)

Offline jsloot

  • Full Member
  • ***
  • Beiträge: 175
Antw:New FHEM Tablet UI
« Antwort #960 am: 17 April 2015, 21:58:54 »
<li data-row="1" data-col="1" data-sizex="3" data-sizey="3">
    <header>Flur</header>
    <div data-type="dimmer" data-device="grWZ.Dimmer" class="cell" ></div>
    <div data-type="label" class="cell darker">Licht</div>
</li>

Autsch... ich gestehe: der Fehler befand sich ca. 50cm vor dem Bildschirm und nennt sich jsloot.... sorry  :( jetzt funktionierts....
Ein FHEM-Raspi mit HM-CFG-USB-2. 9 HM Heizthermostate, 9 HM Temperatursensoren, 22 HM Fensterkontakte, 7 Rolloaktoren, 17 HM Unterputz-Aktoren

Offline setstate

  • Hero Member
  • *****
  • Beiträge: 3867
  • FHEM TabletUI
    • FHEM Tablet UI
Antw:New FHEM Tablet UI
« Antwort #961 am: 18 April 2015, 00:04:31 »
Upps, das Image Widget habe ich noch gar nicht an die neue Version angepasst, weil ich es persönlich nicht im Einsatz habe.
Ich melde mich wieder ...

Image Widget ist jetzt angepasst. Damit kann es auch mit der FTUI Version 1.4 wieder genutzt werden.

Zusätzlich kann jetzt auch das Update Intervall pro Bild vorgeben, wenn man ein Image per data-url eingebunden hat. Mit data-refresh legt man das Refresh-Intervall in Sekunden fest. Default für data-refresh ist 900 Sekunden (15Minuten).

Neuladen aller 15 Minuten:
<div data-type="image"
        data-url="./images/Karte.png"
        data-size="150px">
</div>

Neuladen jede Minute:
<div data-type="image"
        data-url="./images/Cam.png"
        data-size="200px"
        data-refresh="60">
</div>

Ein Bild, was per FHEM-Device Reading-URL (data-get) geholt wird, kann nicht per data-refresh beeinflusst werden. Das Update erfolgt, wie andere data-get Widgets über die normale Short/Long-Poll Refreshs.
<div data-type="image" data-device="AgroWeather"
        data-get="fc0_weatherDayIcon"
        data-size="50px">
</div>

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 769
    • FTUI Live Demo
Antw:New FHEM Tablet UI
« Antwort #962 am: 18 April 2015, 09:51:10 »
Habe einfach mal alle Files, bis auf die .html's, aus dem Ordner "...fhem/www/tablet" gelöscht und die aus dem GIT neu geladen und manuel rein kopiert!
Nun sind die Probleme verschwunden.

Hat sich das Problem mit den nicht geladenen Icons damit auch für die anderen erledigt, oder besteht noch Analysebedarf? Ich konnte die Probleme bisher bei mir nicht nachstellen - falls es also noch irgendwo nicht richtig funktioniert bitte nochmal melden.

Offline johannes1984

  • Full Member
  • ***
  • Beiträge: 101
Antw:New FHEM Tablet UI
« Antwort #963 am: 18 April 2015, 10:57:56 »
Hallo,

wollte gerade mal das Update machen, bekomme aber folgende Fehlermeldung:

2015-04-18 10:57:03 Global global UPD www/tablet/js/fhem-tablet-ui.js
2015-04-18 10:57:03 Global global Got 13659 bytes for www/tablet/js/fhem-tablet-ui.js, not 13537 as expected,

Habe schon mal die fhem-tablet-ui.js in fhem-tablet-ui-old.js umbenannt, in der Hoffnung, dass er sie dann einfach nochmal runterlädt. Tut er aber nicht. :-(

Jemand eine Idee?

LG Johannes
RPi Version B, HMLAN, ZWave USB Stick, CUL

Offline setstate

  • Hero Member
  • *****
  • Beiträge: 3867
  • FHEM TabletUI
    • FHEM Tablet UI
Antw:New FHEM Tablet UI
« Antwort #964 am: 18 April 2015, 11:25:23 »
Bitte jetzt nochmal probieren. Mit dem Update Control File stehe ich noch etwas auf Kriegsfuß. Local Commit, Remote Pull Request Commit und Prepare Controlfile, da kommt man schnell durcheinander und in die falsche Reihenfolge.

Sorry
Mario

Offline Phil__

  • Full Member
  • ***
  • Beiträge: 240
Antw:New FHEM Tablet UI
« Antwort #965 am: 18 April 2015, 11:30:41 »
Hallo,

wollte gerade mal das Update machen, bekomme aber folgende Fehlermeldung:

2015-04-18 10:57:03 Global global UPD www/tablet/js/fhem-tablet-ui.js
2015-04-18 10:57:03 Global global Got 13659 bytes for www/tablet/js/fhem-tablet-ui.js, not 13537 as expected,

Habe schon mal die fhem-tablet-ui.js in fhem-tablet-ui-old.js umbenannt, in der Hoffnung, dass er sie dann einfach nochmal runterlädt. Tut er aber nicht. :-(

Jemand eine Idee?

LG Johannes
Falls das Update nicht klappt, manuell die GIT Sourcen laden geht immer!
Server: Intel DH77EB + Core i3-2120 mit Ubuntu Server 14.04
Backup: Beaglebone Black
Homematic: HM-LAN-Adapter, HM-CC-RT-DN, HM-CC-TC, HM-LC-SW1-PL2, HM-SEC-RHS, HM-SEC-SC, HM-TC-IT-WM-W-EU, HM-WDS10-TH-O
Weitere: Denon-AVR, PhilipsTV, PhilipsHue, Raspi+XBMC
Nexus 7 (WebViewControl + FTUI)

Offline miot

  • Jr. Member
  • **
  • Beiträge: 52
Antw:New FHEM Tablet UI
« Antwort #966 am: 18 April 2015, 12:32:36 »
Die Probleme sind zumindest bei mir noch vorhanden.  Auch zu Hause - entgegen meiner gestrigen Aussage - sind in seltenen Einzelfaellen die Probleme zu sehen.

Ich hab einiges getestet, haufenweise console.log in die fhem-tablet-ui.js eingebaut, ein bisschen ajax und jquery gelesen und alles zusammen geworfen ;)

Hier mal ein Logauszug an dem man es gut erkennen kann (kommentare sind drin)

"Plugin dir: /fhem/tablet/js"
"Filename: index_weather.html"

Mein Kommentar: Alles mit ++++ passiert im plugins.load Teil:

"++++ Collecting required readings"
"++++ Initializing Widgets"
"++++ Initializing widget_clock"
"++++ Initializing widget_label"
"++++ Initializing widget_symbol"
"++++ Initializing widget_weather"
"++++ Request readings from FHEM"

Mein Kommentar: JETZT kommt aber schon das erste Ergebnis fuer ein Reading:

"MicaProplanta        2015-04-18 11:04:03 16"
"update done for device:MicaProplanta parameter:fc1_tempMax"

Mein Kommentar: UND JETZT wird erst das Widget in function intWidgets initialisiert!

"---- Loading plugin: widget_weather"
"---- Module added: widget_weather"
"---- Module widget_weather is now initialized"
"---- Module widget_weather is now requesting (FHEM) STATE"

Mein Kommentar: Jetzt kommt der Rest...

"MicaProplanta        2015-04-18 11:04:03 5"
"update done for device:MicaProplanta parameter:fc0_temp06"
"GA_HIN_TEMP01        T: 12.9 H: 47"
"update done for device:GA_HIN_TEMP01 parameter:STATE"

Im Screenshot (hier nur der relevante Teil) fehlt genau die Darstellung von fc1_tempMax, weil dieses Ergebnis bereits empfangen wurde bevor das Widget aktiv war oder Ergebnisse annehmen / verarbeiten / darstellen konnte.
Wenn ich in FHEM anschliessend manuell  'set MicaProplanta update' absende wird der fehlende Wert dank longpoll sauber dargestellt - so solls ja auch sein.

Ich denke ihr konnt das viel besser interpretieren als ich aber hinsichtlich sync / async muss sichergestellt werden, dass der Load UND Init der Wigets abgeschlossen ist BEVOR der erste Request an FHEM abgesendet wird bzw. Ergebnisse ankommen und verarbeitet werden sollen.
Ist aber nur eine Laien-Schlussfolgerung ;)

Waer super, wenn ihr das oben zusammengereimte mal fachmaennisch ueberdenken koenntet.


Achja: Und nochwas eher unschoenes (wird aber auch keiner bewusst machen): Wenn ich in meinem Browser staendig F5 auf einer der UI Seiten fuer aktualisieren druecke ohne die Ergebnis-Darstellung abzuwarten dann werden wohl soviele Anfragen parallel zu FHEM gesendet, dass FHEM zuverlaessig und reproduzierbar nach ca. 10-20 mal F5 druecken gnadenlos abstuerzt. Haengt wohl von der Anzahl der Anfragen auf der UI Seite ab, die gesendet werden und beantwortet werden muessen. Irgendwann sind es dann aber wohl zu viele und es scheint eine Ueberlaufsituation zu entstehen. 

Gruss
Michael

PS: Die Sources manuell von git zu laden und einzuspielen aendert bei mir nichts an dem Verhalten.


Hat sich das Problem mit den nicht geladenen Icons damit auch für die anderen erledigt, oder besteht noch Analysebedarf? Ich konnte die Probleme bisher bei mir nicht nachstellen - falls es also noch irgendwo nicht richtig funktioniert bitte nochmal melden.

Offline setstate

  • Hero Member
  • *****
  • Beiträge: 3867
  • FHEM TabletUI
    • FHEM Tablet UI
Antw:New FHEM Tablet UI
« Antwort #967 am: 18 April 2015, 14:36:43 »
Hallo Michael, das ist doch mal eine Spur!
Vielen Dank für die umfangreiche Analyse

Ich werde mir es ansehen.

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 769
    • FTUI Live Demo
Antw:New FHEM Tablet UI
« Antwort #968 am: 18 April 2015, 17:36:07 »
es ist ja möglich, dass ich die UPDATE Funktion auf einen Button legen kann. Ist es technisch irgendwie möglich, dass mir das UI mitteilit, dass ein neues Update verfügbar ist? z.B. das mir der Button in einer anderen Farbe dargestellt wird o.ä..

Gute Idee! Das control-File hat ja schon die benötigten Infos, das müsste man nur prüfen und mit den lokalen Files vergleichen. Kann man mit HTTPMOD machen, man braucht nur eine Prüffunktion, die man irgendwo in eine 99_myUtils.pm legt:

sub controlfile_updatecheck($) {
    use Date::Parse;
    my $raw = shift;

    my $response='';
    my @lines = split "\n", $raw;
    foreach my $line (@lines) {
        my @remote= split " ", $line;
        if(@remote>3 && $remote[0] eq "UPD") {
            Log 3, $line;
            $remote[1]=~s/_/ /;
           
            my @local = stat($remote[3]);
            if($local[7] != $remote[2] || $local[9] < str2time($remote[1])) {
                $response .= $remote[0]." ".$remote[3]."\n";
            }
        }
    }
    return $response;
}

Eine Funktion um das Update durchzuführen und die Readings zu aktualisieren:

sub controlfile_update($) {
    my $device = shift;
    my $url = InternalVal($device, 'url', '');
    my $def = InternalVal($device, 'DEF', '');
   
    fhem("setreading $device available updated");
    fhem("setreading $device files -");
    fhem("define at_recheck_$device at +00:05:00 modify $device $def");
    fhem("update all $url");
}

Und in die fhem.cfg kommen dann diese Definitionen:

define UPDATE_FTUI HTTPMOD https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt 14400
attr UPDATE_FTUI alias Fhem Tablet UI
attr UPDATE_FTUI userattr timeout reading01Name reading01Regex reading02Name reading02Regex
attr UPDATE_FTUI event-on-change-reading available,files
attr UPDATE_FTUI reading01Name files
attr UPDATE_FTUI reading01Regex (?s)(UPD.*)
attr UPDATE_FTUI reading01Expr $val=controlfile_updatecheck($val);;$val
attr UPDATE_FTUI reading02Name available
attr UPDATE_FTUI reading02Regex (?s)(UPD.*)
attr UPDATE_FTUI reading02Expr $val=controlfile_updatecheck($val) ne ''?'yes':'no';;$val
attr UPDATE_FTUI room hidden

define UPDATE_WIDGETS HTTPMOD https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt 14400
attr UPDATE_WIDGETS alias Widgets for Fhem Tablet UI
attr UPDATE_WIDGETS userattr timeout reading01Name reading01Regex reading02Name reading02Regex
attr UPDATE_WIDGETS event-on-change-reading available,files
attr UPDATE_WIDGETS reading01Name files
attr UPDATE_WIDGETS reading01Regex (?s)(UPD.*)
attr UPDATE_WIDGETS reading01Expr $val=controlfile_updatecheck($val);;$val
attr UPDATE_WIDGETS reading02Name available
attr UPDATE_WIDGETS reading02Regex (?s)(UPD.*)
attr UPDATE_WIDGETS reading02Expr $val=controlfile_updatecheck($val) ne ''?'yes':'no';;$val
attr UPDATE_WIDGETS room hidden

define UPDATES readingsGroup UPDATE_FTUI:available,files UPDATE_WIDGETS:available,files
attr UPDATES valueFormat { ($READING eq 'files' && $VALUE !~ /^-?$/)?'<a href="?cmd={controlfile_update(\'$DEVICE\')}">[Start Update]</a>':$VALUE }
attr UPDATES alias 3d Party Updates
attr UPDATES room System

In der readingsGroup wird ein Link mit dem Text "[Start Update]" angezeigt, sobald ein Update verfügbar ist. Die readingsGroup kann man sicher noch schöner machen, aber da kenn ich mich nicht aus und überlasse das euch :)

PS: Habe ein paar Stellen verändert, am besten komplett neu übernehmen.
« Letzte Änderung: 20 September 2015, 10:35:47 von nesges »

Offline bjoernbo

  • Sr. Member
  • ****
  • Beiträge: 826
Antw:New FHEM Tablet UI
« Antwort #969 am: 18 April 2015, 18:32:19 »
Sauber! Ich dachte schon der Post wäre untergegangen. Ich werde das mal ausprobieren!
Raspberry Pi 2 - CUL - HMLAN - FB7490 - Synology NAS DS214 - NETATMO - OSRAM lightify - MiLight - SIEMENS G-Tag'S - FTUI - EchoDOT -

Offline chris1284

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3800
Antw:New FHEM Tablet UI
« Antwort #970 am: 18 April 2015, 20:16:19 »
nabend,

cih benötige mal hilfe beim fomatieren. ich bekomme die werte nicht inline dargestellt ...  >:(
<li data-row="1" data-col="5" data-sizex="3" data-sizey="1">
        <header>Wettermast</header>
<div class="container inline">
            <div data-type="label" data-device="KS300" data-get="temperature" data-unit="%B0C%0A" class="cell small inline"></div>
    <div data-type="label" data-device="KS300" data-get="humidity" data-unit="%" class="cell small inline"></div>
    <div data-type="label" data-device="KS300" data-get="wind" data-unit="%B0C%0A" class="cell small inline"></div>
    <div data-type="label" data-device="KS300" data-get="rain" data-unit="" class="cell small inline"></div>
</div>
<div class="container inline">
    <div data-type="label" class="cell small inline">Temperatur</div>
    <div data-type="label" class="cell small inline">Luftfeuchte</div>
    <div data-type="label" class="cell small inline">Wind</div>
    <div data-type="label" class="cell small inline">Regen</div>
</div>
</li>

danke schon einmal
« Letzte Änderung: 18 April 2015, 20:19:41 von chris1284 »
#HP Proliant MicroServer Gen8: FHEM, SAMBA, Docker:PLEX, HABridge,Homebridge
#CCU2 (bald 3): Heizung, Schalter, Sensoren, Remotes
#nanoCUL868: lacrossmode für Außensensor
#3 2Bay Nas im 2 täglichen Wechsel fürs Backup, überwacht in FHEM

Offline setstate

  • Hero Member
  • *****
  • Beiträge: 3867
  • FHEM TabletUI
    • FHEM Tablet UI
Antw:New FHEM Tablet UI
« Antwort #971 am: 18 April 2015, 21:34:14 »
Hallo Chris1284,

leider kann ich nur raten, wie es am Ende aussehen soll ...
So?
<li data-row="1" data-col="5" data-sizex="3" data-sizey="1">
        <header>Wettermast</header>
        <div class="cell inline">
            <div data-type="label" data-device="KS300" data-get="temperature" data-unit="%B0C%0A" class="small"></div>
            <div data-type="label" class="small">Temperatur</div>
        </div>
        <div class="cell inline">
            <div data-type="label" data-device="KS300" data-get="humidity" data-unit="%" class="small"></div>
            <div data-type="label" class="small">Luftfeuchte</div>
        </div>
        <div class="cell inline">
             <div data-type="label" data-device="KS300" data-get="wind" data-unit="%B0C%0A" class="small"></div>
             <div data-type="label" class="small">Wind</div>
        </div>
        <div class="cell inline">
            <div data-type="label" data-device="KS300" data-get="rain" data-unit="" class="small"></div>
            <div data-type="label" class="small">Regen</div>
        </div>
</li>

Offline chris1284

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3800
Antw:New FHEM Tablet UI
« Antwort #972 am: 18 April 2015, 21:51:29 »
EDIT:  *über sich selbst ärger* man sollte die richtiges css includen...
« Letzte Änderung: 18 April 2015, 21:55:49 von chris1284 »
#HP Proliant MicroServer Gen8: FHEM, SAMBA, Docker:PLEX, HABridge,Homebridge
#CCU2 (bald 3): Heizung, Schalter, Sensoren, Remotes
#nanoCUL868: lacrossmode für Außensensor
#3 2Bay Nas im 2 täglichen Wechsel fürs Backup, überwacht in FHEM

Offline setstate

  • Hero Member
  • *****
  • Beiträge: 3867
  • FHEM TabletUI
    • FHEM Tablet UI
Antw:New FHEM Tablet UI
« Antwort #973 am: 18 April 2015, 22:13:28 »
Die Probleme sind zumindest bei mir noch vorhanden.  Auch zu Hause - entgegen meiner gestrigen Aussage - sind in seltenen Einzelfaellen die Probleme zu sehen.

Ich hab einiges getestet, haufenweise console.log in die fhem-tablet-ui.js eingebaut, ein bisschen ajax und jquery gelesen und alles zusammen geworfen ;)

Eine kleine Erweiterung konnte ich noch einbauen, um den vermuteten Race Conditions zu umgehen.
Bitte ladet mal die geänderte fhem-tablet-ui.js von Github und testet bei euch, ob es damit besser ist.

Viele Dank

Offline miot

  • Jr. Member
  • **
  • Beiträge: 52
Antw:New FHEM Tablet UI
« Antwort #974 am: 19 April 2015, 08:16:08 »
Funktioniert wieder alles perfekt!  Erstmal vielen Dank dafuer ;)

Compare sei Dank hab ich mal geschaut, was Du geaendert hast und ein wenig weiter experimentiert.  Seit gestern ist bei mir nicht viel neues Wissen dazugekommen, so dass ich immer noch jede Menge Fragezeichen habe aber auch was rausfinden konnte:

loadplugin_async wird nicht aufgerufen oder?   Die drei Zeilen Teil solltest Du wieder entfernen sonst fragt man sich in 2 Wochen, wofuer das wohl sein soll...
In Zeile 384 habe ich async: true fest gesetzt (loadplugin_async wird ja nicht aufgerufen) zumal Firefox und Chrome von sync XMLHttpRequests abraten.
In der Funktion (loadplugin) wird zwar zwischen success und error unterschieden aber ich finde partout keinen Code der darauf reagiert... Dafuer reichts wohl bei mir mit dem Verstaendnis noch nicht  :(
Zum Erfolg fuehren jedenfalls die Zeilen 40-45, die die Widgets nach dem Laden zuerst updaten bevor ein neuer Request bereits empfangene Werte ueberschreibt.

Da es ja um Optimierung geht: In Zeile 40-45 werden bei geladenem widget ALLE readings von ALLEN devices upgedatet. Ich habe mal einen Zaehler eingebaut und mir das im Log anzeigen lassen. Bei meiner Wetterseite sind das bei 5 verwendeten Widgets und jeweils 81 updates insgesamt 405 Aufrufe von module.update fuer 0-10 vorhandene Werte. Ich weiss nicht wie lange diese Updates dauern bzw. wie gross die reale Verzoegerung ist aber von den Zahlen her wuerde ich sagen da steckt Potential fuer Optimierung drin.

Aber das sind alles spinnerte Peanuts. Alles funktioniert - 1000 Dank fuer Deine Bemuehungen!

Gruss
Michael

Eine kleine Erweiterung konnte ich noch einbauen, um den vermuteten Race Conditions zu umgehen.
Bitte ladet mal die geänderte fhem-tablet-ui.js von Github und testet bei euch, ob es damit besser ist.

Viele Dank