Project:
meterkastkoeling
Enkele jaren geleden heb ik een nieuwbouwwoning gekocht en daarin zit een smalle en ondiepe meterkast. Maar dat is wel het punt waar alle telecomaansluitingen en leidingen zitten dus hier wilde ik mijn IT meuk plaatsen. De meeste apparatuur (router, switch, patchpanel) is 19" dus dat werd een uitdaging. Uiteindelijk heb ik gekozen om een 4U rack te nemen en deze aan houten plafond te schroeven. Past allemaal perfect dus helemaal happy. Maar... het is 10 GbE en dat spul creeert aardig wat warmte. Op warme zomerdagen werd het in de meterkast dan al snel 35 graden en de CPU van de router tikt dan zelfs de 65 graden aan. Als tweaker denk ik dan: "
daar kan getweakt worden". De meterkastdeur heeft standaard boven en onder ventilatieroosters en het leek mij leuk om hier Noctua fans in te bouwen. De bovenste blaast uit, de onderste zuigt aan. En nog een klein ventilatortje extra die op de SFP blaast voor exta koeling.
:strip_exif()/f/image/wGSe6qtfn2at3SK72DQ1qhCA.jpg?f=fotoalbum_medium)
-
:strip_exif()/f/image/fQ8olXJQvcLk2s9eWfyRlNNz.jpg?f=fotoalbum_medium)
-
:strip_exif()/f/image/Ob4YxWQda3ndDOI1IFFX62uG.jpg?f=fotoalbum_medium)
-
Ik ben van het motto 'beter goed gestolen dan slecht bedacht' dus ik heb wat Youtube videos's bekeken van anderen die een soortgelijke oplossing hadden gemaakt. En zo tot een nieuwe combinatie gekomen van 8 Noctua fans welke via een ESP32 worden gestuurd. O ja, en nog een losse kleine Noctua fan voor de SFP die altijd aan staat omdat die altijd erg warm is.
De eerste uitdaging was de inbouw van de Noctua (NF-B9 Redux-1600 PWM) fans. Hiervoor heb ik het ventilatierooster losgeschroeft en het binnenstuk verwijderd zodat er een lege ruimte ontstond. Hier en daar moest ik nog wat extra randjes verwijderen zodat er voldoende plek was om het geheel goed passend te krijgen. Het rooster is onderverdeeld in 4 vakken, op elke zit een Noctua fan. Deze heb ik met een hetelijmpistool vast gezet aan het buitenste deel. Werkt prima, zit goed vast en als je wilt kun je het toch simpel los krijgen zonder sporen achter te laten. Alle ventilatoren boven en onder worden parallel aangesloten op een 4 voudig splitter kabeltje en deze gaan vervolgens nog een keer naar een 2 voudige splitter. Om onder en boven te verbinden heb ik een plastic gootje tussen beide roosters geplakt en hierin zit een 4 draads kabel.
De aansturing gaat met een ESP32 bordje. Het grootste deel van mijn implementatie komt van deze video:
YouTube: Tutorial - How to control a PWM fan with an ESP32 and Home Assistant. Ik heb ook het idee van de voeding gedaan zodat er maar 1 voedingskabeltje naar de deur gaat.
Bij de implementatie in Home Assistant kreeg ik wat meldingen over de gebruikte pinnen. Om dit te verhelpen gebruik ik nu GPIO13 voor de input en GPIO25 voor de output. Verder viel het mij op dat als Home Assisant herstartte, of als ik de voeding van de koeling opnieuw aansloot, dat de fans niet automatisch startte. Ik heb de code hierop een beetje gewijzigd zodat dit nu wel gebeurd.
Vlakbij hangt een klimaatsensor die de huidige temperatuur meet. Via een automation kun je dan de snelheid regelen naar wat je wilt. Als ik hem op 100% snelheid zet dan draaien de fans rond de 1800 RPM. In de meterkast voel je dan echt een air flow ontstaan en aan bij het rooster aan de bovenkant voel je warme lucht uitgeblazen worden. Dit koelt vrij snel. Binnen een uur was de temperatuur van 35 naar 25 graden. De meterkast klint dan wel alsof er een datacenter achter de deur zit. Als ik de fans op 60% laat draaien (rond de 1250 RPM) dan hoor je ze al bijna niet meer. Ik moet nog even wat automation maken zodat de juiste snelheid wordt gekozen. In de zomer zal die dan harder draaien dan in de winter.
En na het monteren van de extra fan bij de SFP ging die ook van 65 naar 36 graden. Tweaker @
justdaboo kwam met dit idee. Hiervoor heb ik een beugeltje 3D laten printen (
https://www.printables.co...sfp-adapter-cooling/files) en hierop zit de Noctua 40mm Fan - NF-A4x10 5V PWM geschroeft. Standaard zit hier een USB-A kabeltje bij.
Dit was mijn boodschappenlijstje:
8x Noctua NF-B9 Redux-1600 PWM fans (
https://www.amazon.nl/dp/B07DXS86G7)
1x Noctua NF-A4x10 5V PWM fan (
https://www.amazon.nl/dp/B07DXS86G7)
2x PWM-ventilatorsplitter-kabel 4 aansluitingen (
https://www.amazon.nl/dp/B0F3J8X3N6)
1x PWM-ventilatorsplitter-kabel 2 aansluitingen (
https://nl.aliexpress.com/item/1005003993179559.html)
1x ESP32 development board (
https://www.amazon.nl/dp/B071JR9WS9)
1x 12V-DC voeding, 2Amp (
https://www.amazon.nl/dp/B0C6M3FL31)
1x 12V-DC naar 5V-DC 3Amp met micro-USB connector (
https://www.amazon.nl/dp/B0C14PG9CS)
1x kabelgootje (
https://www.hornbach.nl/p...10-mm-wit-200-cm/4685157/)
1x 3D geprint beugeltje (laten printen door
https://link.marktplaats.nl/m2257659378)
1x 4-pin PWM verlengkabel 2 meter (ik had een verkeerde besteld en uiteindelijk zelf gemaakt door Dupont kabeltjes te koppelen)
Dit is de yaml-code die ik heb gebruikt voor de ESP32:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| esphome:
name: "meterkastkoeling"
comment: "Houdt de meterkast koel"
esp32:
board: esp32dev
framework:
type: esp-idf
logger:
api:
encryption:
key: "hier komt jouw eigen encryption key"
ota:
- platform: esphome
password: "hier komt jouw eigen password"
wifi:
ssid: "hier komt de naam van jouw wifi netwerk"
password: "hier komt het wachtwoord van jouw wifi netwerk"
ap:
ssid: "Meterkastkoeling"
password: "12AB34CD56EF"
captive_portal:
sensor:
- platform: pulse_counter
pin: GPIO13
name: PWM Fan RPM
id: fan_pulse
unit_of_measurement: 'RPM'
filters:
- multiply: 0.5
- lambda: 'return round(x);'
count_mode:
rising_edge: INCREMENT
falling_edge: DISABLE
update_interval: 10s
output:
- platform: ledc
pin: GPIO25
frequency: 25000 Hz
id: fanhub_pwm
fan:
- platform: speed
output: fanhub_pwm
name: "PWM Fan"
restore_mode: ALWAYS_ON
on_turn_off:
- output.set_level:
id: fanhub_pwm
level: 0%
on_turn_on:
- output.set_level:
id: fanhub_pwm
level: 0.5 |
En dit is de yaml-inhoud van een Automation:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| alias: "Meterkastkoeling op 100% boven 28 graden "
description: ""
triggers:
- type: temperature
device_id: c93d0a27b311c141edbe0cac9c9d944a
entity_id: 222ad5cdc3936c0bbe4d38825da6c9c2
domain: sensor
trigger: device
above: 28
conditions: []
actions:
- type: turn_on
device_id: 79c1eed58f7f4a4aba06731d9b6b6ec2
entity_id: ed788dcb6b67b047ec49d07386c552f5
domain: fan
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
- action: fan.set_percentage
metadata: {}
data:
percentage: 20
target:
device_id: 79c1eed58f7f4a4aba06731d9b6b6ec2
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- action: fan.set_percentage
metadata: {}
data:
percentage: 50
target:
device_id: 79c1eed58f7f4a4aba06731d9b6b6ec2
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- action: fan.set_percentage
metadata: {}
data:
percentage: 100
target:
device_id: 79c1eed58f7f4a4aba06731d9b6b6ec2
mode: single |
Al met al een leuk projectje geworden en ik ben er trots op. Mocht je vragen hebben, pm mij gerust!
[
Voor 6% gewijzigd door
robertwebbe op 10-08-2025 13:32
]