X-Git-Url: http://git.rot13.org/?p=air-quality;a=blobdiff_plain;f=iio2mqtt.pl;fp=iio2mqtt.pl;h=a9dce9f5c15cf451b474ccb4e28a90e13909a889;hp=0000000000000000000000000000000000000000;hb=c9bfa79f7249f0963798648a565243e4a3e63161;hpb=43acc200a049d872b7ce48df7bfb0a5c80818eb6 diff --git a/iio2mqtt.pl b/iio2mqtt.pl new file mode 100755 index 0000000..a9dce9f --- /dev/null +++ b/iio2mqtt.pl @@ -0,0 +1,40 @@ +#!/usr/bin/perl +use warnings; +use strict; + +use Time::HiRes; + +# sudo apt install libiio-utils mosquitto-clients + +my $hostname = `hostname -s`; +chomp($hostname); + +while(1) { + + my $t = Time::HiRes::time; + + my $iio = `iio_info`; + + my $device; + my $name; + + foreach ( split(/\n/, $iio) ) { + if ( m/iio:device\d+:\s+(\S+)/ ) { + $device = $1; + } elsif ( m/(\S+):\s+\(input\)/ ) { + $name = $1; + } elsif ( m/attr\s+0:\s+input\svalue: (\d+[\.\d]+)/ ) { + my $val = $1; + if ( $val !~ m/\d+\.\d+/ ) { + $val = $val / 1000; + } + my $topic = "iio/$hostname/$device/$name"; + #print "$topic $val\n"; + system "mosquitto_pub -h rpi2 -t $topic -m $val"; + } else { + #warn "# $_\n"; + } + } + + sleep Time::HiRes::time + 1 - $t; +}