our $ld = {};
our @last10minsr = ();
our @last5daysh = ();
+our $windmins = 5; # no of minutes of wind data for the windrose
+our $histdays = 5; # no of days of (half)hour data to search for main graph
our $loop_count; # how many LOOPs we have done, used as start indicator
my $tnow = time;
my $dayno = int ($tnow/86400);
-@last5daysh = grab_history(SMGLog->new("day"), "h", $tnow-(86400*5), $_) for ($dayno-4, $dayno-3, $dayno-2, $dayno-1, $dayno);
-@last10minsr = map {my ($t, $js) = split(/\s/, $_, 2); $js} grab_history(SMGLog->new("debug"), "r", $tnow-(60*3), $dayno);
+for (my $i = 0-$histdays; $i < 0; ++$i ) {
+ push @last5daysh, grab_history(SMGLog->new("day"), "h", $tnow-(86400*$histdays), $dayno+$i+1);
+}
+@last10minsr = map {my ($t, $js) = split(/\s/, $_, 2); $js} grab_history(SMGLog->new("debug"), "r", $tnow-(60*$windmins), $dayno);
+dbg sprintf("last5days = %d last10mins = %d", scalar @last5daysh, scalar @last10minsr);
our $dlog = SMGLog->new("day");
dbg "before next tick";
<script>
var ws;
var daychart;
- var daychart_days = 5;
+ var daychart_days = <%= $main::histdays %>;
var windrose;
- var windrose_mins = 10;
+ var windrose_mins = <%= $main::windmins %>;
var windspeed;
var winddir;
js.r.Dir = lastdir;
}
lastt = js.t;
- fill_windrose(js, windrose_mins * (60 / 2.5));
+ fill_windrose(js, windrose_mins * 24);
// }
fill_windspeed(js);
fill_winddir(js);
floating: true,
backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
},
+ exporting: {
+ buttons: {
+ contextButton: {
+ enabled: false
+ }
+ }
+ },
series: [{
name: 'Rainfall',
type: 'column',
<% $s = "";
for (@main::last5daysh) {
my $r = $main::json->decode($_);
- $s .= "[" . $r->{t}*1000 . "," . $r->{h}->{Rain_1h} . "]," if $r;
+ $s .= "[" . $r->{t}*1000 . "," . $r->{h}->{Rain_1h} . "]," if $r && exists $r->{t} && exists $r->{h}->{Rain_1h};
}
chop $s if length $s;
%><%= $s %>
<% $s = "";
for (@main::last5daysh) {
my $r = $main::json->decode($_);
- $s .= "[" . $r->{t}*1000 . "," . $r->{h}->{Pressure} . "]," if $r;
+ $s .= "[" . $r->{t}*1000 . "," . $r->{h}->{Pressure} . "]," if $r && exists $r->{t} && exists $r->{h}->{Pressure};
}
chop $s if length $s;
%><%= $s %>
<% $s = "";
for (@main::last5daysh) {
my $r = $main::json->decode($_);
- $s .= "[" . $r->{t}*1000 . "," . $r->{h}->{Temp_Out} . "]," if $r;
+ $s .= "[" . $r->{t}*1000 . "," . $r->{h}->{Temp_Out} . "]," if $r && exists $r->{t} && exists $r->{h}->{Temp_Out};
}
chop $s if length $s;
%><%= $s %>
groupPadding: 0
}
},
+ exporting: {
+ buttons: {
+ contextButton: {
+ enabled: false
+ }
+ }
+ },
series: [ {
- type: 'scatter',
+ type: 'column',
name: 'Wind mph',
data: [
<% my ($d, $w);
if ($r) {
$r->{r}->{Dir} ||= $d;
$r->{r}->{Wind} ||= $w;
- $s .= "[" . $r->{r}->{Dir} . "," . main::nearest(0.1, $r->{r}->{Wind}*2.23694) . "]," if $r;
+ $s .= "[" . $r->{r}->{Dir} . "," . main::nearest(0.1, $r->{r}->{Wind}*2.23694) . "],";
$d = $r->{r}->{Dir};
$w = $r->{r}->{Wind};
}
color: '#DF5353' // red
}]
},
+ exporting: {
+ buttons: {
+ contextButton: {
+ enabled: false
+ }
+ }
+ },
series: [{
name: 'Speed',
text: '° deg'
},
},
+ exporting: {
+ buttons: {
+ contextButton: {
+ enabled: false
+ }
+ }
+ },
series: [{
name: 'Direction',