Commit 28daf07d1ad727826ae360987a4436794953df4b

Authored by Frederik Lindenaar
1 parent 2349fc1a

fixed scaling issue for Raspberry Pi CPU temperature

Showing 1 changed file with 6 additions and 4 deletions
plugins/check_temperature
1 #! /usr/bin/env python 1 #! /usr/bin/env python
2 # 2 #
3 -# check_temperature - Nagios temperature check for DS18B20 sensor on RaspberryPi 3 +# check_temperature - Nagios temperature check for RaspberryPi-connected sensors
4 # 4 #
5 # Version 1.2, latest version, documentation and bugtracker available at: 5 # Version 1.2, latest version, documentation and bugtracker available at:
6 # https://gitlab.lindenaar.net/scripts/nagios-plugins 6 # https://gitlab.lindenaar.net/scripts/nagios-plugins
@@ -32,11 +32,13 @@ PROG_NAME=splitext(basename(__file__))[0] @@ -32,11 +32,13 @@ PROG_NAME=splitext(basename(__file__))[0]
32 PROG_VERSION=PROG_NAME + ' ' + VERSION 32 PROG_VERSION=PROG_NAME + ' ' + VERSION
33 33
34 CPU_SENSOR_DEV = '/sys/class/thermal/thermal_zone0/temp' 34 CPU_SENSOR_DEV = '/sys/class/thermal/thermal_zone0/temp'
  35 +CPU_SENSOR_SCALE=1000
35 I2C_MCP9808_CONFIG_ADDR=0x1 36 I2C_MCP9808_CONFIG_ADDR=0x1
36 I2C_MCP9808_CONFIG = [ 0x00, 0x00 ] # continuous conversion (power-up default) 37 I2C_MCP9808_CONFIG = [ 0x00, 0x00 ] # continuous conversion (power-up default)
37 I2C_MCP9808_PRECISION_ADDR=0x08 38 I2C_MCP9808_PRECISION_ADDR=0x08
38 I2C_MCP9808_PRECISION=3 # 0=0.5, 1=0.25, 2=0.125, 3=0.0625 degr. C 39 I2C_MCP9808_PRECISION=3 # 0=0.5, 1=0.25, 2=0.125, 3=0.0625 degr. C
39 I2C_MCP9808_TEMP_ADDR=0x05 40 I2C_MCP9808_TEMP_ADDR=0x05
  41 +I2C_MCP9808_SENSOR_SCALE=16
40 W1_SENSOR_DEV_DIR = '/sys/bus/w1/devices/' 42 W1_SENSOR_DEV_DIR = '/sys/bus/w1/devices/'
41 W1_SENSOR_DEV_PREFIX = '28-' 43 W1_SENSOR_DEV_PREFIX = '28-'
42 W1_SENSOR_DEV_SUFFIX = '/w1_slave' 44 W1_SENSOR_DEV_SUFFIX = '/w1_slave'
@@ -116,9 +118,9 @@ def read_rpi_cpu_temp(args): @@ -116,9 +118,9 @@ def read_rpi_cpu_temp(args):
116 logger.debug('Temperature sensor data read from %s: %s', f.name, lines) 118 logger.debug('Temperature sensor data read from %s: %s', f.name, lines)
117 119
118 temp_read = int(lines[0]) 120 temp_read = int(lines[0])
119 - temp = args.converter[0](temp_read) 121 + temp = args.converter[0](temp_read, CPU_SENSOR_SCALE)
120 logger.debug('Temperature sensor value %d is %.2f%s', temp_read, 122 logger.debug('Temperature sensor value %d is %.2f%s', temp_read,
121 - temp, args.converter[1]) 123 + temp, args.converter[1])
122 return temp, 1 124 return temp, 1
123 125
124 126
@@ -157,7 +159,7 @@ def read_i2c_mcp9808_temp(args): @@ -157,7 +159,7 @@ def read_i2c_mcp9808_temp(args):
157 if temp_read > 4095 : 159 if temp_read > 4095 :
158 temp_read -= 8192 160 temp_read -= 8192
159 161
160 - temp = args.converter[0](temp_read, 16) 162 + temp = args.converter[0](temp_read, I2C_MCP9808_SENSOR_SCALE)
161 logger.debug('Temperature sensor value %d is %.2f%s', 163 logger.debug('Temperature sensor value %d is %.2f%s',
162 temp_read, temp, args.converter[1]) 164 temp_read, temp, args.converter[1])
163 return temp, 1 165 return temp, 1