4 # sudo apt install libdevice-serialport-perl libdata-dump-perl
5 use Device::SerialPort;
6 use Data::Dump qw(dump);
8 my $port = shift @ARGV || '/dev/ttyUSB0';
9 my $influx_url = shift @ARGV || 'http://10.13.37.229:8186/write?db=telegraf';
10 $influx_url = 'http://10.13.37.92:8086/write?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 die $! if ! defined($len);
41 my @v = unpack('n*', $string);
42 warn "# $len ",dump($string), dump( @v ), $/ if $debug;
43 my $header = shift @v;
44 my $checksum = pop @v; # remove checksum
47 foreach my $b ( unpack('C*', substr($string,0,-2) ) ) {
52 if ( $header == 0x424d && $sum == $checksum ) {
55 my $influx = "pms3003,dc=trnjanska ";
56 foreach my $i ( 0 .. $#v ) {
57 $influx .= "$names[$i]=$v[$i],";
61 system "curl --silent -XPOST '$influx_url' --data-binary '$influx'"