userReading mit RegEx extrahieren

Begonnen von dogas, 13 April 2018, 12:06:16

Vorheriges Thema - Nächstes Thema

dogas

Hallo,

viele haben es schon versucht und nur wenige haben es geschafft.
Ich versuche aus einem Statistik Reading meines Stromzählers nun schon seit knapp 2 Tage mit RegEx einen ordentlichen Wert zu extrahieren. Auf https://regex101.com/ habe ich den RegEx Wert am String getestet, leider funktioniert er in FHEM nicht. Ich bin auch am Ende meines noch recht beschränkten Lateins.

Der Zähler ist wie folgt definiert:
defmod Zaehler_HS OBIS /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_015AE266-if00-port0@9600,8,E,1 SML
attr Zaehler_HS event-on-change-reading ./
attr Zaehler_HS icon measure_power_meter
attr Zaehler_HS interval 5
attr Zaehler_HS pollingMode on
attr Zaehler_HS room HWR
attr Zaehler_HS unitReadings on
attr Zaehler_HS userReadings Test { if (ReadingsVal($NAME,"statTotal_consumption","")=~/Year: \d+\.\d+/) {$1} }

setstate Zaehler_HS opened
setstate Zaehler_HS 2018-03-31 10:27:28 0.118.7.0.10.255 0*var
setstate Zaehler_HS 2018-04-13 12:02:53 1.0.0.0.9.255 06-45-4D-48-01-0E-15-BE-87-A4
setstate Zaehler_HS 2018-04-13 12:02:53 129.129.199.130.3.255 EMH
setstate Zaehler_HS 2018-04-13 12:01:58 Test 1
setstate Zaehler_HS 2018-04-13 08:37:33 Version EMH\06454D48010E15BE87A4
setstate Zaehler_HS 2018-04-13 12:02:53 power 58.2 W
setstate Zaehler_HS 2018-04-13 12:02:47 statPowerDay Min: 27.4 Avg: 47.0 Max: 1373.2
setstate Zaehler_HS 2018-04-12 23:59:55 statPowerDayLast Min: 27.2 Avg: 115.5 Max: 2411.5
setstate Zaehler_HS 2018-04-13 12:02:47 statPowerMonth Min: 27.0 Avg: 127.5 Max: 5665.4
setstate Zaehler_HS 2018-03-31 23:59:55 statPowerMonthLast Min: 26.9 Avg: 155.7 Max: 5630.0 (since: 2018-03-21_07:35:22 )
setstate Zaehler_HS 2018-04-13 12:02:47 statPowerYear Min: 26.9 Avg: 140.4 Max: 5665.4 (since: 2018-03-21_07:35:22 )
setstate Zaehler_HS 2018-04-13 12:02:47 statTotal_consumption Hour: 2.8 Day: 565.5 Month: 39034.6 Year: 76314.0 (since: 2018-03-22 )
setstate Zaehler_HS 2018-04-13 11:59:55 statTotal_consumptionLast Hour: 53.0 Day: 2778.2 Month: 37279.4 Year: - (since: 2018-03-22 )
setstate Zaehler_HS 2018-04-12 10:42:07 state opened
setstate Zaehler_HS 2018-04-13 12:02:53 total_consumption 791747.9 Wh
setstate Zaehler_HS 2018-04-13 12:02:53 total_consumption_Ch1 0 Wh
setstate Zaehler_HS 2018-04-13 12:02:53 total_consumption_Ch2 791747.9 Wh



Ich möchte im userReading Test nun nur die Zahl des Jahresverbrauchs haben.

Das versuche ich mit
attr Zaehler_HS userReadings Test { if (ReadingsVal($NAME,"statTotal_consumption","")=~/Year: \d+\.\d+/) {$1} }

Lustigerweise bekomme ich entweder Syntaxfehler, oder nur eine 1.
Hat jemand einen Tipp was ich hier falsch mache?

mfg
Chris

Otto123

Hi,

ich hab es nicht ganz verstanden, aber was gibt Dir denn folgender Code in der FHEM Kommandozeile?
{ReadingsNum("Zaehler_HS","statTotal_consumption","")}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

frank

du hast die capture group für $1 nicht "angelegt" (fehlende klammern).

attr Zaehler_HS userReadings Test { if (ReadingsVal($NAME,"statTotal_consumption","")=~/Year: (\d+\.\d+)/) {return $1} }
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

dogas

@Otto123: Da kommt nur eine 2.8 und das ist nicht sinnvoll, da ja mehrere Zahlen in dem Reading sind.

@frank: Auch mit dem capture bekomme ich nur eine 1 zurück.

defmod Zaehler_HS OBIS /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_015AE266-if00-port0@9600,8,E,1 SML
attr Zaehler_HS event-on-change-reading ./
attr Zaehler_HS icon measure_power_meter
attr Zaehler_HS interval 5
attr Zaehler_HS pollingMode on
attr Zaehler_HS room HWR
attr Zaehler_HS unitReadings on
attr Zaehler_HS userReadings Test { if (ReadingsVal($NAME,"statTotal_consumption","")=~/Year: \d+\.\d+/) {return $1} }

setstate Zaehler_HS opened
setstate Zaehler_HS 2018-03-31 10:27:28 0.118.7.0.10.255 0*var
setstate Zaehler_HS 2018-04-13 12:49:51 1.0.0.0.9.255 06-45-4D-48-01-0E-15-BE-87-A4
setstate Zaehler_HS 2018-04-13 12:49:51 129.129.199.130.3.255 EMH
setstate Zaehler_HS 2018-04-13 12:01:58 Test 1
setstate Zaehler_HS 2018-04-13 08:37:33 Version EMH\06454D48010E15BE87A4
setstate Zaehler_HS 2018-04-13 12:49:51 power 33.9 W
setstate Zaehler_HS 2018-04-13 12:02:47 statPowerDay Min: 27.4 Avg: 47.0 Max: 1373.2
setstate Zaehler_HS 2018-04-12 23:59:55 statPowerDayLast Min: 27.2 Avg: 115.5 Max: 2411.5
setstate Zaehler_HS 2018-04-13 12:02:47 statPowerMonth Min: 27.0 Avg: 127.5 Max: 5665.4
setstate Zaehler_HS 2018-03-31 23:59:55 statPowerMonthLast Min: 26.9 Avg: 155.7 Max: 5630.0 (since: 2018-03-21_07:35:22 )
setstate Zaehler_HS 2018-04-13 12:02:47 statPowerYear Min: 26.9 Avg: 140.4 Max: 5665.4 (since: 2018-03-21_07:35:22 )
setstate Zaehler_HS 2018-04-13 12:02:47 statTotal_consumption Hour: 2.8 Day: 565.5 Month: 39034.6 Year: 76314.0 (since: 2018-03-22 )
setstate Zaehler_HS 2018-04-13 11:59:55 statTotal_consumptionLast Hour: 53.0 Day: 2778.2 Month: 37279.4 Year: - (since: 2018-03-22 )
setstate Zaehler_HS 2018-04-12 10:42:07 state opened
setstate Zaehler_HS 2018-04-13 12:49:51 total_consumption 791780.4 Wh
setstate Zaehler_HS 2018-04-13 12:49:51 total_consumption_Ch1 0 Wh
setstate Zaehler_HS 2018-04-13 12:49:51 total_consumption_Ch2 791780.4 Wh


frank

ich sehe nur das "return", aber keine capture group.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

dogas

Zitat von: frank am 13 April 2018, 13:29:36
ich sehe nur das "return", aber keine capture group.
Was meinst Du denn?

Gesendet von meinem LEX720 mit Tapatalk


frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Otto123

Zitat von: dogas am 13 April 2018, 12:50:41
@Otto123: Da kommt nur eine 2.8 und das ist nicht sinnvoll, da ja mehrere Zahlen in dem Reading sind.
Ich sagte doch, ich habe es nicht verstanden  :-[

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

dogas

Ich fasse es nicht. Danke @frank  ::)

Ich muss wohl noch etwas weiter regex üben.

mfg chris