[gelöst] FHEM Crash: Day '31' out of range 1..30

Begonnen von schachti, 31 Mai 2019, 08:36:56

Vorheriges Thema - Nächstes Thema

schachti

Hi zusammen,

ich bin über das folgende Problem gestolpert: Auf einer Übersichtsseite mit mehreren Plots habe ich in einem Plot auf den Button für den Offset (Anzeige der vorherigen Periode) geklickt. Darauf stürzt FHEM reproduzierbar ab.

Ursache könnte sein, dass es sich um einen Plot mit Attribut "fixedrange month" handelt. Im FHEM-Log findet sich folgender Eintrag als letzte Meldung vor dem Crash:
Day '31' out of range 1..30 at ./FHEM/93_DbLog.pm line 2999.

Ist das schon die Ursache, dass beim Versuch, die vorherige Periode anzuzeigen, versucht wird, auf den 31. April (den es ja nicht gibt) zuzugreifen? Ist das Problem bereits bekannt?

DS_Starter

ZitatIst das schon die Ursache, dass beim Versuch, die vorherige Periode anzuzeigen, versucht wird, auf den 31. April (den es ja nicht gibt) zuzugreifen?
Die Ursachenermittlung ist richtig. Vom SVG-Modul wird demnach ein Datum angefordert welches es nicht gibt.
Die sauberste Lösung wäre meiner Meinung nach, dass SVG dieses Datum nicht anfordert -> bitte im SVG-Forum dazu nachfragen bzw. den Beitrag erstmal dorthin verschieben.

Sollte das aus irgendwelchen Gründen nicht gehen bzw. zu aufwändig erscheinen, muß ich versuchen einen Workaround im DbLog einzubauen. In diesem Fall den Beitrag bitte zurück nach "Automation" stellen.

VG,
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

doman75

hatte heute auch den Fehler gibts hier eine Lösung?


rudolfkoenig

#4
1. Verschobene Threads kriege ich nicht mit, das hier war purer Zufall. Bitte neue Diskussion aufmachen, oder mir ein PM senden.

2. Ich kann das Problem nicht nachvollziehen.
Mit fixedrange=month kriege ich beim zurueckblaettern in fhem.cfg.demo/Sensors folgende Intervalle:2019.12.23 21:24:34.732 1: F:2013-08-01_00:00:00 T:2013-08-31_23:59:59
2019.12.23 21:24:51.453 1: F:2013-07-01_00:00:00 T:2013-07-31_23:59:59
2019.12.23 21:24:58.263 1: F:2013-06-01_00:00:00 T:2013-06-30_23:59:59
2019.12.23 21:25:19.700 1: F:2013-05-01_00:00:00 T:2013-05-31_23:59:59
2019.12.23 21:25:39.455 1: F:2013-04-01_00:00:00 T:2013-04-30_23:59:59
2019.12.23 21:25:46.092 1: F:2013-03-01_00:00:00 T:2013-03-31_23:59:59


3. Es gibt ein Workaround: Umsteigen auf FileLog :)

DS_Starter

Bei mir kann/konnte ich dieses Problem auch noch nicht nachstellen obwohl ich ausschliesslich dblog einsetze.  :)

Wenn Rudi nicht noch eine zündende Idee hat woher bzw. unter welchen Bedingungen ein Datum angefordert wird welches es nicht gibt, baue ich nach den Feiertagen eine Validitätsprüfung in dblog als Workaround ein.

Die sehr geringe Schreibfrequenz in diesem Thread lässt auch vermuten, dass dieses Problem wohl selten ist bzw. nur unter ganz bestimmten Bedingungen auftritt, die nicht so häufig vorkommen.

Schöne Weihnachten !
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

schachti

@rudolfkoenig: entschuldige, das war mir nicht bewusst.

Ich werde nach Weihnachten nochmal probieren, ob ich es reproduzieren kann. Hat es vielleicht mit dem Datum zu tun, an dem man es probiert? Bei mir war es der 31.05., bei doman75 der 31.07. vielleicht am 31.12. das Problem nachstellen?

DS_Starter

Guten Morgen,

ich habe soeben eine neue DbLog-Version eingecheckt, die das angeforderte Datum auf Validität checked und ggf. einen Logeintrag schreibt wie z.B.


2019.12.28 07:46:34.501 1: DbLog LogSQLITE - Wrong date/time format (from: 2019-02-30 01:10:00) requested by SVG: Day '30' out of range 1..28 at ./FHEM/93_DbLog.pm line 5744.
 

Ein FHEM Crash wird verhindert. Vielleicht wird es dadurch auch erleichert die eigentliche Ursache zu finden. Es wird immer das angeforderte Datum der Zeitgrenzen mit ausgegeben (from/to).
Ist morgen früh im Regelupdate. Wer es eilig hat zu testen, kann die Version auch aus meinem contrib downloaden. 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"


Danach FHEM restarten.

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

schachti

Zitat von: DS_Starter am 28 Dezember 2019, 08:20:03
Wer es eilig hat zu testen, kann die Version auch aus meinem contrib downloaden.

Ich würde morgen testen - hat diese Version andere Abhängigkeiten (müssen ggf. weitere Teile von fhem aktualisiert werden)? Nachdem nach dem letzten globalen Update aufgrund nicht abwärtskompatibler Änderungen einige Funktionalitäten bei mir nicht mehr funktioniert haben, versuche ich eigentlich, an einer laufenden fhem-Installation keine Updates mehr vorzunehmen...

Sollte ich darüber hinaus zu Debugging-Zwecken z.B. das verbose-Level hochsetzen?

DS_Starter

ZitatIch würde morgen testen - hat diese Version andere Abhängigkeiten (müssen ggf. weitere Teile von fhem aktualisiert werden)?
Nein, gibt keine Anhängigkeiten. Du kannst die Version direkt nutzen. Die Änderungen sind minimal.
verbose musst du nicht erhöhen. Sobald ein nicht valides Datum angefordert wird, gibt es eine Meldung im Log mit verbose 1. Sonst gibt es keine Meldungen.

LG
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

schachti

Das Problem scheint auch heute aufzutreten, führt aber nicht mehr zu einem Absturz von fhem:


2019.12.31 08:26:33 1: DbLog logdb - wrong date/time format (to: 2019-11-31 23:59:59) requested by SVG: Day '31' out of range 1..30
2019.12.31 08:26:37 1: DbLog logdb - wrong date/time format (to: 2019-09-31 23:59:59) requested by SVG: Day '31' out of range 1..30
2019.12.31 08:26:41 1: DbLog logdb - wrong date/time format (to: 2019-06-31 23:59:59) requested by SVG: Day '31' out of range 1..30


DS_Starter

Zitatführt aber nicht mehr zu einem Absturz von fhem
Ja, das war das Ziel der Änderung.

Bei meinen SVG-Definitionen habe ich eben auch ausprobiert die Periode zu ändern -> war problemlos möglich ohne diese Meldung.

Du müsstest vermutlich Rudi eine genaue Definition deiner betroffenen SVG liefern. Seitens DbLog kann ich nun nichts weiter beitragen, weil SVG diese Funktion aufruft um Daten aus der DB zu ziehen. DbLog ist hier ein einfacher Datenlieferant und führt nur die Anweisung/Abfrage aus.
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

schachti

Ich konnte es auf ein Minimalbeispiel mit einem Plot eindampfen.


defmod SVG_StromzaehlerTagesverbrauch SVG logdb:SVG_StromzaehlerTagesverbrauch:HISTORY
attr SVG_StromzaehlerTagesverbrauch fixedrange month
attr SVG_StromzaehlerTagesverbrauch group 02_Plots_Strom
attr SVG_StromzaehlerTagesverbrauch plotsize 1000,250
attr SVG_StromzaehlerTagesverbrauch room Strom
attr SVG_StromzaehlerTagesverbrauch sortby 2
attr SVG_StromzaehlerTagesverbrauch title 'Stromverbrauch letzte 30 Tage'



# Created by FHEM/98_SVG.pm, 2017-07-27 07:37:14
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics
set y2tics
set grid ytics
set ylabel "Stromverbrauch [kWh]"
set y2label "Stromverbrauch [kWh]"

#logdb Stromzaehler:statTotal_consumptionDayLast::

plot "<IN>" using 1:2 axes x1y1 notitle ls l0fill lw 1 with bars

DS_Starter

Ich habe deine Definition bei mir grob nachgebaut:


defmod SVG_LogDB_14 SVG LogDB:SVG_LogDB_14:HISTORY
attr SVG_LogDB_14 fixedrange month
attr SVG_LogDB_14 group 02_Plots_Strom
attr SVG_LogDB_14 plotsize 1000,250
attr SVG_LogDB_14 room SVG_MySQL
attr SVG_LogDB_14 title 'Stromverbrauch letzte 30 Tage'



# Created by FHEM/98_SVG.pm, 2017-06-15 22:21:44
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set grid
set ylabel "Humidity"
set y2label "Temperature"

#LogDB MyWetter:humidity
#LogDB MyWetter:temperature

plot "<IN>" using 1:2 axes x1y2 title 'Line 1' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Temp' ls l1 lw 1 with lines


Das Switchen der Periode geht ohne Probleme bei mir. Habe es durch das ganze Jahr geschoben.
Weil du geschrieben hattest, du updatest nicht mehr so "global" ... vielleicht ist die SVG-Version alt ?

Meine (aktuelle) ist: 98_SVG.pm            20818 2019-12-23 20:12:15Z rudolfkoenig
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

schachti

Meine scheint relativ aktuell zu sein, wenn man dem Dateiheader glaubt:


# $Id: 98_SVG.pm 18777 2019-03-03 13:16:05Z rudolfkoenig $


Das letzte globale Update habe ich im Juni gemacht (https://forum.fhem.de/index.php/topic,101120.msg945716.html).