Hallo zusammen,
ich habe hier das Thema schon angefangen:
https://forum.fhem.de/index.php/topic,124142.0.html (https://forum.fhem.de/index.php/topic,124142.0.html)
Laut Rudi ist das Problem DbLog spezifisch.
Folgende Daten habe ich in der Datenbank (Bsp.-Daten, da anderes Datum):
2021-11-14_04-35-55__1__Heizung__opStateHeatPump1 Waermepumpe steht 2021-11-14 18:41:34
2021-11-14_04-38-55__1__Heizung__opStateHeatPump1 Waermepumpe laeuft 2021-11-14 18:41:34
2021-11-14_04-50-55__1__Heizung__opStateHeatPump1 Waermepumpe laeuft 2021-11-14 18:41:34
2021-11-14_04-56-55__1__Heizung__opStateHeatPump1 Abtauen 2021-11-14 18:41:34
2021-11-14_05-05-55__1__Heizung__opStateHeatPump1 Waermepumpe laeuft 2021-11-14 18:41:34
2021-11-14_05-17-55__1__Heizung__opStateHeatPump1 Waermepumpe laeuft 2021-11-14 18:41:34
2021-11-14_05-27-00__1__Heizung__opStateHeatPump1 Waermepumpe steht 2021-11-14 18:41:34
Das Gplot-File ist, mittlerweile so konfiguriert (logProxy habe erstmal rausgenommen):
#DbLog Heizung:opStateHeatPump1:::$val=~s/(Waermepumpe|Abtauen).(laeuft|steht)(\d*).*/$1eq"Abtauen"?0:$2eq"laeuft"?1:0/eg
Der Plot wird einwandfrei angezeigt.
Im Log bekomme ich folgende Warnung:
2021.11.16 17:27:40 1: PERL WARNING: Argument "Abtauen" isn't numeric in numeric gt (>) at ./FHEM/98_SVG.pm line 1591.
2021.11.16 17:27:40 1: PERL WARNING: Argument "Abtauen" isn't numeric in subtraction (-) at ./FHEM/98_SVG.pm line 1975.
Ich habe auch versucht das mit den Schlüsselwörter zu lösen, erfolglos.
#DbLog Heizung:opStateHeatPump1:::$val=~s/(Waermepumpe|Abtauen).(laeuft|steht)(\d*).*/$1eq"Abtauen"?"ignore":$2eq"laeuft"?1:0/eg
Im Plot, unter "Show preproccessed input" steht weiterhin 'Abtauen'.
Ich muß irgendwie "Abtauen" ignorieren oder als Zahl, am besten als eine Null, zurückgeben.
Wie bekomme ich das gelöst?
Danke und Grüße
Bernd
Da "Abtauen" abschließend ist (und danach nichts (!) mehr von DBLog geliefert wird), ist es vermutlich einfacher, erst auf eq zu prüfen, und dann erst auf laueft/steht. Oder eben die weiteren Abfragen optional machen...
Zitat von: Beta-User am 16 November 2021, 17:59:43
Da "Abtauen" abschließend ist (und danach nichts (!) mehr von DBLog geliefert wird), ist es vermutlich einfacher, erst auf eq zu prüfen, und dann erst auf laueft/steht. Oder eben die weiteren Abfragen optional machen...
Das habe ich doch, oder verstehe ich dich falsch?
Zitat.../$1eq"Abtauen"?0:$2eq"laeuft"?1:0/eg
Wie mache ich weiter Abfragen Optional?
Ich dachte wenn etwas zutrifft -> $1eq"Abtauen"?0 wird nicht mehr weitergeprüft.
Ich vermute, dass gar kein match vorliegt, weil Gruppe 2 in dem Fall failt.
So etwas vermute ich auch und habe folgendes erfolglos probiert (keine Ahnung ob das von Syntax her funktioniert):
Zitat.../$1eq"Abtauen"&&!$2?0:$2eq"laeuft"?1:0/eg
Und hier die Lösung ;D
#DbLog Heizung:opStateHeatPump1:::$val=~s/(Waermepumpe|Abtauen)([\s]{0,1})([a-z]{0,6})(\d*).*/$1eq"Abtauen"?0:$3eq"laeuft"?1:0/eg