....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 }
my $text = ReadingsVal($name,"Sensor","");
my ($powercur,$totalin) = $text =~ m/([-\d.]+),/g;
fhem("setreading $name Power $powercur");
fhem("setreading $name Total $totalin");
Sehr elegant!!! (Wie immer).
Dankeschön!!!!