#!/usr/bin/perl
use warnings;
use strict;

my $curl;
my $influx = $ENV{INFLUX}; # || 'http://127.0.0.1:8086/write?db=boiler';

my $temp = '';

while(<>) {
	chomp;
	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 @l = split(/\s/,$2);
		my @d = (
			$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[18] ),
		);
		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";
	}
}
