DbLog und SVG - PERL WARNING Argument isn't numeric

Begonnen von fhem-me, 09 Mai 2015, 18:46:42

Vorheriges Thema - Nächstes Thema

fhem-me

Nach Umstellung auf DbLog habe ich in Verbindung mit SVG Plots mit PERL Warnungen zu kämpfen.
PERL WARNING: Argument "8123 kWh" isn't numeric in sprintf at ./FHEM/98_SVG.pm line 1993.
Die Daten sehen im FileLog in etwa so aus:

2014-08-01_04:44:23 Sensor luminance: 0 Lux
2014-08-01_04:51:10 Sensor temperature: 13.1 C
2014-02-27_07:00:00 Stecker power: 38.8 W

Zuerst habe ich eingesehen das jedes Modul (hier ZWave) die Methode DbLog_splitFn implementieren muss um die Einheit zu extrahieren.
Soweit so gut.
Jedoch kann ich bei cloneDummy und FHEM2FHEM diese Implementierungen schlecht mit Klonen.

Mein Wunsch wäre die Meldungen mit Einheit als Standard-Muster zuzulassen und in DbLog allgemein zu implementieren damit nicht alle anderen Module sofort ein DbLog_splitFn implementieren müssen.

anbei meine "generische" splitFn

#####################################
# DbLog helper function to split event into (reading, value, unit)
# ZWave readings have to report their unit in event - no default units are applied
sub
ZWave_DbLog_splitFn($)
{
  my @result;
  my $reading;
  my $value;
  my $unit;

  my ($event) = @_;
  if ($event =~ /^(.*): (.*\d) (\D+)$/) {
    # "power: 388.8 W" -> ("power", "388.8", "W")
    ($reading, $value, $unit) = ($1, $2, $3);
  } elsif ($event =~ /^(.*): (.*)$/) {
    # "wakeup: notification" -> ("wakeup", "notification", "")
    ($reading, $value, $unit) = ($1, $2, "");
  } else {
    # "open" -> ("state", "open", "")
    ($reading, $value, $unit) = ("state", $event, "");
  }

  @result = ($reading, $value, $unit);
  return @result;
}