FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: melu am 25 April 2016, 20:42:42

Titel: String Auslesen und einkürzen
Beitrag von: melu am 25 April 2016, 20:42:42
Hallo Zusammen,

mit der Hoffnung hier zu einer zielführenden Lösung zu kommen, stelle ich mal meine aktuelle Hürde vor.

Vorweg die Basis. Ich habe einen alten Wechselrichter an einer fast 20 Jahre alten PV Anlage (gibt noch richtig Geld), Dieser hat eine Schnittstelle. Über diese wird ein Datenstring gesendet. Den füttere ich via Script (nötig, denn es wird keine Zeit mit geliefert) in eine DB. Dann bin ich drauf gekommen ich könnte mir die aktuellen Werte in dem schönen FTUI als Label anzeigen lassen.

Der aufbereitete String sieht so aus:


2016-04-24_18:57:35 # 103Vdc 0Adc 229Vac 0090Wac 000818Wh0741709Wh 07h80$


Soweit alles super. Die 000818Wh bilden die tages Erzeugung ab. Lassen sich auch einfach darstellen:
data-substitution="s/Wh.*//"

Nächster Teil. Das: 0741709Wh plus eine 2 (also 20741709Wh) stellt die gesamte Erzeugung über die Jahre da. Auch kein Problem geht mit:
data-substitution="s/.*?Wh/2/i"

Ist aber alles andere als "schön" in meinen Augen. Ich würde lieber 20741 kWh lesen. Kann mir jemand einen Tipp geben. wie ich die letzten 5 Stellen des Strings entfernen kann? bzw. die ersten 8 und die letzten 5 und die Zahl 2 dabei?

Das Label (kWh) sollte ich dann wieder hin bekommen!

Ich bin über jeden Tipp dankbar, ich hab es schon mit verschiedenen Modifier´n versucht, alles leider Ohne Erfolg.

Gruß

melu
Titel: Antw:String Auslesen und einkürzen
Beitrag von: setstate am 26 April 2016, 05:21:05
Interessante Aufgabe  8)

    <div data-type="label"
         data-device="dummy3"
         data-get="strom"
         data-part=".*Wh(\d+)\d{4}Wh\s.*"
         data-substitution="s/(.*)/2$1/i" data-unit="KWh"></div>


Mit Part die Zahlen zwischen den "Wh" rausholen. Der letzte Tausender bleibt aussen vor (ist daher nicht in den Capture-Group Klammern).
Dann noch mit Substitution alles nehmen und die 2 davor setzen.

oder so:

  <div data-type="label"
         data-device="dummy3"
         data-get="strom"
         data-part=".*Wh(\d+)\d{4}Wh\s.*"
         data-substitution="s/(.*)/2$1 KWh/i" ></div>
Titel: Antw:String Auslesen und einkürzen
Beitrag von: melu am 26 April 2016, 11:01:33
Hallo setstate,

hat perfekt funktioniert!

kann geschlossen werden!

Gruß