FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: dougie am 28 Februar 2023, 12:13:47

Titel: Mal wieder RegEx für User Readings
Beitrag von: dougie am 28 Februar 2023, 12:13:47
....ich steh mal wieder auf dem Schaluch....

Der Lesekopf meines Stromzählers im Keller liefert mir immer brave meine Daten via MQTT

Das Sensor Reading sieht so aus:

Sensor
{"Time":"2023-02-28T11:56:15","MT175":{"Total_in":43218.095,"Power_cur":-890,"Meter_id":"090149534b000437e46d"}}


Mein UserReading soll daraus die aktuelle Leistung (Power) und den absoluten Zählerstand (Total) extrahieren.

userReadings
Power:Sensor.* { my $strg = ReadingsVal($name,'Sensor',''); $strg =~ m,"Power_cur":([0-9.]+), ? $1 : undef }, Total:Sensor.* { my $strg = ReadingsVal($name,'Sensor',''); $strg =~ m,"Total_in":([0-9.]+), ? $1 : undef }


Problem: ich hab im Winter meine Solaranlage erweitert und die liefert nun manchmal mehr Leistung als ich verbrauche. D.h. wegen des dann vorangestelltem Minusszeichen im Sensor Reading, bekomme ich dann keine Daten mehr.

Frage: wie muss ich das RegEx ändern, das mir das Minus richtig mitgenommen wird?

VG
Ralf


PS: hat sich schon erledigt!

Hab mal rumprobiert... so scheint es zu gehen.

userReadings
Power:Sensor.* { my $strg = ReadingsVal($name,'Sensor',''); $strg =~ m,"Power_cur":([-0-9.]+), ? $1 : undef }, Total:Sensor.* { my $strg = ReadingsVal($name,'Sensor',''); $strg =~ m,"Total_in":([0-9.]+), ? $1 : undef }

Titel: Antw:Mal wieder RegEx für User Readings
Beitrag von: betateilchen am 28 Februar 2023, 12:24:50

my $text = ReadingsVal($name,"Sensor","");
my ($powercur,$totalin) = $text =~ m/([-\d.]+),/g;
fhem("setreading $name Power $powercur");
fhem("setreading $name Total $totalin");

Titel: Antw:Mal wieder RegEx für User Readings
Beitrag von: dougie am 28 Februar 2023, 13:18:32

Sehr elegant!!! (Wie immer).

Dankeschön!!!!