From 198bb15fd95864d39e31c6f3d09f6b394cf1d9fa Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sat, 4 Jan 2020 07:48:06 +0100 Subject: [PATCH] read serial port values and emit them to mqtt --- dsm501.pl | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 dsm501.pl diff --git a/dsm501.pl b/dsm501.pl new file mode 100755 index 0000000..41578a5 --- /dev/null +++ b/dsm501.pl @@ -0,0 +1,44 @@ +#!/usr/bin/perl +use warnings; +use strict; +# sudo apt install libdevice-serialport-perl libdata-dump-perl +use Device::SerialPort; +use Time::HiRes; +use Data::Dump qw(dump); + +my $port = shift @ARGV || '/dev/ttyUSB2'; +my $influx_url = shift @ARGV || 'http://10.13.37.229:8186/write?db=telegraf'; +$influx_url = 'http://10.13.37.92:8086/write?db=rot13'; + +my $s = new Device::SerialPort( $port ) || die $!; +$s->baudrate(115200); +$s->databits(8); +$s->parity('none'); +$s->stopbits(1); +$s->handshake('none'); +$s->read_char_time(5); +$s->read_const_time(10); + + +while (1) { + + my ($len, $string) = $s->read(128); + my $t = int( Time::HiRes::time() * 1_000_000_000 ); + die $! if ! defined($len); + if ( $len > 0 ) { + warn "# len=$len ",dump($string); + if ( $string !~ m/^#/ ) { + $string =~ s/[\r\n]+$//; + $string =~ s/\s/,/g; + my $influx = "dsm501,dc=trnjanska $string $t"; + print "$influx\n"; + system "curl --silent -XPOST '$influx_url' --data-binary '$influx'" + } else { + warn "SKIP: $string\n"; + } + } + +}; + + +$s->close; -- 2.20.1