String Auslesen und einkürzen

Begonnen von melu, 25 April 2016, 20:42:42

Vorheriges Thema - Nächstes Thema

melu

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

setstate

#1
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>

melu

Hallo setstate,

hat perfekt funktioniert!

kann geschlossen werden!

Gruß