Autor Thema: FHEMWEB 1st.April Bug?  (Gelesen 2930 mal)

Offline erwin

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 790
FHEMWEB 1st.April Bug?
« am: 01 April 2013, 08:49:47 »
Hi Rudolf!

hatte gestern ein komisches Phänomen bei etlichen meiner Weblinks:

Definition:
define myweblink weblink dbplot myDbLog:TempHum

jedenfalls wurde gestern (am 31.3.) ein leere Resultat geplottet, obwohl Werte in der DB-history tabelle vohanden waren.
noch kurioser: die gleich Definition mit filelink funktionierte!

Nachdem heute (1.April...) die tagesAnsicht wieder funktionierte, hab ich mal auf <prev> gedrückt, und siehe da: keine werte für den 31.3 - noch mal <prev> : Werte für den 30.3. sind ok...

Ich vermute, das Problem liegt in der sub FW_calcWeblink und zwar hier:

  } elsif($zoom eq "day") {
    my $t = $now + $off*86400;
    my @l = localtime($t);
    $FW_devs{$d}{from} = sprintf("%04d-%02d-%02d",$l[5]+1900,$l[4]+1,$l[3]);
    $FW_devs{$d}{to}   = sprintf("%04d-%02d-%02d",$l[5]+1900,$l[4]+1,[color=red]$l[3]+1[/color]);

ich hab dann geändert auf:

  } elsif($zoom eq "day") {
    my $t = $now + $off*86400;
    my @l = localtime($t);
    $FW_devs{$d}{from} = sprintf("%04d-%02d-%02d",$l[5]+1900,$l[4]+1,$l[3]);
    @l = localtime($t+86400);
    $FW_devs{$d}{to}   = sprintf("%04d-%02d-%02d",$l[5]+1900,$l[4]+1,$l[3]);

... und dann klappts auch mit dem 32.März...

l.g. erwin
FHEM aktuell auf RaspberryPI mit Busware ROT / Weinzirl IP731
Maintainer 00_KNXIO.pm 10_KNX.pm
CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT
1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,...
MQTT2, KNX, SONOFF, mySENSORS,...

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25812
Aw: FHEMWEB 1st.April Bug?
« Antwort #1 am: 01 April 2013, 10:26:17 »
Ich verwende kein DbLog, deswegen ist nur eine Vermutung: die Datums-Spalte in der DB wurde als Date angelegt, und manche Datenbanken sind pikiert, wenn sie diese Spalte mit einem nicht realen Datumswert vergleichen muessen.

Ich sehe mehrere Loesungen (in dieser Reihenfolge):
- die Spalte in der DB als CHAR anzulegen
- bei der Suche im DbLog TO_CHAR() oder vergleichbares verwenden
- 01_FHEMWEB.pm aendern, aber dann auch die anderen Zoom-Stufen pruefen.

Welche Zoom-Stufen funktionieren mit DbLog z.Zt. korrekt?

Offline erwin

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 790
Aw: FHEMWEB 1st.April Bug?
« Antwort #2 am: 01 April 2013, 11:22:08 »
Hi Rudolf,

danke für's Feedback, deine Vermutung ist richtig, die datumsspalte wird als TIMESTAMP angelegt, so ist das in DbLog definiert
und du hast vermutlich recht, beim Filelog spielt es offensichtlich keine Rolle wenn
$FW_devs{$d}{to} = "2013-03-32"
entspricht, aber die datenbank wird pingelig...

Mein review der zoomstufen in FHEMWEB ergibt:

problem bei: hour , qday, day,
ok scheint: week, month, year

l.g. erwin
FHEM aktuell auf RaspberryPI mit Busware ROT / Weinzirl IP731
Maintainer 00_KNXIO.pm 10_KNX.pm
CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT
1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,...
MQTT2, KNX, SONOFF, mySENSORS,...

Offline erwin

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 790
Aw: FHEMWEB 1st.April Bug?
« Antwort #3 am: 02 April 2013, 13:14:39 »
Hi Rudolf,

das wär mein Änderngsvorschlag für FHEMWEB.pm,
dzt. kann ich leider kein diff machen, weil ich noch an anderen Stellen mods drin habe.

  if($zoom eq "hour") {
    my $t = $now + $off*3600;
    my @l = localtime($t);
    $FW_devs{$d}{from}
        = sprintf("%04d-%02d-%02d_%02d",$l[5]+1900,$l[4]+1,$l[3],$l[2]);
    @l = localtime($t+3600);
    $FW_devs{$d}{to}
        = sprintf("%04d-%02d-%02d_%02d",$l[5]+1900,$l[4]+1,$l[3],$l[2]);

  } elsif($zoom eq "qday") {
    my $t = $now + $off*21600;
    my @l = localtime($t);
    $l[2] = int($l[2]/6)*6;
    $FW_devs{$d}{from}
        = sprintf("%04d-%02d-%02d_%02d",$l[5]+1900,$l[4]+1,$l[3],$l[2]);
    @l = localtime($t+21600);
    $l[2] = int($l[2]/6)*6;
    $FW_devs{$d}{to}
        = sprintf("%04d-%02d-%02d_%02d",$l[5]+1900,$l[4]+1,$l[3],$l[2]);

  } elsif($zoom eq "day") {
    my $t = $now + $off*86400;
    my @l = localtime($t);
    $FW_devs{$d}{from} = sprintf("%04d-%02d-%02d",$l[5]+1900,$l[4]+1,$l[3]);
    @l = localtime($t+86400);
    $FW_devs{$d}{to}   = sprintf("%04d-%02d-%02d",$l[5]+1900,$l[4]+1,$l[3]);



l.g. und danke!
Erwin
FHEM aktuell auf RaspberryPI mit Busware ROT / Weinzirl IP731
Maintainer 00_KNXIO.pm 10_KNX.pm
CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT
1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,...
MQTT2, KNX, SONOFF, mySENSORS,...

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25812
Aw: FHEMWEB 1st.April Bug?
« Antwort #4 am: 02 April 2013, 13:41:26 »
Hallo erwin, ich hab dein "Patch" eingespielt, obwohl es mir lieber gewesen waere, wenn Du nach meinem beschriebenen Praeferenz den Maintainer der DbLog.pm ueberzeugt haettest.