[gelöst] dbLog>valueFn: fehlerhafte Werte ignorieren

Begonnen von frober, 30 November 2019, 22:02:17

Vorheriges Thema - Nächstes Thema

frober

Hallo,

ich versuche fehlerhafte Temperaturwerte meiner Lüftung zu ignorieren, dazu habe ich folgendes (die zweite if-Bedingung) beim valueFn eingefügt. Werte die mehr als 5°C vom Vorwert abweichen sollen ignoriert werden. Oldreadings ist beim Device gesetzt.
Leider bekomme ich eine Fehlermeldung im Log. Wo liegt der Fehler, bzw. kann das so überhaupt funktionieren?

{if ($DEVICE eq "KS300" && $READING eq "data" && $EVENT=~/^[avg]/) {$READING="average"} else {$VALUE=(split("state: ",$VALUE,2))[1]}; if ($DEVICE eq "Lueftung" && $VALUE - OldReadingsNum($DEVICE,$READING,0) > 5){$IGNORE=1;}}


2019.11.30 21:32:47 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 117164) line 1.


Gruß und Danke
Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

amenomade

$VALUE hat einen Wert, der ihm nicht gefällt.
Bist Du sicher, dass folgendes richtig ist:
$EVENT=~/^[avg]?

Das bedeutet alle Events, die mit entweder a oder v oder g anfangen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

frober

Die beiden If sollten unabhängig von einander sein.
Das erste funktioniert seit Jahren und ist für meine KS300 Wetterstation.
Das zweite If ist neu und soll die fehlerhaften Temperaturwerte von der Lüftung filtern.

Es gibt doch nur ein valueFn für dbLog oder habe ich da was übersehen.

von unterwegs...

Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

Hallo ihr zwei.

die Warnung kommt weil $VALUE offensichtlich manchmal keinen Wert hat und demzufolge bei der Berechnung nicht dienen kann. Man kann es so ergänzen:


if ($DEVICE eq "Lueftung" && defined($VALUE) && ($VALUE - OldReadingsNum($DEVICE,$READING,0) > 5)) {$IGNORE=1;}


ZitatEs gibt doch nur ein valueFn für dbLog oder habe ich da was übersehen.
Es gibt noch ein Device spezifisches DbLogvalueFn was du direkt in einem Quelldevice setzen kannst. Also ähnlich DbLogInclude usw.

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

frober

#4
Hallo Heiko,

ich habe deinen Vorschlag übernommen und die letzten 2 Std. keine Meldung mehr. :)

Nur versteht ich nicht, dass §VALUE kein Wert haben soll. Wenn ich das Log mit der Datenbank vergleiche, habe ich bei jeden DB-Eintrag auch eine Logmeldung!?

2019.12.01 10:33:13 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 344590) line 1.
2019.12.01 10:43:26 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 347636) line 1.
2019.12.01 10:45:00 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 348102) line 1.
2019.12.01 11:13:39 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 356439) line 1.
2019.12.01 11:33:15 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 362266) line 1.
2019.12.01 11:43:28 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 365339) line 1.
2019.12.01 11:45:05 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 365814) line 1.
2019.12.01 12:13:40 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 374510) line 1.
2019.12.01 12:33:17 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 380439) line 1.
2019.12.01 12:43:29 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 383544) line 1.
2019.12.01 12:45:06 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 384034) line 1.
2019.12.01 13:13:42 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 392489) line 1.
2019.12.01 13:24:45 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 395845) line 1.
2019.12.01 13:33:18 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 398403) line 1.
2019.12.01 13:43:33 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 401839) line 1.
2019.12.01 14:13:44 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 410948) line 1.
2019.12.01 14:24:47 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 414308) line 1.
2019.12.01 14:33:20 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 416864) line 1.
2019.12.01 14:43:34 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 419778) line 1.
2019.12.01 15:13:46 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 428813) line 1.
2019.12.01 15:24:50 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 432145) line 1.
2019.12.01 15:33:21 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 434616) line 1.
2019.12.01 15:43:37 1: PERL WARNING: Use of uninitialized value $VALUE in subtraction (-) at (eval 437630) line 1.


"2019-12-01 10:33:13","Lueftung","COMFOAIR","Temp_Zuluft: 15.5","Temp_Zuluft","15.5",""
"2019-12-01 10:43:26","Lueftung","COMFOAIR","Temp_Fortluft: 8","Temp_Fortluft","8",""
"2019-12-01 10:45:00","Lueftung","COMFOAIR","Temp_Aussen: 5.5","Temp_Aussen","5.5",""
"2019-12-01 11:13:39","Lueftung","COMFOAIR","Temp_Abluft: 19.5","Temp_Abluft","19.5",""
"2019-12-01 11:33:15","Lueftung","COMFOAIR","Temp_Zuluft: 15","Temp_Zuluft","15",""
"2019-12-01 11:43:28","Lueftung","COMFOAIR","Temp_Fortluft: 7.5","Temp_Fortluft","7.5",""
"2019-12-01 11:45:05","Lueftung","COMFOAIR","Temp_Aussen: 6","Temp_Aussen","6",""
"2019-12-01 12:13:40","Lueftung","COMFOAIR","Temp_Abluft: 19.5","Temp_Abluft","19.5",""
"2019-12-01 12:33:17","Lueftung","COMFOAIR","Temp_Zuluft: 15","Temp_Zuluft","15",""
"2019-12-01 12:43:29","Lueftung","COMFOAIR","Temp_Fortluft: 8","Temp_Fortluft","8",""
"2019-12-01 12:45:06","Lueftung","COMFOAIR","Temp_Aussen: 6","Temp_Aussen","6",""
"2019-12-01 13:13:42","Lueftung","COMFOAIR","Temp_Abluft: 19.5","Temp_Abluft","19.5",""
"2019-12-01 13:24:45","Lueftung","COMFOAIR","Temp_Aussen: 6.5","Temp_Aussen","6.5",""
"2019-12-01 13:33:18","Lueftung","COMFOAIR","Temp_Zuluft: 15","Temp_Zuluft","15",""
"2019-12-01 13:43:33","Lueftung","COMFOAIR","Temp_Fortluft: 8.5","Temp_Fortluft","8.5",""
"2019-12-01 14:13:44","Lueftung","COMFOAIR","Temp_Abluft: 19.5","Temp_Abluft","19.5",""
"2019-12-01 14:24:47","Lueftung","COMFOAIR","Temp_Aussen: 6.5","Temp_Aussen","6.5",""
"2019-12-01 14:33:20","Lueftung","COMFOAIR","Temp_Zuluft: 15.5","Temp_Zuluft","15.5",""
"2019-12-01 14:43:34","Lueftung","COMFOAIR","Temp_Fortluft: 8.5","Temp_Fortluft","8.5",""
"2019-12-01 15:13:46","Lueftung","COMFOAIR","Temp_Abluft: 19.5","Temp_Abluft","19.5",""
"2019-12-01 15:24:50","Lueftung","COMFOAIR","Temp_Aussen: 7","Temp_Aussen","7",""
"2019-12-01 15:33:21","Lueftung","COMFOAIR","Temp_Zuluft: 15.5","Temp_Zuluft","15.5",""
"2019-12-01 15:43:37","Lueftung","COMFOAIR","Temp_Fortluft: 8.5","Temp_Fortluft","8.5",""
"2019-12-01 16:13:49","Lueftung","COMFOAIR","Temp_Abluft: 19.5","Temp_Abluft","19.5",""
"2019-12-01 16:24:51","Lueftung","COMFOAIR","Temp_Aussen: 6.5","Temp_Aussen","6.5",""
"2019-12-01 16:33:22","Lueftung","COMFOAIR","Temp_Zuluft: 15","Temp_Zuluft","15",""
"2019-12-01 16:43:38","Lueftung","COMFOAIR","Temp_Fortluft: 8","Temp_Fortluft","8",""



Funktioniert dies auch bei eine Abweichung von z.B. -6, bzw. wie bekomme ich das hin, dass es bei >(-)5 greift?


Gruß Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

#5
Zitat
Nur versteht ich nicht, dass §VALUE kein Wert haben soll. Wenn ich das Log mit der Datenbank vergleiche, habe ich bei jeden DB-Eintrag auch eine Logmeldung!?
Stimmt, das kann ich mir (und dir) momentan auch nicht erklären.

Du könntest in deine valueFn noch ein Logeintrag reinschreiben:


if ($DEVICE eq "Lueftung")
   {
    my $val = defined($VALUE)?$VALUE:"Val undefined";
     Log 1, "VAL check - Reading: $READING, Value: $val";
   }


Dann sollte man sehen, welchem Reading kein Value zugeordnet ist. Vielleicht kommst du damit der Sache auf die Spur.

Du hattest noch eine Frage nachgeschoben:

Zitat
Funktioniert dies auch bei eine Abweichung von z.B. -6, bzw. wie bekomme ich das hin, dass es bei >(-)5 greift?

Könnte so gehen:


abs($VALUE - OldReadingsNum($DEVICE,$READING,0)) > 5


EDIT: Logeintrag etwas verändert.

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

frober

Ok, habe alles umgesetzt.
Jetzt heißt es abwarten, da die fehlerhaften Daten nur sporadisch, teilweise tagelang alles i.O. (Übertragung per RS232), kommen.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

Hallo Heiko,

sieht leider nicht gut aus, alle Values sind leer. Ich habe das Log mal umgestellt, dass ich das §VALUE und §EVENT bekomme.

if ($DEVICE eq "Lueftung")
   {
    #my $val = defined($VALUE)?$VALUE:"Val undefined";
     Log 1, "VAL check - Reading: $READING, Value: $VALUE, Event: $EVENT";
   }


2019.12.02 18:09:22 1: VAL check - Reading: Temp_Aussen, Value: , Event: Temp_Aussen: 5

In der Datenbank ist Value vorhanden:
2019-12-02 18:09:22,"Lueftung","COMFOAIR","Temp_Aussen: 5","Temp_Aussen","5",""

Das Filtern der Werte funktioniert dementsprechend auch nicht.  :(

Gruß Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

Ich habe jetzt zur Kontrolle meine PVTemp (diesmal Onewire) hinzugefügt.
Das gleiche Spiel...

2019.12.02 18:45:41 1: VAL check - Reading: temp, Value: , Event: temp: -0.31

Kann es sein, dass zu dem Zeitpunkt $VALUE noch nicht beschrieben wurde?
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

#9
Hallo Bernd,

jetzt habe ich mir nochmal deine gesamte valueFn vorgenommen.

Zitat
{  if ($DEVICE eq "KS300" && $READING eq "data" && $EVENT=~/^[avg]/) {
            $READING="average";
    } else {
           $VALUE=(split("state: ",$VALUE,2))[1];
    }

    if ($DEVICE eq "Lueftung" && $VALUE - OldReadingsNum($DEVICE,$READING,0) > 5) {
           $IGNORE=1;
    }
}

Die Tücke steckt wie immer im Detail.  ;)
So wie es momentan ist, wird ja immer wenn Device kein KS300 ist, $VALUE in der ersten Anweisung abgeändert, also natürlich auch wenn du "Lueftung" auswertest gehst du in den else-Zweig der ersten Anweisung.

Um das zu verhindern, kann man die Funktion sicherlich auf verschiedene Weise abändern. Eine Möglichkeit wäre eine weitere Variable einzuführen für deinen zweiten Check.

Zum Beispiel:


{  my $LVALUE = $VALUE if ($DEVICE eq "Lueftung");
    if ($DEVICE eq "KS300" && $READING eq "data" && $EVENT=~/^[avg]/) {
            $READING="average"
    } else {
           $VALUE=(split("state: ",$VALUE,2))[1]};

    if ($DEVICE eq "Lueftung" && $LVALUE - OldReadingsNum($DEVICE,$READING,0) > 5) {
           $IGNORE=1;
    }
}


Versuchs mal damit.

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

frober

Danke Heiko,

das else habe ich auch nicht bedacht :(, leuchtet mir ein.

Dann ist es einfacher DbLogvalueFn zu benutzen...

Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

Mein Vorschlag reicht noch nicht weit genug, weil $VALUE immer verändert wird wenn Device nicht KS300.
Du müstest versuchen den else-Zweig zu eliminieren oder zu verschärfen mit "elsif ($DEVICE eq "KS300")" damit das nur zieht wenn es sich um KS300 handelt.

Ja, DbLogvalueFn wäre dann wohl der bessere Weg.....
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

frober

Ok, lerne zwar gerne, wird mir jedoch auch,spätestens bein nächsten Eintrag, zu unübersichtlich.
Ich benutze DbLogvalueFn... und setzte schon mal auf [gelöst].

Gruß und schönen Abend noch
Bernd


Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

Das wünsche ich dir auch ... und viel Erfolg.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

frober

#14
Vollständigkeitshalber hier noch meine Umsetzung:

attr Lueftung DbLogValueFn {if ($READING =~ /Temp_/ && abs($VALUE - OldReadingsNum($DEVICE,$READING,0)) > 5) {\
           $IGNORE=1;;\
    }\
}


Das Log ist clean, ob die fehlerhaften Werte alle ignoriert werden kann ich noch nicht sagen, da diese nur sporadisch kommen. Eventuell muss ich den Wert (>5) noch anpassen.   

Nachtrag: Habe das "abs" im Code vergessen, dadurch werden negative Abweichungen nicht ignoriert. > Ist korrigiert.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

frober

Hallo Heiko,

funktioniert leider nicht. :(

Das zweite if habe ich zum Test direkt auf ein Reading gesetzt, ohne Erfolg. Habe auch versucht nur Log mit $VALUE auszugeben.
Übersehe ich schon wieder etwas?

attr Lueftung DbLogValueFn {if ($READING =~ m/Temp_/ && abs($VALUE - OldReadingsNum($DEVICE,$READING,0)) > 5) {\
           $IGNORE=1;;\
};;\
if ($READING eq "Temp_Aussen") { \
my $val = abs($VALUE - OldReadingsNum($DEVICE,$READING,0));;\
Log 1, "$DEVICE, $VALUE, $val";;\
}\
}


Gruß Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

Hallo Bernd , was funktioniert nicht ?  Sorry, kann mir nicht merken bei den vielen Beiträgen wo wir grad waren  ;)
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Ach ich glaube ich weiß was du meinst.
In dem Attr DbLogValueFn hat man als User im Gegensatz zum Attr valueFn keinen Zugriff auf den Devicenamen über $DEVICE. Im Normalfall braucht man das an der Stelle auch nicht war ich der Meinung, aber für Berechnungen ist es ja doch nötig.

Ich ergänze es mal und stelle dir gleich eine neue Version zur Verfügung.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

@Bernd, habe dir die neue Version 4.9.2 in mein contrib gestellt.
Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben:


"wget -qO ./FHEM/93_DbLog.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/93_DbLog.pm"


Damit hast du nun auch lesenden Zugriff auf die Variable $DEVICE. Habe es bei mir ausprobiert.


{
  if ($READING =~ /^L1_Spannung$|^L2_Spannung$/) {
    my $val  = ReadingsVal($DEVICE,$READING,"");
my $oval = OldReadingsNum($DEVICE,$READING,0);
Log 1, "$DEVICE, $READING, $val, old: $oval";
  }
}


ergibt im Log


2019.12.16 22:36:41.369 1: SMA_Energymeter, L1_Spannung, 235.7, old: 235.9
2019.12.16 22:36:41.378 1: SMA_Energymeter, L2_Spannung, 235.5, old: 235.3
2019.12.16 22:36:41.417 1: SMA_Energymeter, L1_Spannung, 235.7, old: 235.9
2019.12.16 22:36:41.421 1: SMA_Energymeter, L2_Spannung, 235.5, old: 235.3
2019.12.16 22:36:41.504 1: SMA_Energymeter, L1_Spannung, 235.7, old: 235.9
2019.12.16 22:36:41.507 1: SMA_Energymeter, L2_Spannung, 235.5, old: 235.3
2019.12.16 22:36:41.513 1: SMA_Energymeter, L1_Spannung, 235.7, old: 235.9
2019.12.16 22:36:41.514 1: SMA_Energymeter, L2_Spannung, 235.5, old: 235.3
2019.12.16 22:37:41.142 1: SMA_Energymeter, L1_Spannung, 235.9, old: 235.7
2019.12.16 22:37:41.150 1: SMA_Energymeter, L2_Spannung, 235.6, old: 235.5
2019.12.16 22:37:41.188 1: SMA_Energymeter, L1_Spannung, 235.9, old: 235.7
2019.12.16 22:37:41.193 1: SMA_Energymeter, L2_Spannung, 235.6, old: 235.5
2019.12.16 22:37:41.277 1: SMA_Energymeter, L1_Spannung, 235.9, old: 235.7
2019.12.16 22:37:41.280 1: SMA_Energymeter, L2_Spannung, 235.6, old: 235.5
2019.12.16 22:37:41.286 1: SMA_Energymeter, L1_Spannung, 235.9, old: 235.7
2019.12.16 22:37:41.287 1: SMA_Energymeter, L2_Spannung, 235.6, old: 235.5


Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

frober

Danke Heiko,

bin schon verzweifelt [emoji6]

Teste heute Abend....
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

Hallo Heiko,

von deiner Seite sollte es passen.

Ich bekommen komischerweise nur für eine Temperatur einen "OldReadings"-Wert. ::)
Habe es in Fhem in der Befehlszeile getestet.

Egal ob oldreadings so...

attr Lueftung oldreadings Temp_A.*,Temp_Fort.*,Temp_Z.*


...oder so definiert...

Temp_Aussen.*,Temp_Fortluft.*,Temp_Zuluft.*,Temp_Abluft.*


und ausgerechnet Temp_Fortluft funktioniert. >:(

2019.12.17 18:55:15 1: Lueftung, Temp_Aussen, 11.5, 11.5, 1
2019.12.17 18:55:15 1: Lueftung, Temp_Zuluft, 17, 17, 1
2019.12.17 18:55:15 1: Lueftung, Temp_Abluft, 20, 20, 1
2019.12.17 18:55:15 1: Lueftung, Temp_Fortluft, 12.5, 0.5, 0


Aktuelle DbLogValueFn:
{if ($READING =~ m/Temp_/ && abs($VALUE - OldReadingsNum($DEVICE,$READING,0)) > 5) {
           $IGNORE=1
};
if ($READING =~ m/Temp_/) {
my $val = abs($VALUE - OldReadingsNum($DEVICE,$READING,0));
Log 1, "$DEVICE, $READING, $VALUE, $val, $IGNORE";
}
}


Gruß Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

Hallo Bernd,

gib dir doch mal den old-Wert separat aus so wie ich es gemacht habe.
Und dann schauen wir nochmal ...

Aber der Patch zieht offensichtlich.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Und reicht nicht auch


attr Lueftung oldreadings Temp_.*


??
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

frober

Zitat von: DS_Starter am 17 Dezember 2019, 19:32:40
Und reicht nicht auch


attr Lueftung oldreadings Temp_.*


??

Reicht schon, dann speichere ich 8 an Stelle von 4 Readings. Wäre kein Abbruch, ändert aber auch nichts.
Mittlerweile bekomme ich 2 "OldReadings", warum auch immer.

2019.12.17 19:37:08 1: Lueftung, Temp_Aussen, 11, old: 11.5
2019.12.17 19:37:08 1: Lueftung, Temp_Zuluft, 17, old: 0
2019.12.17 19:37:08 1: Lueftung, Temp_Abluft, 20, old: 0
2019.12.17 19:37:08 1: Lueftung, Temp_Fortluft, 12.5, old: 13


Und komischer weise funktioniert das alleine nicht:
{if ($READING =~ m/Temp_/) {
    my $val  = ReadingsNum($DEVICE,$READING,0);
my $oval = OldReadingsNum($DEVICE,$READING,0);
Log 1, "$DEVICE, $READING, $val, old: $oval";
}


Wenn in Verbindung mit...kommen die Logs ???

{if ($READING =~ m/Temp_/ && abs($VALUE - OldReadingsNum($DEVICE,$READING,$VALUE)) > 5) {
           $IGNORE=1
};
if ($READING =~ m/Temp_/) {
    my $val  = ReadingsNum($DEVICE,$READING,0);
my $oval = OldReadingsNum($DEVICE,$READING,0);
Log 1, "$DEVICE, $READING, $val, old: $oval";
}
}


Ich habe bewusst aktuell $VALUE als ERROR, sonst bekomme ich keine Daten geloggt solange Oldreadings nicht richtig funktioniert.


Ich muss erst mal was Esssen, bin müde und habe aktuell keinen Durchblick. ::)
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

Zitat
Und komischer weise funktioniert das alleine nicht:
Da fehl eine schliessende Klammer }


Also ich vermute die Readings werden wrst nach und nach aktualisiert. Deswegen gibt es erst dann einen old Wert.
Weiss nicht das genau bei deinem Device aussieht. DercWert muss sich sicherlich erst mindestens einmal ändern bevor es einen old Value gibt.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

frober

Ich warte Mal, bin davon ausgegangen, dass immer der Vorwert, egal ob geändert oder nicht, gespeichert wird.
Aber dann hätte aber auch meine verkürzte Def. mit regex nicht gegriffen. Die ist schon seit x Tagen definiert.

Die Klammer kann auch vom Copy und Paste kommen. Die Syntax-Kontrolle hat nicht angeschlagen!?
Ich probiere es nochmal...
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

Es war wirklich die Klammer, reagiert hier "codemirror/fhem_codemirror.js" nicht?
Ich habe es nochmal nachgestellt, es kommt kein Syntaxfehler.

ZitatAlso ich vermute die Readings werden wrst nach und nach aktualisiert. Deswegen gibt es erst dann einen old Wert.
Da hast du Recht. Macht auch Sinn, um Fhem zu entlasten.
Ich habe mal mit setreading manipuliert  ;) jetzt sind alle da. :)

Nun passt es, habe wieder meine alte Konfig drin:
2019.12.17 21:14:35 1: Lueftung, Temp_Aussen, Wert: 10, Diff: 0.5, Ignore: 0
2019.12.17 21:14:35 1: Lueftung, Temp_Zuluft, Wert: 16.5, Diff: 0.5, Ignore: 0
2019.12.17 21:14:35 1: Lueftung, Temp_Abluft, Wert: 20, Diff: 0.5, Ignore: 0
2019.12.17 21:14:35 1: Lueftung, Temp_Fortluft, Wert: 12, Diff: 0.5, Ignore: 0


Danke und schönen Abend noch.

Gruß Bernd



Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

Prima  :D
Die neue Version checke ich nachher ein.

Scönen Abend und Lg,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter