- # Newer LOOP2 packet
- $t = unpack("C", substr $blk,18,2);
-# $h{Wind_Avg_10} = sprintf("%.1f",mph2mps($t/10))+0;
- $t = unpack("C", substr $blk,20,2);
-# $h{Wind_Avg_2} = sprintf("%.1f",mph2mps($t/10))+0;
- $t = unpack("C", substr $blk,22,2);
-# $h{Wind_Gust_10} = sprintf("%.1f",mph2mps($t/10))+0;
-
-# $h{Dir_Avg_10} = unpack("C", substr $blk,24,2)+0;
- $t = unpack("C", substr $blk,30,2);
- $h{Dew_Point} = sprintf("%0.1f", f2c($t))+0;
+ $tmp = unpack("C", substr $blk,43,1)+0;
+ $h{UV} = $tmp unless $tmp >= 255;
+ $tmp = unpack("s", substr $blk,44,2)+0; # watt/m**2
+ $h{Solar} = $tmp unless $tmp >= 32767;
+
+ # $h{Rain_Rate} = nearest(0.1,unpack("s", substr $blk,41,2) * $rain_mult);
+ $rain = $h{Rain_Day} = nearest(0.1, unpack("s", substr $blk,50,2) * $rain_mult);
+ my $delta_rain = $h{Rain} = nearest(0.1, ($rain >= $ld->{last_rain} ? $rain - $ld->{last_rain} : $rain)) if $loop_count;
+ $ld->{last_rain} = $rain;
+
+ # what sort of packet is it?
+ my $sort = unpack("C", substr $blk,4,1);
+ if ($sort) {
+
+ # Newer LOOP2 packet
+ $tmp = unpack("C", substr $blk,18,2);
+ # $h{Wind_Avg_10} = nearest(0.1,mph2mps($tmp/10));
+ $tmp = unpack("C", substr $blk,20,2);
+ # $h{Wind_Avg_2} = nearest(0.1,mph2mps($tmp/10));
+ $tmp = unpack("C", substr $blk,22,2);
+ # $h{Wind_Gust_10} = nearest(0.1,mph2mps($tmp/10));
+
+ # $h{Dir_Avg_10} = unpack("C", substr $blk,24,2)+0;
+ $tmp = unpack("C", substr $blk,30,2);
+ $h{Dew_Point} = nearest(0.1, f2c($tmp));
+
+ } else {
+
+ # Older LOOP packet
+ $tmp = unpack("C", substr $blk,15,1);
+ # $h{Wind_Avg_10} = nearest(0.1,mph2mps($tmp));
+ $h{Dew_Point} = nearest(0.1, dew_point($h{Temp_Out}, $h{Humidity_Out}));
+ $h{Rain_Month} = nearest(0.1, unpack("s", substr $blk,52,2) * $rain_mult);
+ $h{Rain_Year} = nearest(0.1, unpack("s", substr $blk,54,2) * $rain_mult);
+ }