home   articles   archive   forum   masthead  
Published at 11.04.05
Author: Thomas Ratz
Translator: Tobias Bayer
Languages: de
Printer printer-version
Support Us!
 

Temperature control with Linux

Thermometer On hot days it is always good to know the temperature in the server room. Using the solution described in this article you can simply visit an Apache webserver and query the current temperature values.

Of course the range of applications are much wider than only server rooms. A hobby-meteorologist can design an automated temperature control or a gardener can check his greenhouse.

There are temperature control instruments which have integrated a webserver for queries. But they cost about 300 EUR.
This solution takes a certain amount of time but it is much cheaper (about 20 EUR) and can be personalized very well.

Component parts

The component parts you will need for the circuit are:

  • 1 DallasSemiconductor DS1820 temperature sensor
    (EXACTLY this identifier!),about 6 EUR

  • 2 Schottky Diodes (1N5818)

  • 1 Zener Diode 6.2V (1N5234)

  • 1 Zener Diode 3.9V(1N5228)

  • 1 RS232C female plug for soldering

  • 1 resistor 1,5K Ohm

The circuit

The occupancy for serial plugs with 9 and 25 poles:

Name DB-25 DB-9
DTR 20 4
RXD 3 2
TXD 2 3
GND 1 and 7
(must be connected!)
5

While soldering you must pay attention that you connect the right pins to the DS1820. Here is a small but helpful drawing:

Several sensors

It is even possible to connect several DS1820 sensors in parallel to the circuit. The DS1820 sensors have a unique item id that is transmitted along with the measurement. The digitemp software by Brian Lane can use several sensors without any problems.
The config file that will be created by digitemp looks like the following:

      TTY /dev/ttyS0
      FAIL_TIME 5
      READ_TIME 500
      LOG_TYPE 1
      LOG_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F"
      SENSORS 2
      ROM 0 16 54 147 66 0 0 0 186
      ROM 1 16 44 180 66 0 0 0 135
  
I recommend to solder all the component parts directly to the RS232C plug so you can put the case around it. Images of my "artwork":

 

Software

The software for querying the temperature is available for Linux and Win95. It was written by Brian Lane (http://www.brianlane.com/digitemp.php) from Nexuscomputing and is called digitemp.
For the circuit used here you need version 1.3. After you have downloaded the package just decompress and compile it. There is a README file included describing everything in detail.

Now you can start!
First of all, digitemp must recognize the sensor.
This is done by entering:

  >> digitemp -s/dev/ttyS0 -i
  
This command invokes digitemp and it trys to recognize a sensor located at COM1 and read from it. If your sensor is connected to COM2 you'll have to use ttyS1. If this is successful, the sensor's ID will be printed.
Now you can query the temperature with the command:
  >> digitemp -a
  

You can write the values to a log file with

  >> digitemp -a -l/var/log/temperature
  
and read from this file with a PERL script to show the values on a webserver.

You will get very nice results when reading the temperature in chronological order from the log file and display it graphically with a program like rrdtools.

Links to similiar information




Talkback Area




Enter Own Comment