The title is a bit over simplified, as this project has the ability to do much more than just monitor temperatures, but at this point, monitoring and recording is all it does. I have seen other similar systems discussed on HBT, but this has to be a candidate for the least expensive.
I should start with an explanation of the hardware; 1-Wire. Dallas/Maxim came up with some devices that utilize an electronically embedded identification system that allows multiple devices to be wired onto one circuit. It does require a circuit (one wire to the sensor(s) plus a return wire), and thus actually two wires, so their name is a bit of misnomer. It would be more appropriately named '1-circuit', but I suppose everyone is allowed a bit of marketing leeway. Software is used to sort out the individual devices, in this case temperature sensors, by their id number. The main advantage to this is the ease of interfacing with a pc, but it also cuts down a bit on the hard wiring. Plus, the huge draw for me was the economy of the system. At about $4 per sensor plus a $28 interface being the only other required piece of hardware, experimentation was well within my budget.
Of course, a pc is required; I had a few 500 to 800 mgHz laptops available to me, and they're not really good for much else. They are about as slow as I'd consider for this setup.
"So, what's the catch?", you might ask. The installation of the software is a bit, how can I put it, "involved". Mainly because of setting up the pc as a server, which is only needed to display the graphs. But it's all open source software, and can be done within a night or two of dedicated work. Hopefully I can outline it clear enough here that if anyone wants to try it, you'll have a good starting point. Part of my motivation for posting this is the hopes of having another geek or two, help to code some more features into the system. I've been working in my 'spare time' on setting this up for monitoring a mash and brew for a week or so no, and expect to have some nice user interface going by the end of the year. But what I have so far works, and seems to work well within +/- 1 deg F during the first test.
My first setup was built to monitor and chart the temperatures of the cold stabilization of my commercial wine cellar. That system also reacts to the temperatures sensed, so that if the outside air temperature is below the tank temperature, a ventilation fan will turn on to draw the colder air in. You might already see how the possibilities are virtually endless. That system also uploads the charts to our website every 10 minutes and displays the current state of the fan. (NOTE: the fan has a physical power override switch that is off now, otherwise the cellar temperature would follow closer to the outside temp when the fan is on).
The graph for brewing beer is a bit different, of course. The temperature range is from 0F to 220 and the time frame I set to 4 hours. The user interface is being setup to allow variable time frames for multi levels of deconcoction. Here's a screen shot of the chart created while checking the accuracy of the sensor:
http://vinic.com/files/wmChart.PNG
This was just a few quarts of water, but was compared with three other thermometers (two mercury and a digital).
So. If you're still interested after all that, here's the list of software needed (this list is geared towards a winXP install, but is also doable on Linux with the appropriate adjustments. I'll assume that Linuxer's will know what to do):
1-wire
cygwin (cygwin)
digitemp (digi)
perl (Perl)
xampp (xampp)
jpgraph (jp)
Within the brackets is what I used for folder names.
A couple other handy tools:
7zip (to unzip gztar)
Real VNC (to access remotely from other pcs)
When installing Xampp, allow it to place a desktop icon (you can always move it later). Then use this to start the control panel. Then start Apache and MySQL (we'll make this easier to do later, another day).
Once Xampp is installed and the server/db are running, a little setup is required. Open a browser and point it to:
If it worked, you'll have a splash page with selection of languages. Once you choose your language of choice, you won't see that splash page again if you go back. You should now see a "Congratulations Page"; select the "Security" option from the left column. Should be a link:
All we need is a password for MySQl. You can leave everything else default. There are other ways to do this, but I'm use to using user/password for db's so that's the way I've done it.
The following files are all that is required for a bare bones, "read and chart" system using a simple perl file to read and then a php file to chart. At this point, they need to be invoked independently and have to be manually modified for things like different lengths of time on the chart, or frequency of temperature reading. Both will need the db password chanded, and the perl file will require the id numbers of your particular sensor to be entered manually.
At the risk of sounding like I'm endorsing a product, (which I am); but I've had good service and the prices are about as good as anywhere from hobby boards.
The sensors are DS18s20
And the adapter is the DS9097U
Most of the software above is pretty straight forward in installation, simply follow the instructions or run the setup file.
The two that may seem a little different are digitemp and jpgraph.
digitemp has to be configured from the command line. This is fairly simple to do with the following steps.
First, be sure the 1-wire drivers were installed. Then plug in the 1-wire setup to the serial port of your pc. Run the One wire Viewer (should be in the "Programs" of your start menu. Once it's up and running, you should see the serial number for the sensors and the adapter in the left column. Select a sensor, and then select the "temperature" tab that appears about the right column. In real time it will return temps and chart them.
The viewer does require java, but that's free too)
Next, open a command line window (from start menu, select 'run' from the bottom right column, and type "cmd". A window with black background should appear, and you should be in a subdirectory like:
C:\Documents and Settings\Administrator>
type the following at the command prompt:
and then type:
you should see something like this:
now type:
which should result in something like this:
this second step will provide individual sensor id's that get plugged into the brewWare.pl file below.
Jpgraph is simply a library of php modules and requires very little but unpacking into a folder in the root directory (c:\ in windows).
One of the last things to do is to set paths so that some of these new tools can be found from anywhere by any of the software. To set paths:
Right click on "My Computer" (from start menu)
Select "Properties"
Select "Advanced" tab then "Environmental Variables"
In top window (if there is no "Path" option) select "New" and for "Variable Name" put (you guessed it) "Path" and "Variable Value" is "C:\cygwin\bin;C:\Perl;C:\Xampp;" then OK and OK
(cont. in reply due to lengthy post!)
I should start with an explanation of the hardware; 1-Wire. Dallas/Maxim came up with some devices that utilize an electronically embedded identification system that allows multiple devices to be wired onto one circuit. It does require a circuit (one wire to the sensor(s) plus a return wire), and thus actually two wires, so their name is a bit of misnomer. It would be more appropriately named '1-circuit', but I suppose everyone is allowed a bit of marketing leeway. Software is used to sort out the individual devices, in this case temperature sensors, by their id number. The main advantage to this is the ease of interfacing with a pc, but it also cuts down a bit on the hard wiring. Plus, the huge draw for me was the economy of the system. At about $4 per sensor plus a $28 interface being the only other required piece of hardware, experimentation was well within my budget.
Of course, a pc is required; I had a few 500 to 800 mgHz laptops available to me, and they're not really good for much else. They are about as slow as I'd consider for this setup.
"So, what's the catch?", you might ask. The installation of the software is a bit, how can I put it, "involved". Mainly because of setting up the pc as a server, which is only needed to display the graphs. But it's all open source software, and can be done within a night or two of dedicated work. Hopefully I can outline it clear enough here that if anyone wants to try it, you'll have a good starting point. Part of my motivation for posting this is the hopes of having another geek or two, help to code some more features into the system. I've been working in my 'spare time' on setting this up for monitoring a mash and brew for a week or so no, and expect to have some nice user interface going by the end of the year. But what I have so far works, and seems to work well within +/- 1 deg F during the first test.
My first setup was built to monitor and chart the temperatures of the cold stabilization of my commercial wine cellar. That system also reacts to the temperatures sensed, so that if the outside air temperature is below the tank temperature, a ventilation fan will turn on to draw the colder air in. You might already see how the possibilities are virtually endless. That system also uploads the charts to our website every 10 minutes and displays the current state of the fan. (NOTE: the fan has a physical power override switch that is off now, otherwise the cellar temperature would follow closer to the outside temp when the fan is on).
The graph for brewing beer is a bit different, of course. The temperature range is from 0F to 220 and the time frame I set to 4 hours. The user interface is being setup to allow variable time frames for multi levels of deconcoction. Here's a screen shot of the chart created while checking the accuracy of the sensor:
http://vinic.com/files/wmChart.PNG
This was just a few quarts of water, but was compared with three other thermometers (two mercury and a digital).
So. If you're still interested after all that, here's the list of software needed (this list is geared towards a winXP install, but is also doable on Linux with the appropriate adjustments. I'll assume that Linuxer's will know what to do):
1-wire
cygwin (cygwin)
digitemp (digi)
perl (Perl)
xampp (xampp)
jpgraph (jp)
Within the brackets is what I used for folder names.
A couple other handy tools:
7zip (to unzip gztar)
Real VNC (to access remotely from other pcs)
When installing Xampp, allow it to place a desktop icon (you can always move it later). Then use this to start the control panel. Then start Apache and MySQL (we'll make this easier to do later, another day).
Once Xampp is installed and the server/db are running, a little setup is required. Open a browser and point it to:
If it worked, you'll have a splash page with selection of languages. Once you choose your language of choice, you won't see that splash page again if you go back. You should now see a "Congratulations Page"; select the "Security" option from the left column. Should be a link:
All we need is a password for MySQl. You can leave everything else default. There are other ways to do this, but I'm use to using user/password for db's so that's the way I've done it.
The following files are all that is required for a bare bones, "read and chart" system using a simple perl file to read and then a php file to chart. At this point, they need to be invoked independently and have to be manually modified for things like different lengths of time on the chart, or frequency of temperature reading. Both will need the db password chanded, and the perl file will require the id numbers of your particular sensor to be entered manually.
At the risk of sounding like I'm endorsing a product, (which I am); but I've had good service and the prices are about as good as anywhere from hobby boards.
The sensors are DS18s20
And the adapter is the DS9097U
Most of the software above is pretty straight forward in installation, simply follow the instructions or run the setup file.
The two that may seem a little different are digitemp and jpgraph.
digitemp has to be configured from the command line. This is fairly simple to do with the following steps.
First, be sure the 1-wire drivers were installed. Then plug in the 1-wire setup to the serial port of your pc. Run the One wire Viewer (should be in the "Programs" of your start menu. Once it's up and running, you should see the serial number for the sensors and the adapter in the left column. Select a sensor, and then select the "temperature" tab that appears about the right column. In real time it will return temps and chart them.
The viewer does require java, but that's free too)
Next, open a command line window (from start menu, select 'run' from the bottom right column, and type "cmd". A window with black background should appear, and you should be in a subdirectory like:
C:\Documents and Settings\Administrator>
type the following at the command prompt:
cd c:\digi\win
and then type:
C:\digi\win>digitemp_DS9097U -s /dev/ttyS0 -a -c .digitemprc
you should see something like this:
C:\digi\win>digitemp_DS9097U -s /dev/ttyS0 -a -c .digitemprc
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Dec 09 21:41:50 Sensor 0 C: 17.69 F: 63.84
now type:
C:\digi\win>digitemp_DS9097U -s /dev/ttyS0 -w
which should result in something like this:
C:\digi\win>digitemp_DS9097U -s /dev/ttyS0 -w
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers
..
Devices on the Main LAN
109DBCFE0008007C : DS1820/DS18S20/DS1920 Temperature Sensor
0943648703000055 : DS2502/DS1982 1Kbit Add only memory
this second step will provide individual sensor id's that get plugged into the brewWare.pl file below.
Jpgraph is simply a library of php modules and requires very little but unpacking into a folder in the root directory (c:\ in windows).
One of the last things to do is to set paths so that some of these new tools can be found from anywhere by any of the software. To set paths:
Right click on "My Computer" (from start menu)
Select "Properties"
Select "Advanced" tab then "Environmental Variables"
In top window (if there is no "Path" option) select "New" and for "Variable Name" put (you guessed it) "Path" and "Variable Value" is "C:\cygwin\bin;C:\Perl;C:\Xampp;" then OK and OK
(cont. in reply due to lengthy post!)