use warnings;
use strict;
+my $curl;
+my $influx = $ENV{INFLUX}; # || 'http://127.0.0.1:8086/write?db=boiler';
+
+my $temp = '';
+
while(<>) {
chomp;
- if ( m/^([0-9\.]+) .+aa fc 39 aa (.+) \|\s+(\d+\.\d+)/ ) {
+ if ( s/\s+\|\s+(\d+\.\d\d).+$// ) {
+ $temp = $1;
+ }
+#$temp = ( $temp - 20 ) * 500 + 500;
+ if ( m/^([0-9\.]+) .+aa fc 39 aa (.+)/ ) {
+ my $t = $1;
#warn "# $1 $2\n";
- my $temp = $3;
my @l = split(/\s+/,$2);
my @d = (
- $1,
+ $t,
hex( $l[0] . $l[1] ),
hex( $l[3] . $l[4] ),
hex( $l[6] ),
hex( $l[12] ),
- hex( $l[14] ) * 300,
- hex( $l[15] ) * 400,
+ hex( $l[14] ), # * 300,
+ hex( $l[15] ), # * 400,
hex( $l[18] ),
$temp
);
- print join(',', @d),$/;
+ if ( $influx ) {
+ open($curl, '|-', qq( tee /dev/shm/parse.curl | curl -XPOST $influx --data-binary \@- )) unless $curl;
+ print $curl "thermostat ",join(',', map { chr( ord('a') + $_ ) . '=' . $d[$_] . 'i' } 1 .. $#d ), ($temp ? ",temp=$temp" : ""), " ", int($t * 1_000_000_000), "\n";
+ } else {
+ print join(',', @d,$temp),$/;
+ }
} else {
warn "# $_\n";
}