BakedPi - See how hot your Raspberry Pi is with LedBorg
The new driver free example which replaces this one can be found here.
We want to know how hot our Raspberry Pis are getting when they do their thing, and what better way then with LEDs?
We decided to use an LedBorg to show how hot the processor is by the following guide:
Colour displayed is the range from a minimum temperature (0%, Blue) to a maximum temperature (100%, Red).
0% is used when below range, 100% is used when above range
<=11% | <=22% | <=33% | <=44% | <56% | <67% | <78% | <89% | >=89% |
The result was BakedPi.py, a Python script which reads the current processor temperature and controls an LedBorg appropriately.
Our example uses values of tempLow
(0%) and tempHigh
(100%) which work well when watching the Raspberry Pi warm up from boot, you will probably want to change these to show a better temperature range!
Here's the code, you can download the BakedPi script file as text here
Save the text file on your pi as BakedPi.py
Make the script executable usingchmod +x BakedPi.py
and run usingsudo ./BakedPi.py
#!/usr/bin/env python # coding: latin-1 # Import libary functions we need import time # Make a function to set the LedBorg colour def SetColour(colour): LedBorg=open('/dev/ledborg','w') LedBorg.write(colour) LedBorg.close() # Set up our temperature chart, from cool to hot colours = ['002', '012', '022', '021', '020', '120', '220', '210', '200'] # Setup for processor monitor pathSensor = '/sys/class/thermal/thermal_zone0/temp' # File path used to read the temperature readingPrintMultiplier = 0.001 # Value to multiply the reading by for user display tempHigh = 40000 # Highest scale reading tempLow = 30000 # Lowest scale reading interval = 1 # Time between readings in seconds try: # Make sure we are using floats tempHigh = float(tempHigh) tempLow = float(tempLow) while True: # Read the temperature in from the file system fSensor = open(pathSensor, 'r') reading = float(fSensor.read()) fSensor.close() # Pick the relevant colour position = (reading - tempLow) / (tempHigh - tempLow) position = int(position * len(colours)) if position < 0: position = 0 elif position >= len(colours): position = len(colours) - 1 # Set the relevant colour SetColour(colours[position]) # Print the latest reading print '%02.3f' % (reading * readingPrintMultiplier) # Wait a while time.sleep(interval) except KeyboardInterrupt: # CTRL+C exit, turn off the LedBorg print 'Terminated' SetColour('000')