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

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

Vorheriges Thema - Nächstes Thema

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