Servermodul für New FHEM Tablet UI - 02_FTUISRV.pm

Begonnen von viegener, 27 Oktober 2015, 22:57:13

Vorheriges Thema - Nächstes Thema

Haecksler

Zitat von: viegener am 01 Januar 2016, 19:48:20
Aus meiner Sicht schon, da der Zusammenbau auf Server-Seite besser geeignet ist um Probleme mit Javascript bei den dynamischen Ladevorgängen zu vermeiden. Für das Javascript kommt dann wenigstens nur 1 Datei heraus. Ausserdem würde ich gerne immer noch eine Seite dynamisch aufbauen können.

Hallo viegener,
ist es denn irgendwie möglich, Werte aus einem Fhem dummy als Variable einzubinden?
Dann könnte man super eine dynamische Formatierungen in Abhängigkeit von Fhem-Werte machen.

Gruß,
Stefan

viegener

Zitat von: Haecksler am 07 Februar 2016, 11:34:26
Hallo viegener,
ist es denn irgendwie möglich, Werte aus einem Fhem dummy als Variable einzubinden?
Dann könnte man super eine dynamische Formatierungen in Abhängigkeit von Fhem-Werte machen.

Gruß,
Stefan

Hallo Stefan,
bisher nicht, wenn Du mir das Szenario genauer beschreibst, kann man das vermutlich machen?
Möchtest Du den Wert eines Readings, nur den State oder auch andere Werte einbeziehen?
Allerdings kann das Servermodul natürlich kein Auffrischen der Seite bei Events/Veränderungen am device machen. Das gehört in diesem Fall wieder ins tablet UI.
Gruss,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Haecksler

Hallo Johannes,
habe mir eine Wochenansicht der Heizzeiten (siehe Anhang).
Jetzt würde ich noch gerne den aktuellen Tag von semitransparent auf normal umstellen, um diesen hervorzuheben.
Ich könnte über Fhem ein Reading bereitsstellen welches "semitransparent" enthält oder eben nicht.

Gruß,
Stefan

viegener

Zitat von: Haecksler am 08 Februar 2016, 12:32:28
Hallo Johannes,
habe mir eine Wochenansicht der Heizzeiten (siehe Anhang).
Jetzt würde ich noch gerne den aktuellen Tag von semitransparent auf normal umstellen, um diesen hervorzuheben.
Ich könnte über Fhem ein Reading bereitsstellen welches "semitransparent" enthält oder eben nicht.

Gruß,
Stefan

Ich habe mal eine quick and Dirty-Lösung gebaut, die befindet sich in Github:

Darin kann man im Header von ftui-part-Dateien auch device-readings als default werte anfordern:

<?ftui-header="EinHeader dev="MeinDevice" dummy="NormalerWert" fhemwert="[eindevice:einreading]" ?>

Damit wird im folgenden für den key fhemwert das angebebene Reading eingesetzt (wenn es nicht beim include mit einem anderen Wert überschrieben wurde).

Kannst Du mal probieren ob das Deine Anforderung löst?
(Im Prinzip wären hier sogar beliebige perl statements möglich, denn ich habe einfach Rudi's set-logic hierfür verwendet)

Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

dancatt

Hallo Johannes,

wann wandert denn nun das Modul ins SVN?
Das Modul scheint ja zu laufen bei denen die das im Einsatz haben.

Vielen Dank.

Gruß Daniel
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

Haecksler

Zitat von: viegener am 09 Februar 2016, 01:27:18
Ich habe mal eine quick and Dirty-Lösung gebaut, die befindet sich in Github:

Darin kann man im Header von ftui-part-Dateien auch device-readings als default werte anfordern:

<?ftui-header="EinHeader dev="MeinDevice" dummy="NormalerWert" fhemwert="[eindevice:einreading]" ?>

Damit wird im folgenden für den key fhemwert das angebebene Reading eingesetzt (wenn es nicht beim include mit einem anderen Wert überschrieben wurde).

Kannst Du mal probieren ob das Deine Anforderung löst?
(Im Prinzip wären hier sogar beliebige perl statements möglich, denn ich habe einfach Rudi's set-logic hierfür verwendet)

Johannes
Danke! Werde ich testen, wird aber wahrscheinlich erst am WE passieren...melde mich wieder.
Gruß, Stefan

viegener

Zitat von: dancatt am 09 Februar 2016, 07:07:38
Hallo Johannes,

wann wandert denn nun das Modul ins SVN?
Das Modul scheint ja zu laufen bei denen die das im Einsatz haben.

Vielen Dank.

Gruß Daniel

Hallo Daniel,
das Ziel ist immer noch das in den nächsten Wochen freizugeben, ich wollte die neuen Funktionalitäten aber noch explizit von Leuten mit der neuesten Version getestet haben, bevor ich das an alle freigebe. Eine weitere ist gerade hinzugekommen, siehe unten:
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

Ich habe gerade ins github eine Version 0.2 gestellt, die neben den bereits oben beschriebenen Änderungen eine Validierung für HTML enthält.

Hintergrund: Für das Tablet UI kann es relativ leicht passieren, dass invalides HTML entsteht, weil Tags nicht korrekt geschlossen werden. Dann kann die Darstellung zwar immer noch richtig aussehen, manche Browser sind dann aber pingeliger als andere und ohne Validierungstools sind solche Fehler auch schwer zu finden.

Es gibt deshalb im FTUISRV zwei Attribute um .htm(l) und .part-Dateien entsprechend on the fly zu prüfen.
validateFiles - schaltet die Prüfung für die Originaldateien ein
ValidateResult - schaltet die Prüdung für das geparste Ergebnis vor Übergabe an den Browser ein (Achtung Zeilennummern ändern sich)

Wenn die Werte auf (1 oder 2) gesetzt sind, kostet das natürlich Performance, wenn es zu langsam wird, kann man die Validierung auch nur temporär nach Umbauten einschalten.

Ausserdem enthält die 0.2 natürlich alle vorherigen Erweiterungen --> Header / default values / device Readings

Wenn ich positive Rückmeldung erhalte, würde ich diese Version auch in SVN überstellen.



Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Haecksler

Hallo Daniel,
habe nun mal folgendes getestet:

<?ftui-inc="templates/templateheizungTest.ftui.part" par01="HeizungZ1Mo" par02="HeizungZ2Mo" par03="HeizungZ3Mo" par04="HeizungZ4Mo" par05="HeizungAuto1_Montag" Tag="Montag" Layout="[HeizungAuto1_Montag:Layout]" Spalte="3"?>

Template sieht wie folgt aus:
<?ftui-header="TemplateHeizung" par01 par02 par03 par04 par05 Tag Layout Spalte>
<li data-row="2" data-col="<?ftui-key=Spalte ?>" data-sizex="1" data-sizey="4" class="<?ftui-key=Layout ?>">
<header><?ftui-key=Tag ?></header>
<div class="inline"><div data-type="range" data-color="green" data-color-low="green" data-color-high="green" data-device="<?ftui-key=par01 ?>" data-width="20" data-height="350" data-limit-low="8" data-limit-high="16" data-low="ZeitBerechnetMin" data-high="ZeitBerechnetMax" data-min="0" data-max="24" class="top-space left-space narrow"></div><br></div>
<div class="inline"><div data-type="range" data-color="orange" data-color-low="orange" data-color-high="orange" data-device="<?ftui-key=par03 ?>" data-width="20" data-height="350" data-limit-low="8" data-limit-high="16" data-low="ZeitBerechnetMin" data-high="ZeitBerechnetMax" data-min="0" data-max="24" class="top-space narrow nolabels"></div><br></div>
<div data-type="popup" data-draggable="true" data-height="480px" data-width="450px">
<div data-type="label" class="container round padding bg-gray semitransparent cell green">Einstellung<br>Heizzeiten</div>
<div class="dialog">
<header>Einstellung Heizzeiten</header>
<div data-type="label" class="cell">Zeit 1 AN</div>
<div class="inline"><div data-type="spinner" data-device="<?ftui-key=par01 ?>" data-cmd="setreading" data-get="Stunde" data-set="Stunde" data-min="0" data-max="23" data-step="1"  data-unit=" h" data-background-color="green" class="valueonly"></div></div>
<div class="inline"><div data-type="spinner" data-device="<?ftui-key=par01 ?>" data-cmd="setreading" data-get="Minute" data-set="Minute" data-min="0" data-max="59" data-step="1"  data-unit=" min" data-background-color="green" class="valueonly"></div></div>
<div data-type="label" class="cell">Zeit 1 AUS</div>
<div class="inline"><div data-type="spinner" data-device="<?ftui-key=par02 ?>" data-cmd="setreading" data-get="Stunde" data-set="Stunde" data-min="0" data-max="23" data-step="1"  data-unit=" h" data-background-color="blue" class="valueonly"></div></div>
<div class="inline"><div data-type="spinner" data-device="<?ftui-key=par02 ?>" data-cmd="setreading" data-get="Minute" data-set="Minute" data-min="0" data-max="59" data-step="1"  data-unit=" min" data-background-color="blue" class="valueonly"></div></div>
<div data-type="label" class="cell"><br><br>Zeit 2 AN</div>
<div class="inline"><div data-type="spinner" data-device="<?ftui-key=par03 ?>" data-cmd="setreading" data-get="Stunde" data-set="Stunde" data-min="0" data-max="23" data-step="1"  data-unit=" h" data-background-color="green" class="valueonly"></div></div>
<div class="inline"><div data-type="spinner" data-device="<?ftui-key=par03 ?>" data-cmd="setreading" data-get="Minute" data-set="Minute" data-min="0" data-max="59" data-step="1"  data-unit=" min" data-background-color="green" class="valueonly"></div></div>
<div data-type="label" class="cell">Zeit 2 AUS</div>
<div class="inline"><div data-type="spinner" data-device="<?ftui-key=par04 ?>" data-cmd="setreading" data-get="Stunde" data-set="Stunde" data-min="0" data-max="23" data-step="1"  data-unit=" h" data-background-color="blue" class="valueonly"></div></div>
<div class="inline"><div data-type="spinner" data-device="<?ftui-key=par04 ?>" data-cmd="setreading" data-get="Minute" data-set="Minute" data-min="0" data-max="59" data-step="1"  data-unit=" min" data-background-color="blue" class="valueonly"></div></div>
</div></div>
<div data-type="switch" data-device="<?ftui-key=par05 ?>" data-get="disabled" data-set-on="enable" data-set-off="disable" data-get-off="1" data-get-on="0" data-icon="fa-power-off" data-on-background-color="green" data-doubleclick="1000" style="font-size:250%" class="top-space"></div>
</li>


Der Wert vom Reading "[HeizungAuto1_Montag:Layout]" wird leider bei meiner Umsetzung nicht korrekt geladen.
Habe ich wo einen Denkfehler?

Gruß,
Stefan

viegener

Zitat von: Haecksler am 14 Februar 2016, 19:06:11
Der Wert vom Reading "[HeizungAuto1_Montag:Layout]" wird leider bei meiner Umsetzung nicht korrekt geladen.
Habe ich wo einen Denkfehler?

Gruß,
Stefan


Die Ersetzung funktioniert nur innerhalb von ftui-header, also müsstest Du den Inhalt für eine Variable im ftui-header angeben,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Haecksler

Zitat von: viegener am 15 Februar 2016, 00:40:16
Die Ersetzung funktioniert nur innerhalb von ftui-header, also müsstest Du den Inhalt für eine Variable im ftui-header angeben,
Johannes
Dachte ich mir fast....habe nun für jeden Tag ein Header-Template erstellt...scheint zu funktionieren siehe Screenshot.
Nun sollte der aktuelle Tag immer grünlich eingefärbt sein.
Gruß,
Stefan


viegener

Zitat von: Haecksler am 15 Februar 2016, 21:36:00
Dachte ich mir fast....habe nun für jeden Tag ein Header-Template erstellt...scheint zu funktionieren siehe Screenshot.
Nun sollte der aktuelle Tag immer grünlich eingefärbt sein.
Gruß,
Stefan


Danke Dir für's testen!
Ich habe noch eine Erweiterung gemacht, das auch im ftui-inc tag Readings ersetzen werden. Das macht es vermutlich für manche Szenarien einfacher.

Gruss,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Haecksler

Hallo Johannes,
habe nun endlich mal gestest, ob das mit dem ftui-inc tag Readings ersetzen funktioniert.. tut es leider nicht.
Habe erst heute die "02_FTUISRV.pm" aus dem 1 Thread geladen...ist das die richtige?

Es gibt aber auch eine gute Nachricht 02_FTUISRV.pm scheint problemlos mit FTUI 2.2 zulaufen.

Gruß,
Stefan

viegener

Zitat von: Haecksler am 25 April 2016, 19:20:52
Hallo Johannes,
habe nun endlich mal gestest, ob das mit dem ftui-inc tag Readings ersetzen funktioniert.. tut es leider nicht.
Habe erst heute die "02_FTUISRV.pm" aus dem 1 Thread geladen...ist das die richtige?

Es gibt aber auch eine gute Nachricht 02_FTUISRV.pm scheint problemlos mit FTUI 2.2 zulaufen.

Gruß,
Stefan

Ich habe diese Version erst jetzt im ersten Beitrag hochgeladen.
Die neueste Version findet sich aber immer in github: https://github.com/viegener/Telegram-fhem/tree/master/ftuisrv

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

OK, dann habe ich auch gleich die letzte Version ins SVN hochgeladen, ab morgen gibt es das Modul über den normalen Update.
Ankündigung hier: https://forum.fhem.de/index.php/topic,52655.0.html


Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können