munin-contrib/plugins/system/read_serial_temperature

54 lines
1.3 KiB
Python
Executable File

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