From d76e732b0c5721a4b5997f2dc0183b76ebd6f714 Mon Sep 17 00:00:00 2001 From: borisneubert Date: Fri, 9 Jan 2009 21:08:31 +0000 Subject: [PATCH] daily/monthly cumulated values for EMWZ/EMGZ/EMWM with 15_CUL_EM by Klaus git-svn-id: https://svn.fhem.de/fhem/trunk@316 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 2 ++ fhem/FHEM/15_CUL_EM.pm | 48 ++++++++++++++++++++++++++++++++++++++++++ fhem/HISTORY | 5 +++++ 3 files changed, 55 insertions(+) diff --git a/fhem/CHANGED b/fhem/CHANGED index f59543230..58b6ef934 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -477,3 +477,5 @@ - feature: CUL further sets/gets added - feature: Removed msghist for multiple FHZ handling, IODev attribute added - bugfix: cut off string "(counter)" from fallback value in 13_KS300.pm + - feature: daily/monthly cumulated values for EMWZ/EMGZ/EMWM with 15_CUL_EM + by Klaus \ No newline at end of file diff --git a/fhem/FHEM/15_CUL_EM.pm b/fhem/FHEM/15_CUL_EM.pm index c95caa0d0..37fa90c62 100755 --- a/fhem/FHEM/15_CUL_EM.pm +++ b/fhem/FHEM/15_CUL_EM.pm @@ -165,6 +165,54 @@ CUL_EM_Parse($$) $readings{current} = $current; $readings{peak} = $peak; + + ################################### + # Start CUMULATE day and month + Log GetLogLevel($n,4), "CUL_EM $n: $val"; + my $tsecs_prev; + #----- get previous tsecs + if(defined($hash->{READINGS}{tsecs})) { + $tsecs_prev= $hash->{READINGS}{tsecs}{VAL}; + } else { + $tsecs_prev= 0; # 1970-01-01 + } + #----- save actual tsecs + my $tsecs= time(); # number of non-leap seconds since January 1, 1970, UTC + $readings{tsecs} = $tsecs; + #----- check whether day or month was changed + if(!defined($hash->{READINGS}{cum_day})) { + #----- init cum_day if it is not set + $val = sprintf("CUM_DAY: %0.3f CUM: %0.3f", 0,$total); + $readings{cum_day} = $val; + } else { + if( (localtime($tsecs_prev))[3] != (localtime($tsecs))[3] ) { + #----- day has changed (#3) + my @cmv = split(" ", $hash->{READINGS}{cum_day}{VAL}); + $val = sprintf("CUM_DAY: %0.3f CUM: %0.3f", $total-$cmv[3], $total); + $readings{cum_day} = $val; + $hash->{CHANGED}[$c++] = "$val"; + Log GetLogLevel($n,3), "CUL_EM $n: $val"; + # + if( (localtime($tsecs_prev))[4] != (localtime($tsecs))[4] ) { + #----- month has changed (#4) + if(!defined($hash->{READINGS}{cum_month})) { + # init cum_month if not set + $val = sprintf("CUM_MONTH: %0.3f CUM: %0.3f", 0,$total); + $readings{cum_month} = $val; + } else { + @cmv = split(" ", $hash->{READINGS}{cum_month}{VAL}); + $val = sprintf("CUM_MONTH: %0.3f CUM: %0.3f", $total-$cmv[3],$total); + $readings{cum_month} = $val; + $hash->{CHANGED}[$c++] = "$val"; + Log GetLogLevel($n,3), "CUL_EM $n: $val"; + } + } + } + } + # End CUMULATE day and month + ################################### + + foreach my $k (keys %readings) { $hash->{READINGS}{$k}{TIME}= $tn; $hash->{READINGS}{$k}{VAL} = $readings{$k}; diff --git a/fhem/HISTORY b/fhem/HISTORY index 6a61519ce..176f32fc0 100644 --- a/fhem/HISTORY +++ b/fhem/HISTORY @@ -367,7 +367,12 @@ is sent back. The CUR must have reception enabled. Right now status/set time/set FHT desired temp are implemented. +- Fri Jan 6 (Boris) + - daily/monthly cumulated values for EMWZ/EMGZ/EMWM with 15_CUL_EM by Klaus + - Fri Jan 9 - Added a unified dispatch for CUL/FHZ and CM11, since all of them used the same code. - Addedd IODev attribute to FS20/FHT/HMS/KS300/CUL_WS/CUL/EMWZ/EMGZ/EMEM + +