4 # sudo apt install libdevice-serialport-perl libdata-dump-perl
5 use Device::SerialPort;
7 use Data::Dump qw(dump);
9 my $port = shift @ARGV || '/dev/serial/by-path/platform-3f980000.usb-usb-0:1.3:1.0-port0';
10 my $influx_url = shift @ARGV || 'http://10.13.37.92:8086/write?consistency=any&db=rot13';
12 my $debug = $ENV{DEBUG} || 0;
14 my $s = new Device::SerialPort( $port ) || die $!;
19 $s->handshake('none');
20 $s->read_char_time(5);
21 $s->read_const_time(100);
38 my ($len, $string) = $s->read(24);
39 my $t = int( Time::HiRes::time() * 1_000_000_000 );
40 die $! if ! defined($len);
42 my @v = unpack('n*', $string);
43 warn "# $len ",dump($string), dump( @v ), $/ if $debug;
44 my $header = shift @v;
45 my $checksum = pop @v; # remove checksum
48 foreach my $b ( unpack('C*', substr($string,0,-2) ) ) {
53 if ( $header == 0x424d && $sum == $checksum ) {
56 my $influx = "pms3003,dc=trnjanska ";
57 foreach my $i ( 0 .. $#v ) {
58 $influx .= "$names[$i]=$v[$i],";
63 system "curl --max-time 2 --silent -XPOST '$influx_url' --data-binary '$influx'"