X-Git-Url: http://git.rot13.org/?p=air-quality;a=blobdiff_plain;f=mh-z19b.pl;h=8edaa3fa7993834c723b8d7943c62b9697b6fa63;hp=b71b3656959966f9f6b9ddec7fdaadd2297e16ec;hb=3b75f7be1706aeaa6ed29d3b42a2ae898254fa3f;hpb=a25b1d3919cbaf5ac569df06a5c35e32c0445af3 diff --git a/mh-z19b.pl b/mh-z19b.pl index b71b365..8edaa3f 100755 --- a/mh-z19b.pl +++ b/mh-z19b.pl @@ -6,9 +6,8 @@ use Device::SerialPort; use Time::HiRes; use Data::Dump qw(dump); -my $port = shift @ARGV || '/dev/ttyUSB0'; -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 $port = shift @ARGV || '/dev/serial/by-path/pci-0000:00:1a.7-usb-0:5.3.4:1.2'; +my $influx_url = shift @ARGV || 'http://10.13.37.92:8086/write?consistency=any&db=rot13'; my $s = new Device::SerialPort( $port ) || die $!; $s->baudrate(9600); @@ -16,7 +15,7 @@ $s->databits(8); $s->parity('none'); $s->stopbits(1); $s->handshake('none'); -$s->read_char_time(0); +$s->read_char_time(1); $s->read_const_time(10); $s->debug(1); @@ -29,7 +28,9 @@ while (1) { die $! if ! defined($len); if ( $len > 0 ) { my @v = unpack('C*', $string); - #warn "# $len ",dump($string), dump( @v ), $/; + if ( $#v < 8 ) { + die "# $len ",dump($string), dump( @v ), $/; + } my $sum = 0; foreach my $i ( 1 .. $#v - 1 ) { @@ -38,7 +39,7 @@ while (1) { } $sum = 0xff - $sum + 1; - my $checksum = $v[8] || die "no checksum"; + my $checksum = $v[8]; my $co2 = $v[2] * 255 + $v[3]; if ( $v[0] == 0xff && $sum == $checksum ) { my $influx = "mh-z19b,dc=trnjanska co2=$co2 $t";