From c9bfa79f7249f0963798648a565243e4a3e63161 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sun, 21 Feb 2021 08:29:50 +0000 Subject: [PATCH 1/1] send iio sensors to mqtt --- iio2mqtt.pl | 40 ++++++++++++++++++++++++++++++++++++++++ system/iio2mqtt.service | 11 +++++++++++ 2 files changed, 51 insertions(+) create mode 100755 iio2mqtt.pl create mode 100644 system/iio2mqtt.service 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; +} diff --git a/system/iio2mqtt.service b/system/iio2mqtt.service new file mode 100644 index 0000000..95ebc8a --- /dev/null +++ b/system/iio2mqtt.service @@ -0,0 +1,11 @@ +[Unit] +Description=iio2mqtt + +[Service] +User=dpavlin +ExecStart=/home/dpavlin/air-quality/iio2mqtt.pl +Restart=always +RestartSec=2s + +[Install] +WantedBy=multi-user.target -- 2.20.1