I had to solve this problem once with zero budget. It was the single most clever thing I've ever done. I'm immensely proud of this.
I had a problem with my server room where, sometimes after a power outage, the HVAC would stop working (it wouldn't automatically start up again correctly after the power outage), and I'd come back after a long weekend to a cooking server room. I tried to get them to fix the HVAC and after about 20 visits they still couldn't fix it. My only solution was to reset the HVAC by hand when it happened. So I needed to know, via email and/or SMS, any time the server room busted a certain temperature threshold so I could go into the office and reset the HVAC.
I'd looked up all the existing devices for monitoring my server room temperature, they were all expensive. Such things exist if you're willing to pay for it: Google on Server Room Climate Monitoring.
But I needed to solve the problem without waiting for my company's purchasing process. So I did the following:
- We had one computer in the server room that was already dedicated to playing MP3s for the music-on-hold system. (We'd been using CD players but they kept breaking down; turns out a computer configured to boot into WinAmp is more reliable than a consumer CD player.)
- Because this one computer was playing music, it was the only computer in the server room with a SOUND CARD.
- Sound cards also have ANALOG JOYSTICK PORTS.
- Analog joystick ports are simply a way to read a resistance value on a couple of pins and turn it into a digital number from 0-255.
- I went to Radio Shack ("Tandy"), and for a couple of bucks, got some thermistors and crimped a couple of plug-pins onto the leads of the thermistors.
- I stuck the thermistors into the X and Y pinouts of the joystick port. (I discovered later had to do both X and Y even though I was only gonna use one of them).
- I wrote a VB program to read the joystick deflection value and send an email if it busted a certain threshold.
There was a lot more to the program than that, but on the surface, that's all it was. It solved my problem perfectly and gave me a chance to write a fun program and learn something new.