X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=loop.pl;h=4046ca9b95b42dd95f00a8313a4fc588b433563b;hb=104d1371435741ced5e3fe8f78f352865505133c;hp=71464fd208d81390b2fa588a348855c484adaf83;hpb=729468e0480bc5a382f61b29e0c4ae27866536d4;p=dweather.git diff --git a/loop.pl b/loop.pl index 71464fd..4046ca9 100755 --- a/loop.pl +++ b/loop.pl @@ -13,6 +13,8 @@ use JSON; use Debug; use SMGLog; use Math::Round qw(nearest); +use File::Copy; +use Data::Random qw(rand_chars); use constant pi => 3.14159265358979; @@ -153,6 +155,9 @@ dbg "after app start"; write_ld(); close $dataf if $dataf; +# move all the files along one +cycle_loop_data_files(); + dbg '***'; dbg "*** ending $0"; dbg '***'; @@ -163,10 +168,6 @@ exit 0; sub loop { - - open $dataf, "+>>", $datafn or die "cannot open $datafn $!"; - $dataf->autoflush(1); - read_ld(); dbg "last_min: " . scalar gmtime($ld->{last_min}); @@ -375,6 +376,8 @@ sub process if ($dayno > $ld->{last_day}) { $ld->{Temp_Out_Max} = $ld->{Temp_Out_Min} = $temp; $ld->{last_day} = $dayno; + write_ld(); + cycle_loop_data_files(); } $ld->{Temp_Out_Max} = $temp if $temp > $ld->{Temp_Out_Max}; $ld->{Temp_Out_Min} = $temp if $temp < $ld->{Temp_Out_Min}; @@ -618,7 +621,10 @@ sub calc_rain sub read_ld { - return unless $dataf; + unless ($dataf) { + open $dataf, "+>>", $datafn or die "cannot open $datafn $!"; + $dataf->autoflush(1); + } seek $dataf, 0, 0; my $s = <$dataf>; @@ -645,8 +651,11 @@ sub read_ld sub write_ld { - return unless $dataf; - + unless ($dataf) { + open $dataf, "+>>", $datafn or die "cannot open $datafn $!"; + $dataf->autoflush(1); + } + seek $dataf, 0, 0; truncate $dataf, 0; $ld->{ts} = time; @@ -655,6 +664,16 @@ sub write_ld print $dataf "$s\n"; } +sub cycle_loop_data_files +{ + close $dataf if $dataf; + + rename "$datafn.oooo", "$datafn.ooooo"; + rename "$datafn.ooo", "$datafn.oooo"; + rename "$datafn.oo", "$datafn.ooo"; + rename "$datafn.o", "$datafn.oo"; + copy $datafn, "$datafn.o"; +} __DATA__ @@ -707,29 +726,40 @@ __DATA__

+ -
Time: +Sunrise: +Sunset: +Console Volts: +TX Battery OK: +
Pressure: +Trend: +
Temperature in: Humidity: +
Temperature out: Min: Max: Humidity: Dew Point: +
Wind Direction: -Minute: +Minute Avg: Speed: -Minute: +Minute Avg: +
Rain Hour: +Rain 30mins: Day: 24hrs: Month: Year:
- +