e256a455654d3a20834cbec73cbcdfe64a69675c
[mqtt-homehub] / mqtt-trend.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4
5 my $trend = {
6         hist_spec => {
7                 'fade/LDR' => '300x1',
8                 '__default' => '100x1',
9         }
10 };
11
12 sub DESTROY {
13         warn "DESTROY";
14         system "killall mosquitto_sub trend";
15 }
16 system "killall mosquitto_sub trend";
17 system "i3-msg layout splitv";
18 #system "i3-msg border none";
19
20 my $border = 2;
21
22 open(my $in, '-|', 'mosquitto_sub -h rpi2 -t stat/# -t fade/# -v');
23 while(<$in>) {
24         s/\s+$//sg;
25
26         my ($t,$v) = split(/\s/,$_,2);
27         warn "$t\t$v\n";
28
29         if ( ! exists $trend->{$t} && $v =~ m/^\d+/ ) {
30                 my $hist = $trend->{hist_spec}->{$t} || $trend->{hist_spec}->{__default};
31                 my $label = $t;
32                 $label =~ s/^.+\///;
33                 open($trend->{$t}, '|-', "trend -L $label -v - $hist");
34                 $border = 2;
35         }
36
37         if ( $trend->{$t} ) {
38                 select $trend->{$t};
39                 $| = 1;
40                 print "$v\n";
41         } else {
42                 warn "CLOSED $!\n";
43         }
44
45         system "i3-msg border 1pixel" if $border-- > 0;
46 }
47