From bf4203d15233b0fc675e2a08f60c4f6dec310fcb Mon Sep 17 00:00:00 2001 From: Paul Wiegmans Date: Fri, 18 Dec 2009 12:19:14 +0100 Subject: [PATCH] Initial version --- plugins/other/read_serial_temperature | 53 +++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 plugins/other/read_serial_temperature diff --git a/plugins/other/read_serial_temperature b/plugins/other/read_serial_temperature new file mode 100755 index 00000000..4b432c46 --- /dev/null +++ b/plugins/other/read_serial_temperature @@ -0,0 +1,53 @@ +#!/usr/bin/env python +""" +Paul Wiegmans (p.wiegmans@bonhoeffer.nl) +2009 dec 18 +This munin-node plugin reads a temperature value from a serial port, +provided by a Arduino with temperature sensor. +For details see: http://amber.bonhoeffer.nl/temperatuur/ + + +Linux: "/dev/usb/ttyUSB[n]" or "/dev/ttyUSB[n]" + first for for RedHat, second form for Debian. + e.g. "/dev/usb/ttyUSB0" +""" + +import sys, serial + +# Open named port at "19200,8,N,1", 1s timeout:: + +def gettemperature(): + ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) + t = 0 + while t<1: + line = ser.readline().strip() + if line: + temp = str(line.split(" ")[0]) # temperature in tenths celsius + i = len(temp)-1 + temp = temp[:i] # return only integer value (as a string) + return temp + t += 1 + ser.close() + +# shamelessly copied from weather_temp_ + +if len(sys.argv) == 2 and sys.argv[1] == "autoconf": + + print "yes" + +elif len(sys.argv) == 2 and sys.argv[1] == "config": + + print 'graph_title Temperatuur in de serverruimte' + print 'graph_vlabel temperature in C' + print 'graph_category System' + print 'temperature.label temperature' + print 'graph_info Dit is de temperatuur in het rek in de serverruimte B104' + print 'graph_scale no' + # lower limit 10, upper limit 50 + print 'graph_args --base 1000 -l 10 -u 50' + +else: + + print 'temperature.value %s' % gettemperature() + + \ No newline at end of file