X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=serial.pl;h=06197a0e1ee4945f73d302d2e8ce394eb7b089a8;hb=3cf4732a1c06702010af0ed29ebf5dca463ca2f2;hp=3c091ea62bebbf385c1f839ff39612e4a4dcd38e;hpb=7e9e35556b30266de3c40b941490cb150cb4ace6;p=vaillant-thermostat diff --git a/serial.pl b/serial.pl index 3c091ea..06197a0 100755 --- a/serial.pl +++ b/serial.pl @@ -11,6 +11,8 @@ my $path = shift @ARGV || '/dev/serial/by-path/platform-20980000.usb-usb-0:1.3.1 $|=1; +connect_again: + my $s = new Device::SerialPort( $path ) || die $!; $s->baudrate(2400); $s->databits(8); # 7 @@ -28,29 +30,24 @@ my $sym; sub _mqtt_pub { my ( $t, $m ) = @_; - my $cmd = "mosquitto_pub -h rpi2 -t 'stat/rpi/$t' -m '$m'"; + my $cmd = "mosquitto_pub -h rpi2 -t '$t' -m '$m'"; #warn "# _mqtt_pub [$t] = [$m]\n"; - warn "## $cmd"; + #warn "## $cmd"; system $cmd; } while (1) { my ($len, $string) = $s->read($read_len); + goto connect_again if ! defined $len; my $ts = time(); if ( $len > 0 ) { my $hex = unpack('H*',$string); $hex =~ s/(..)/$1 /g; -=for later - my $ascii; - foreach ( split(/ /, $hex) ) { - if ( ! exists $sym->{$_} ) { - $chr++; - $ascii -=cut - - my $temp = `curl localhost:3000/temp.txt`; + + my $temp = `curl -q localhost:3000/temp.txt`; $temp =~ s/\s+/ /gs; + $temp =~ s/^\s+//; #printf "%s %2d %s\n", time(), $len, $hex; printf "%8.4f %6.2f %2d %s | %s\n", $ts, $ts - $t, $len, $hex, $temp; @@ -71,6 +68,12 @@ while (1) { _mqtt_pub "stat/boiler/" . chr(ord('a') + $_) => $d[$_] foreach 0 .. $#d; } + my @v = split(/\s+/, $temp, 3); + my @n = qw( DS18B20/temperature DHT22/temperature DHT22/humidity ); + foreach (@v) { + _mqtt_pub "stat/boiler/" . shift(@n) => $_; + } + } }