Repository
Munin (contrib)
Last change
2020-03-26
Graph Categories
Keywords
Language
Python (3.x)

read_serial_temperature

Sadly there is no documentation for this plugin.

#!/usr/bin/env python3
"""
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

import serial


# Open named port at "19200,8,N,1", 1s timeout::
def gettemperature():
    connection = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
    # default to munin's value "unknown"
    result = "U"
    while True:
        line = connection.readline().strip()
        if line:
            # temperature in tenths celsius
            temp = str(line.split(" ")[0])
            # return only integer value (as a string)
            result = temp[:-1]
            break
    connection.close()
    return result


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