diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2017-10-20 16:27:21 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2017-10-20 16:27:21 +0200 |
commit | 31a90e305181ae51ac8f8a6b80cdd27934309b9d (patch) | |
tree | a9b26cce898840097136f6b95b7dc0e8cb34feef | |
parent | 5b4e233ae752cdecec831ff039c6ee740522e08b (diff) | |
download | hue-31a90e305181ae51ac8f8a6b80cdd27934309b9d.tar.gz |
add elv wetter
-rwxr-xr-x | elv-wetter | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/elv-wetter b/elv-wetter new file mode 100755 index 0000000..238ce22 --- /dev/null +++ b/elv-wetter @@ -0,0 +1,85 @@ +#!/usr/bin/perl +use warnings; +use strict; +use Device::SerialPort; + +my @names = ( + "unused", + "unused", + "unused", + "temp-1", + "temp-2", + "temp-3", + "temp-4", + "temp-5", + "temp-6", + "temp-7", + "temp-8", + "hy-1", + "hy-2", + "hy-3", + "hy-4", + "hy-5", + "hy-6", + "hy-7", + "hy-8", + "temp", + "hy", + "wind", + "water", + "raining" + ); + +###################################################################### + +my $port = shift; +my ($elv,$line,@data); + +my $delay = 1; + +if (!defined($port)) { + print "no port specified\n"; + exit 1; +} + +$elv = new Device::SerialPort($port, 1) or die; +$elv->baudrate(9600); +$elv->parity('none'); +$elv->databits(8); +$elv->stopbits(1); +$elv->write_settings(); + +$elv->write("?"); +sleep $delay; +$line = $elv->input; +die "ELV USB-WDE1 not detected on $port" unless $line =~ m/ELV USB-WDE1/; + +$elv->write("M2"); +sleep $delay; +$line = $elv->input; +die "switch to logview mode failed" unless $line =~ m/LogView/; + +$elv->write("RESET"); +sleep $delay; +$line = $elv->input; +die "reset failed (#1)" unless $line =~ m/OK/; + +$elv->write("?"); +sleep $delay; +$line = $elv->input; +die "reset failed (#2)" unless $line =~ m/ELV USB-WDE1/; + +print "init ok, waiting for data ...\n"; + +while (1) { + sleep $delay; + $line = $elv->input; + next if $line eq ""; + @data = split /;/, $line; + print "--\n"; + for my $i (0 .. (scalar(@names) - 1)) { + next if $names[$i] eq "unused"; + next if $data[$i] eq ""; + printf "%s: %s\n", $names[$i], $data[$i]; + } +} |