Small incubators suck. They are typically incapable of keeping a constant temperature and require constant handholding when the surrounding temperature varies.

There are several reasons for this. Marginal electronics design. Small, poorly isolated enclosures. Measuring the temperature in the lid, rather than in the egg compartment.

So I decided to do something about this. Use a computer to measure the temperature inside the box. Let the same computer control the heat.

This program ties together these two functions. It uses Mr Big, a monitoring agent for the Xymon monitoring system, as a scheduler. This also means that the incubator can be configured, controlled and monitored from a central, remote location. If you have more than one incubator, they can all be controlled from the same place.

Prerequisites

First of all, a bunch of hardware to control the temperature inside the incubator. This program was tested with the following equipment. Make sure that you can turn power on and off from the TelldusCenter application before continuing. Name the switch 'incubator'. Make sure that you can measure temperature from the OneWireViewer application before continuing.

Software:

Quoting the Mr Big installation instructions:
md C:\MrBig
cd C:\MrBig
unzip \path\to\archive.zip
To install and start the service, run the commands:
mrbig -i
net start MrBig
By default the service is started automatically during system startup. This can be changed using the Services panel in Windows.

The following assumes that Mr Big was installed in C:\MrBig.

Create an empty directory C:\MrBig\Pickup.

Finally, unpack the Incubator archive and move the contents into C:\MrBig. It will create two subdirectories, X86 and X64, containing the Incubator application in 32-bit and 64-bit versions. It will also overwrite any existing mrbig.cfg file.

If you intend to use the 64-bit version, copy the file incubator64.exe from C:\MrBig\X64 to C:\MrBig. Otherwise copy the file incubator32.exe from C:\MrBig\X86 and update the command line in mrbig.cfg.

Graphs

The Mr Big agent was written for the Xymon monitoring system. It can be used without it and the incubator temperature will be controlled just fine, but it's quite convenient to check have incubator status on a web page and get pretty graphs.

Installing Xymon is outside the scope of this instruction. You need a Linux or other Unix-alike. If you are using Ubuntu, type sudo apt-get install xymon. Then configure according to the documentation.

Graphing in Xymon is a bit of a mess. Nothing happens automatically; instead, you have to specify everything by editing several text files. Here's how.

First, edit hobbitserver.cfg. Append incubator=ncv to the TESTRRD line like this:

TEST2RRD="cpu=la,[...],incubator=ncv"
And add a brand new line:
NCV_incubator="*:GAUGE"
If you want to include the incubator temperature on the trends page, append incubator to the GRAPHS line:
GRAPHS="la,disk,[...],incubator"
Save hobbitserver.cfg and restart Xymon.
/etc/init.d/hobbit restart
After some time, the file incubator.rrd should appear in the xymon data directory. Example:
root@ubuntu:/var/lib/hobbit/rrd/lillbob# ls -l
total 272
-rw-r--r-- 1 hobbit hobbit  38624 2012-02-19 12:19 disk,C.rrd
-rw-r--r-- 1 hobbit hobbit 114560 2012-02-19 12:19 incubator.rrd
-rw-r--r-- 1 hobbit hobbit  19640 2012-02-19 12:20 la.rrd
-rw-r--r-- 1 hobbit hobbit  19640 2012-02-19 12:18 memory.real.rrd
-rw-r--r-- 1 hobbit hobbit  19640 2012-02-19 12:18 memory.swap.rrd
-rw-r--r-- 1 hobbit hobbit  19640 2012-02-19 12:18 procs.rrd
-rw-r--r-- 1 hobbit hobbit  19640 2012-02-19 12:18 tcp.conn.rrd
-rw-r--r-- 1 hobbit hobbit  19640 2012-02-19 12:18 users.rrd
Now put this at the end of the file hobbitgraph.cfg:
[incubator]
        TITLE Incubator temperature
        YAXIS Degrees
        DEF:temperature=incubator.rrd:temperature:AVERAGE
        DEF:temptarget=incubator.rrd:temptarget:AVERAGE
        DEF:tempwarnhigh=incubator.rrd:tempwarnhigh:AVERAGE
        DEF:tempwarnlow=incubator.rrd:tempwarnlow:AVERAGE
        DEF:tempcrithigh=incubator.rrd:tempcrithigh:AVERAGE
        DEF:tempcritlow=incubator.rrd:tempcritlow:AVERAGE
        LINE2:temperature#000000:Temperature
        LINE2:temptarget#CCCCCC:Target temperature
        LINE2:tempwarnhigh#FFFF00:Warn high
        LINE2:tempwarnlow#FFFF00:Warn low
        LINE2:tempcrithigh#FF0000:Critical high
        LINE2:tempcritlow#FF0000:Critical low
You should get a graph with a black line for the actual temperature, grey for the target temperature, yellow for the high/low warning temperatures and red for the high/low critical temperatures.

I am Ulric Eriksson, <ulric@siag.nu>