#! /usr/bin/perl # Copyright 2010 Tollef Fog Heen . All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # THIS SOFTWARE IS PROVIDED BY ``AS IS'' AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # The views and conclusions contained in the software and # documentation are those of the authors and should not be interpreted # as representing official policies, either expressed or implied, of # Tollef Fog Heen. #%# family=auto #%# capabilities=autoconf use strict; use warnings; use utf8; use OWNet; my $owserver = OWNet->new(); my @buses = grep { /^\/bus./ } split(",", $owserver->dir("/")); my %sensors; for my $bus (@buses) { for my $sensor (split(",", $owserver->dir("$bus"))) { my $p = $sensor; $sensor =~ s|^/bus.\d+/||; next if $sensor =~ /(interface|alarm|simultaneous)/; $sensors{$sensor} = $p; } } if (defined $ARGV[0]) { if ($ARGV[0] eq 'autoconf') { if ($owserver->dir("/") =~ /./) { print "yes\n"; exit 0; } print "no\n"; exit 1; } elsif ($ARGV[0] eq 'config') { print "graph_title 1-wire temperature\n"; print "graph_args --base 1000\n"; print "graph_vlabel temp in °C\n"; print "graph_category sensors\n"; print "graph_info This graph shows the temperature in degrees Celsius of the sensors on the network.\n"; print "$_.label $_\n" foreach (keys %sensors); exit 0; } } for my $sensor (keys %sensors) { if ($0 =~ /ow_(\w+)/) { next unless $1 eq $sensor; } printf "%s.value %.4f\n", $sensor, $owserver->read($sensors{$sensor}."/temperature"); } exit 0;