#!/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()