create views and use them to plot more than one pn on same graph
[zc] / views.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4 use autodie;
5 use Data::Dump qw(dump);
6
7 my $filter = join(' ',@ARGV);
8
9 my $offsets;
10
11 open(my $o, '<', 'gnuplot/offset.txt');
12 while(<$o>) {
13         chomp;
14         my ( $pn, $o_x, $o_y ) = split(/ /,$_);
15         $offsets->{$pn} = [ $o_x, $o_y ];
16 }
17 close($o);
18
19 my $time_limit;
20
21 open(my $o, '<', 'gnuplot/time.txt');
22 while(<$o>) {
23         chomp;
24         my ( $pn, $time ) = split(/ /,$_, 2);
25         $time_limit->{$pn} = $time;
26 }
27 close($o);
28
29 my $sql;
30 my $view2number;
31
32 open(my $n, '<', 'subvision-numbers.txt');
33 while(<$n>) {
34         chomp;
35         my ( $number, $pn, $imei, $name ) = split(/ /,$_);
36
37         if ( $filter && $name !~ m/$filter/i ) {
38                 warn "SKIP $number $pn\n";
39                 next;
40         }
41
42         my $view = 'sub_' . $number;
43         $view =~ s/\W+/_/g;
44
45         $view2number->{$view} = $number;
46
47         my $offset_x = $offsets->{$pn}->[0] // 0;
48         my $offset_y = $offsets->{$pn}->[1] // 0;
49
50         my $time = $time_limit->{$pn} // '';
51
52         if ( ! defined( $sql->{$view} ) ) {
53                 $sql->{$view} = qq{
54 create or replace view $view as
55 select time, pn, x_axis_angle + $offset_x as x_axis_angle, y_axis_angle + $offset_y as y_axis_angle, power_source_voltage, sensor_temperature, signal_strength
56 from zc
57 where pn = $pn $time
58 };
59         } else {
60                 $sql->{$view} .= qq{
61 union
62 select time, pn, x_axis_angle + $offset_x as x_axis_angle, y_axis_angle + $offset_y as y_axis_angle, power_source_voltage, sensor_temperature, signal_strength
63 from zc
64 where pn = $pn $time
65 };
66         }
67
68 }
69 close($n);
70
71 open(my $sql_fh, '>', "/tmp/$filter.sql");
72 open(my $shell_fh, '>', "/tmp/$filter.sh");
73 open(my $html_fh, '>', "/tmp/$filter.html");
74
75 print $html_fh qq{<html>
76 <head>
77         <meta charset=utf-8 />
78         <title>$filter</title>
79 </head>
80 <body>
81
82         <p>
83         <img src=logo-color.png>
84
85 };
86
87 foreach my $view ( sort keys %$sql ) {
88         print $sql_fh "drop view $view ;\n";
89         print $sql_fh $sql->{$view} . ";\n";
90         print $sql_fh "grant select on $view to grafana ;\n\n";
91
92         print $shell_fh "ln -s sub.cgi $view.cgi\n";
93
94         print $html_fh qq{
95         <h1>$view2number->{$view}</h1>
96         <img src="cgi-bin/$view.cgi" width="100%">
97 };
98 }
99
100 print $html_fh qq{
101         </p>
102
103 </body>
104 };
105