Hauptmenü

FTUI version 3

Begonnen von Bunnu, 25 Oktober 2020, 09:25:41

Vorheriges Thema - Nächstes Thema

andreas_r

Danke für die Erklärung und die Aufbereitung. Ich fand das Thema so interessant, dass ich mir erlaubt habe, das ins Wiki mit aufzunehmen.

VG, Andreas

Jojo11

#3481
Hallo,

ich möchte Zeiten in meinem Wechselrichter setzen, die wie folgt gespeichert werden:

10:00 -> 1000
23:12 -> 2312
08:12 -> 812

Dazu nehme ich timeset. Das Setzen der Werte ohne führende Null habe ich schon hinbekommen durch Division durch 1:
<ftui-timeset [value]="Dxy:Time_point_1_time" (value)="replace(':','') | divide(1) | Dxy:Time_point_1_time" class="size-2">Uhr</ftui-timeset>
Leider zeigt timeset ohne führende Null die Zeit dann nicht an, sondern steht auf 00:00. Gibt es eine pipe, mit der ich die Null hinzufügen kann? Oder eine andere elegante Lösung? Möchte ungern über einen dummy gehen.

Gibt es irgendwo eine Dokumentation zu der format()-pipe? Leider finde ich dazu fast nichts aber formatieren in "%04d" wäre ja die Lösung  ::)

Update:
Ich habe es jetzt irgendwie zurechtgefrickelt :D
Diese Version funktioniert:
<ftui-timeset [value]="Dxy:Time_point_1_time | replace(/\d+/g, function(m){return '0'+m.toString()}) | replace(/\d+/g, function(n){return n.substr(n.length-4,n.length-2)+':'+n.substr(n.length-2,n.length)})" (value)="replace(':','') | divide(1) | Dxy:Time_point_1_time" class="size-2">Uhr</ftui-timeset>

Kann man sicherlich eleganter lösen, aber das macht erst mal was es soll.

Update2:
Leider nur mit Zeiten bis 09:59. Irgendetwas scheint beim timeset ab 10:00 anders zu sein  :-\
Einstellen geht, aber die Anzeige der hinterlegten Zeit im timeset mit [value] funktioniert mit "10:00" nicht, mit "09:00" aber bestens. Woran kann das liegen?

0930 -> 09:30
1000 -> 00:00

mr_petz

Hi Jojo11,
wenn deine Zeit ohne ':' kommt, dann zeigt timeset auch nix an.
teste mal so wenn keine gültige Zeit gesendet wird:
[value]="Dxy:Time_point_1_time | time=>time.length===3 ? ('0'+time).match(/.{1,2}/g).join(':') : time.match(/.{1,2}/g).join(':')"

LG

Jojo11

Hi Mr. Petz,

Deine Lösung funktioniert auf Anhieb  :o
Ich verstehe noch nicht ganz, warum meine nicht klappt, weil ich den Doppelpunkt ja schon auch dazwischen packe - dachte ich zumindest.
Aber deine ist natürlich wesentlich eleganter - herzlichen Dank! Werde ich jetzt erst mal versuchen nachzuvollziehen  ::)

schöne Grüße
Jojo

mr_petz

Schön das es funktioniert.
Zur Erläuterung:
Zuerst wird geschaut ob eine führende Null existiert durch Überprüfung der Länge vom String. Wenn nicht wird eine null vorran gesetzt und nach 2 Zahlen gesplittet und wieder mit ':' zusammen gesetzt. Wenn ja wird nur gesplittet und wieder mit ':' zusammen gesetzt.

LG

Jojo11

Mir war gar nicht klar, dass man in den pipes quasi if-Abfragen verwenden kann. Richtig gut 👍

Andre09

Hallo zusammen,

Meine PV Anlage liefert mir einen Wert in KWH ohne Einheit also z.B. 0,437 . Jetzt hätte ich den gerne eine Dezimalstelle kürzer also 0,43 oder gerundet 0,44 (das wäre egal).

Beim Knob geht das ja mit ,,decimal" aber beim Label hab ich es nicht hinbekommen auch nicht mit den hier gefundenen | round(2).

Hatte die unter [name]=,,device:reading | round(2)" gepackt. Aber ohne Erfolg.

Was mache ich hier falsch ? :) Danke 8

fz55

Hallo Andre09,

müsste das Attribut nicht [text] statt [name] heißen? Bei mir funktioniert das hier:

<ftui-label size="7" interval="15" [text]="openDTU:Tagesproduktion | divide(1000) | round(3)"

Andre09

Zitat von: fz55 am 23 Oktober 2023, 13:17:19Hallo Andre09,

müsste das Attribut nicht [text] statt [name] heißen? Bei mir funktioniert das hier:

<ftui-label size="7" interval="15" [text]="openDTU:Tagesproduktion | divide(1000) | round(3)"

Jau muss es, war aber nur ein Gedankenfehler. Tatsächlich war mein round auch richtig aber irgendwie hab ich das falsch abgespeichert ;) also läuft

Andre09

#3489
Andere Frage an die cracks. Langsam komm ich klar und verstehe auch wie sowas wie MAP oder STEP funktioniert und kriege es auch hin da ich verschiedene Symbole und Farben in Abhängigkeit vom Reading habe.

Toll wäre es noch wenn ich sowas abhängig von einem Zahlenwert machen könnte also Logo 1 wenn wert negativ, Logo 2 wenn wert 0 und Logo 3 wenn wert größer 0.

Anwendungsbeispiel z.b um eine batterieladung oder Entladung einer PV nicht nur durch den bloßen Wert darstelle (also negativ gleich Entladung) sondern auch mit Pfeilen die z.B. in die richtige Richtung zeigen.

Für Tipps sehr dankbar :)

(Edit)

Geht ja auch ganz normal mit step habe ich gesehen :) also erledigt

Andre09

Zitat von: fz55 am 23 Oktober 2023, 13:17:19Hallo Andre09,

müsste das Attribut nicht [text] statt [name] heißen? Bei mir funktioniert das hier:

<ftui-label size="7" interval="15" [text]="openDTU:Tagesproduktion | divide(1000) | round(3)"

ich nochmal :) gibt es auch einen Trick das die Stellenanzahl gleich bleibt?  also   0,49 0,50 0,51  nicht 0,49 0,5 0,51 ? Das sieht bei mehreren Werten übereinander nämlich dann recht bescheiden aus :/

yersinia

Zitat von: Andre09 am 26 Oktober 2023, 13:59:16
Zitat von: fz55 am 23 Oktober 2023, 13:17:19Hallo Andre09,

müsste das Attribut nicht [text] statt [name] heißen? Bei mir funktioniert das hier:

<ftui-label size="7" interval="15" [text]="openDTU:Tagesproduktion | divide(1000) | round(3)"
ich nochmal :) gibt es auch einen Trick das die Stellenanzahl gleich bleibt?  also  0,49 0,50 0,51  nicht 0,49 0,5 0,51 ?
fix(n) müsste das können:
<ftui-label size="7" interval="15" [text]="openDTU:Tagesproduktion | divide(1000) | round(3) | fix(3)"
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

mr_petz

Zitat von: andreas_r am 13 Oktober 2023, 12:33:45Danke für die Erklärung und die Aufbereitung. Ich fand das Thema so interessant, dass ich mir erlaubt habe, das ins Wiki mit aufzunehmen.

VG, Andreas

Hi Andreas,
kannst du das nochmal überarbeiten?
Der Nutzer hat einen Edit dazu erstellt.
https://forum.fhem.de/index.php?topic=115259.msg1289243#msg1289243

Danke und LG

andreas_r

Zitat von: mr_petz am 28 Oktober 2023, 13:02:56Hi Andreas,
kannst du das nochmal überarbeiten?
Der Nutzer hat einen Edit dazu erstellt.
https://forum.fhem.de/index.php?topic=115259.msg1289243#msg1289243

Danke und LG

Habe ich so geändert. Danke für den Hinweis, habe das Update nicht mehr mitbekommen. VG

Jojo11

Wenn ich die pipe "humanized()" verwende:

<ftui-label [text]="fs01:state:time | toDate() | ago() | humanized()" ago-refresh>
erhalte ich z.B. die Ausgabe "2 Tagn". Ist nur ein Schönheitsfehler, aber da fehlt ein "e"  ;D
Kann ich das selber irgendwo anpassen? Gibt es zu den pipes eigentlich auch irgendwo eine Doku?