X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=loop.pl;h=e627dde79127b8a86f3f66a2cec460a97e6e46dc;hb=3d808f88911e7614bb92f1a6d477ffb54651d5c3;hp=d5f69a5a4cb5230a6346781e1c040f92f450d61d;hpb=47f7722750cbac46b82ccbad76a69ed27e1b48d2;p=dweather.git diff --git a/loop.pl b/loop.pl index d5f69a5..e627dde 100755 --- a/loop.pl +++ b/loop.pl @@ -425,7 +425,8 @@ sub process my $cycledata; if ($dayno > $ld->{last_day}) { - $ld->{Temp_Out_Max} = $ld->{Temp_Out_Min} = $ld->{Wind_Max} = $temp; + $ld->{Wind_Max} = $wind->{w}; + $ld->{Temp_Out_Max} = $ld->{Temp_Out_Min} = $temp; $ld->{Temp_Out_Max_T} = $ld->{Temp_Out_Min_T} = $ld->{Wind_Max_T} = clocktime($ts, 0); $ld->{last_day} = $dayno; ++$writeld; @@ -448,8 +449,6 @@ sub process ++$writeld; } - my $wkph = $wind->{w} * 3.6; - $h{WindChill} = nearest(0.1, $wind->{w} >= 1.2 ? 13.12 + 0.6215 * $temp - 11.37 * $wkph ** 0.16 + 0.3965 * $temp * $wkph ** 0.16 : $temp); if ($ts >= $ld->{last_hour} + 1800) { $h{Pressure_Trend} = unpack("C", substr $blk,3,1); @@ -512,6 +511,9 @@ sub process $h{Wind_1m} = nearest(0.1, $a->{w}); $h{Dir_1m} = nearest(1, $a->{d}); ($h{Rain_1m}, $h{Rain_1h}, $h{Rain_24h}) = calc_rain($rain); + + my $wkph = $a->{w} * 3.6; + $h{WindChill} = nearest(0.1, $a->{w} >= 1.2 ? 13.12 + 0.6215 * $temp - 11.37 * $wkph ** 0.16 + 0.3965 * $temp * $wkph ** 0.16 : $temp); } $ld->{last_rain_min} = $rain; $h{Temp_Out_Max} = $ld->{Temp_Out_Max}; @@ -533,18 +535,13 @@ sub process } else { my $o = gen_hash_diff($ld->{last_h}, \%h); - if ($o) { - $o->{Dir} ||= $h{Dir}; - $o->{Wind} ||= $h{Wind}; - $o->{Dir} += 0; - $o->{Wind} += 0; - $s = genstr($ts, 'r', $o); - push @last10minsr, $s; - shift @last10minsr while @last10minsr > ($windmins * $updatepermin); - } - else { - dbg "loop rec not changed" if isdbg 'chan'; - } + $o ||= {}; + # we always send wind even if it hasn't changed in order to update the wind rose. + $o->{Dir} ||= ($h{Dir} + 0); + $o->{Wind} ||= ($h{Wind} + 0); + $s = genstr($ts, 'r', $o); + push @last10minsr, $s; + shift @last10minsr while @last10minsr > ($windmins * $updatepermin); output_str($s, 0) if $s; } $ld->{last_h} = \%h;