Home > Tech > Arduino server room monitor

Arduino server room monitor

I just finished building an Arduino-based server room environment monitor using a kit from Sproutboard. It is a pretty nice kit for the cost. The kit plus the Arduino and ethernet shield from Sparkfun comes in at under $250.

For that $250 and a bit of manual labor, I am able to see ambient temperature, humididty, incoming A/C temperature, if the lights are on, if the door is open and whether there is water on the floor, all from a basic webpage. The system itself has a buzzer for an audible alarm if any conditions are outside your specified parameters (positive test for water on floor, ambient temp > 80, etc). I also built a quick script for my Nagios system that pulls data from the web page so I get email/SMS alerts as well.

The code is really easy to work with. If you have ever done any C/C++ work you should feel right at home. I spent some time modifying the code so the system works exactly as I want it to. Can’t do that with many off-the-shelf systems.

I liked the system so much that I bought several more to send out to our remote offices. Some of our remote sites have a “server room” that is little more than a storage closet. It will be nice to have hard numbers on what the temperature is in those rooms.

Looking downt the road a ways, I will probably be adding a single-chip smoke detector, and I might hook up an AC-powered relay plugged into an outlet that isn’t powered by our generator. That will allow me to get alerts when we lose utility power.

You can also adapt this same system to monitor your house, control a greenhouse, etc. The Sproutboard site has lots of ideas. Check it out.

Advertisements
Categories: Tech Tags: , ,
  1. January 28, 2011 at 12:06 AM

    Hey Michael
    I am a system admin my self, and would like to do a projekt like yours. We got an very ustabel temp setup in our server room and it would be very nice to have an alarm if any thing goes worng.

    Is it possible to se you arduino code for your setup, i would like to se if it is somthing i would be able to master and be inspired before byeing hw.

    can you send SMS *(gsm modem/Sheild) to your system and receive different information depending upon various sensors as temperature, voltage drop (oops) light in the server (alarm)etc.

    Best regards

    Tom M Petersen
    Plum A/S

    Great site!

    • February 7, 2011 at 9:43 AM

      Tom, thanks for the compliment. I will post my code shortly.

      As for using a GSM Arduino shield, if it can be done with an Arduino, you should be able to send and receive the information you are looking for. I haven’t used a GSM shield, but there should be enough documentation out there to see what can be done.

      I already have a system for getting SMS alerts based on Nagios and a physical cell phone (see my earlier blog post), so I just built some Nagios alerts using a script to scrape the data off the monitor’s web page.

      As always, there are many ways to get to the same goal.

    • July 21, 2011 at 7:38 AM

      Here is a link to the code. Sorry for the long wait.

      http://pastebin.com/uPSv932y

  2. Jayson
    July 20, 2011 at 8:49 AM

    Any word on that source code? i would love to get some of these!

  3. January 4, 2013 at 11:10 AM

    I know this is 2 years old but I was wondering what you use as a water detection sensors? We are trying to build a similar sensor for our data center. Also I didn’t see anything in the code for water on floor detection.

    • February 7, 2013 at 2:42 PM

      I just cut a groove down the center of a copper-clad board, then soldered a wire to each side. If water is on the floor, it should contact both sides of the board and allow some voltage to pass.

      I may not have included the code for the sensing. It looks like this:

      void analogRead2(){
      waterlevel = 0;
      for(i = 0;i<=7;i++){ // gets 8 samples of water level
      Tsamples[i] = analogRead(analogPin2);
      waterlevel = waterlevel + Tsamples[i];
      delay(100);
      }

      waterlevel = waterlevel/8.0;
      }

      I'm just using an analog input. You will probably want to experiment with what values to compare the waterlevel variable to by dipping the board in a small container of water to bridge the two halves.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: