projects
/
air-quality
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
turn debug on with: touch /dev/shm/air-debug
[air-quality]
/
mh-z19b.pl
diff --git
a/mh-z19b.pl
b/mh-z19b.pl
index
b71b365
..
927951b
100755
(executable)
--- a/
mh-z19b.pl
+++ b/
mh-z19b.pl
@@
-6,9
+6,8
@@
use Device::SerialPort;
use Time::HiRes;
use Data::Dump qw(dump);
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/platform-3f980000.usb-usb-0:1.5:1.2';
+my $influx_url = shift @ARGV || 'http://10.60.0.92:8086/write?consistency=any&db=rot13';
my $s = new Device::SerialPort( $port ) || die $!;
$s->baudrate(9600);
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->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);
$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);
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 ) {
my $sum = 0;
foreach my $i ( 1 .. $#v - 1 ) {
@@
-38,12
+39,15
@@
while (1) {
}
$sum = 0xff - $sum + 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";
my $co2 = $v[2] * 255 + $v[3];
if ( $v[0] == 0xff && $sum == $checksum ) {
my $influx = "mh-z19b,dc=trnjanska co2=$co2 $t";
- print "$influx\n";
- system "curl --silent -XPOST '$influx_url' --data-binary '$influx'"
+ print "$influx\n" if -e '/dev/shm/air-debug';
+ system "curl --max-time 2 --silent -XPOST '$influx_url' --data-binary '$influx'";
+ system "mosquitto_pub -h rpi2 -t 'air/mh-z19b/co2' -m $co2";
+ } else {
+ die "checksum error";
}
sleep 1;
$s->write("\xFF\x01\x86\x00\x00\x00\x00\x00\x79");
}
sleep 1;
$s->write("\xFF\x01\x86\x00\x00\x00\x00\x00\x79");