This is the first blog post of my jurney to cool my homelab serverroom. More posts will follow as the projects goes on.
In the basement of our house, I have a small server room. There I run my private proxmox cluster, freenas and pfsense. As you can imagine, this hardware produces quite a lot of heat and has to be cooled properly. So far this was just a temporary solution with a air conditioner monobloc system.
To reduce the power used by the air conditioner, I plan to use something called “free cooling” by just using the fresh air from the outside. So I pull in cool fresh air and push out the hot air. If the air in this little room gets replaced faster than it can heat up, I only need some power for the FANs running the airflow. In Switzerland we usualy only have about 3-4 Weeks a year where the outside temperature is above 30°C. Mostly it is below that level. So for running the servers the top limit is araound 28 to 29°C inlet temperature. At this point the air conditioner should be turned on.
The idea is to have the room split into two areas. This is nothing new and many server rooms work with such a concept. So there is a hole in the wall at the back of the room (high temp side). On the other side I already had a windows that got replaced by a wooden plate with two holes in it. One for fresh air and one for hot air outlet of the air conditioner. This will change as the air conditioner should blow the hot air into the high temperature area.
Starting with this idea, the result could look like the following image.
So now there are some situations to deal with.
- Inlet gets to warm -> turn on the A/C
- Inlet is in normal range (15-29°C) -> turn A/C off
- Inlet and cold area below 10°C (winter condition) -> turn A/C off, turn internal FAN on to inject hot air into the cold area to compensate the too low inlet temperature
So in total I’ll have to measure the following temperatures:
- Inlet air temperature
- Outlet air temperature -> should not get to high
- Cool area temperature
And I need to be able to turn on or off the following devices:
- Inlet FAN
- Outlet FAN
- Internal FAN
- A/C System
Of course the neat IoT topic should be covered as well. I’d like to send the measuered information to a mqtt server that forwards it for persistence. There should also be a easy to configure a dashboard and a kind of workflow engine.
Prove of Concept
So I searched around and because I already have some experience using a raspberry pi, I decided to go on that route. This poc has not the abaility to do all the stuff I want it to do. This is simply because I do not have all parts yet and could not assembly everything as intended. This will follow during the next weeks.
In the final version, everything will be contained in a rack case. This projects operates with 220V AC power. This can be dangerous if you do not know what you’re doing! This poc setup is far away from beeing save to touch. It will be moved to e closed case as soon as possible.
Here is the hardware used for this prove of concept.
- 1x 12V power supply directly attached to 220V AC (Warning: DO NOT USE SUCH A THING IF YOU DON’T KNOW WHAT YOU DO)
- 1x Raspberry pi 3
- 1x GrovePi+ (IoT starter kit)
- 2x Temperature sensor
- 3x Relaiswitch that is able to handle 12V DC or 230V AC
- 1x RGB LCD-Display to show som statusinformation
- 1x Grove button to control the switches
- 2x 120mm FANs to push / pull the air (far too weak for real cooling)
- Some cables to connect everything
On the raspberrypi I installed raspbian. This is the easies way for me because I already know debian very well and this version is well prepared for use with the raspberry pi. So here I use nore-red to model the workflows and some small python scripts to support the workflows and provide some data from the grove API. In the screenshot below you see a part of the dashboard UI for node-red.
And the following screenshot will give you a little impression how this is looking like on the backend side.
When everything is working all code parts will be released to public. But for now it is under heavy development :-D
To be continued…