Hauptmenü

Reading extrahieren

Begonnen von uwirt, 08 Dezember 2020, 13:09:51

Vorheriges Thema - Nächstes Thema

uwirt

Hallo - ich möchte einen Zahlenwert aus einem vom statistics-Modul erstellten Reading extrahieren:

Reading-Name: statWindSpeedHourLast
Reading-Wert: Min: 0.6 Avg: 2.6 Max: 4.8

Das neue Reading soll dann so sein:
Reading-Name: statWindSpeedHourMaxLast
Reading-Wert: 4.8

Ich habe es versucht mit:
attr HM_WDS100 userReadings statWindSpeedHourMaxLast {sprintf("%.1f",ReadingsNum($name,"statWindSpeedHourLast",0))}
dabei kommt aber leider nur 0.6 raus

FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya|EcoWitt

Beta-User

Versuch's mal so:
attr HM_WDS100 userReadings statWindSpeedHourMaxLast:statWindSpeedHourLast.* {my $rv = ReadingsVal($name,"statWindSpeedHourLast",0); $rv =~ m/([0-9.]+)$/; $1 ? $1 : undef }
(Aber gab es da nicht Möglichkeiten, das über statistics direkt zu machen?)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

uwirt

Besten Dank für die rasche Antwort.

Wenn ich deinen Code im Attribut eingebe wird leider kein neues Reading mit der Bezeichnung "statWindSpeedHourMaxLast" erstellt.
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya|EcoWitt

Beta-User

Hmm, also die folgende Variante habe ich eben getestet:
statWindSpeedHourMaxLast:statWindSpeedHourLast.* {my $rv = ReadingsVal($name,"statWindSpeedHourLast",0); $rv =~ m/([0-9.]+)$/g; $1}
Allerdings wird nicht direkt ein Reading angelegt, sondern eben erst, wenn der trigger eintrifft, also statWindSpeedHourLast aktualisiert wird. Kannst du ja mit setreading testen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Wzut

@Beta-User, vllt hättest du ihm erklären sollen das ReadingsNum mit seiner 0,6 genau richtig arbeitet, da er aber drei Werte im Reading hat es erst zerlegt werden muss und dann das dritte Element das ist was er will. Denn jetzt übernimmt er blind deine RegEx nach dem Motto "Deus lo vult" ....
und beim nächsten Mal fängt das Spiel von Vorne an :) 
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Beta-User

@Wzut: "Im Prinzip" gebe ich dir recht, aber manchmal habe ich keinen rechten Glauben daran, dass einem TE dann der freundlich gemeinte Hinweis auf regex101.com Freudentränen in die Augen drückt...
Hier hatte ich die Hoffnung, dass der TE dann nachhakt, was denn das zu bedeuten hat, weil das eher "seltsam" aussieht; über den "trigger" ist er ja schon gestolpert, allerdings vermutlich ohne bisher den tieferen Sinn dahinter erkannt zu haben.

Mal schauen, ob da noch die eine oder andere Frage kommt oder ob uns der TE erklären kann, was das Ding eigentlich warum macht?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

uwirt

#6
@Wzut & @Beta-User ... nicht dass ich nicht wüsste wie man mit Hilfe von regex101.com einen code konstruiert um aus einem reading genau das zu extrahieren was einem passt. ich hoffte halt dass es da eine elegantere Lösung gäbe als ein ,,Brute Force"-Ansatz.


... es hat übrigens funktioniert mit dem Code von @Beta-User
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya|EcoWitt