Hallo,
weil es bis jetzt ein Erfolg war und noch Teile übrig sind, baue ich zur Zeit meinen dritten Heizkörperlüfter.
Ich konnte damit meine Heizungsanlage noch effizienter einstellen: Heizkurve anpassen und Vorlauftemperatur senken, trotzdem mit Nachtabsenkung arbeiten und das Wohnzimmer auf 22°C bekommen. Wir haben hier weiterhin die alten Rippenheizkörper mit Reflexfolie in den Nischen. Bei -10°C Außentemperatur, was generell bei uns eher selten vorkommt, benötige ich einen Vorlauf von 50°C. Bei 5°C Außentemperatur ~ 38°C Vorlauf. Somit haben wir uns auch für eine Wärmepumpe entschieden, die im Laufe des Jahres irgendwann kommt. Aber nun zum eigentlichen Thema…
Teileliste:
- Je nach Heizkörperbreite entsprechende Anzahl an PC Silent Lüftern. Ich habe mich für “ARCTIC P12 PWM PST” entschieden. Die gibt es sogar günstig im 5er-Pack und haben gleich Stecker zum in Reihe schalten. Bis 70% Lüfterleistung sind die kaum zu hören. Je mehr, desto mehr Luftumsatz
- 2x Winkelprofil in entsprechender Länge. Die Eloxierten aus Aluminium sehen meiner Meinung nach am besten aus. Im aktuellen Fall habe ich noch weiße aus Plastik, welche auch funktionieren.
- ESP-01 mit Programmiermodul (passender USB-Serial-Adapter)
- 12v Relaisplatine für ESP-01
- Dallas/DS18b20 Temperaturfühler mit 4,7k Ohm Widerstand
- 12V Netzteil
- Typische DIY Dinge wie Käbelchen, Kabelbinder, Isolierband und Heißkleber
- Gegebenenfalls einen 3D-Drucker zum Drucken des Gehäuses
→ weiter unten habe ich Bestellinks aufgeführt
Programmiert und verwaltet wird der ESP-01 über ESPHome in Homeassistant. Somit kann ich den aktuellen Stand sowie Vorlauftemperatur einsehen und die Lüfterzahl gegebenenfalls manuell steuern. In meinem Codebeispiel wird die Drehzahl bis 70% über eine kleine Formel abhängig der Vorlauftemperatur geregelt. Über Homeassistant Automationen lässt sich die Lüftung gegebenenfalls auf 100% steuern, damit der Raum noch schneller beheizt werden kann.
substitutions:
devicename: esp01-heizkoerper-fan
upper_devicename: ESP01-Heizkoerper-Fan
esphome:
name: $devicename
esp8266:
board: esp01_1m
restore_from_flash: true
preferences:
flash_write_interval: 3min
logger:
baud_rate: 0
debug:
update_interval: 5s
# Enable Home Assistant API
api:
encryption:
key: <encryption key>
ota:
password: "<OTA PAssword>"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
domain: <Heimdomain, zb ".fritz.box">
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: ${upper_devicename}
password: "<AP Wifi Password>"
captive_portal:
uart:
baud_rate: 9600
tx_pin: 1
switch:
- platform: template
id: FanRelais
internal: true
restore_state: on
restore_mode: RESTORE_DEFAULT_OFF
turn_on_action:
- uart.write: [0xA0, 0x01, 0x01, 0xA2]
turn_off_action:
- uart.write: [0xA0, 0x01, 0x00, 0xA1]
on_turn_on:
- logger.log: "Switch Turned On!"
on_turn_off:
- logger.log: "Switch Turned Off!"
- platform: restart
name: "${upper_devicename} Reset"
- platform: template
name: ${upper_devicename} ManualMode
id: ManualMode
optimistic: true
restore_state: on
#DS18B20 shared bus pin, needs external 4.7k ohm pull-up resistor to 3.3V
dallas:
pin: GPIO0
update_interval: 60s
output:
- platform: esp8266_pwm
pin: GPIO2
frequency: 20000 Hz
id: pwm_output
fan:
- platform: speed
output: pwm_output
name: ${upper_devicename} Ventilatoren
id: fans
on_turn_on:
- switch.turn_on:
id: FanRelais
on_turn_off:
- switch.turn_off:
id: FanRelais
on_speed_set:
- switch.turn_on:
id: FanRelais
#Math: ((3,3)*Temp)-(63,333)
sensor:
- platform: dallas
address: <Adresse des Temp-Sensors: ESP Flashen und aus dem Log die ID hierhin kopieren>
name: ${upper_devicename} Heizkörpertemperatur
id: temp
on_value:
then:
- logger.log: "Temp - speed Math"
- logger.log:
format: "ManualMode: %.1f"
args: [ 'id(ManualMode).state' ]
- if:
condition:
and:
- switch.is_off: ManualMode
- lambda: |-
int tmp = id(temp).state;
return (tmp >=23) and (tmp<40);
then:
- fan.turn_on:
id: fans
speed: !lambda |-
int fanvalue = ((4) * id(temp).raw_state) - 80;
return fanvalue;
- logger.log:
format: "Temp-Value: %.1f - Fan-Value %.1f"
args: [ 'id(temp).raw_state', 'id(fans).speed' ]
on_value_range:
- below: 23
then:
- logger.log: "below 23: Fan OFF"
- if:
condition:
- switch.is_off: ManualMode
then:
- fan.turn_off:
id: fans
- logger.log:
format: "Temp-Value: %.1f - Fan-Value: off"
args: [ 'id(temp).raw_state' ]
- above: 40
then:
- logger.log: "above 40: speed 70%"
- if:
condition:
- switch.is_off: ManualMode
then:
- fan.turn_on:
id: fans
speed: 70
- logger.log:
format: "Temp-Value: %.1f - Fan-Value %.1f"
args: [ 'id(temp).raw_state', 'id(fans).speed' ]
# - platform: debug
# free:
# name: "${upper_devicename} Heap Free"
# fragmentation:
# name: "${upper_devicename} Heap Fragmentation"
# block:
# name: "${upper_devicename} Heap Max Block"
# loop_time:
# name: "${upper_devicename} Loop Time"
- platform: uptime
id: Uptime
internal: true
update_interval: 60s
on_raw_value:
then:
- text_sensor.template.publish:
id: esp01_gas_uptime_human
state: !lambda |-
int seconds = round(id(Uptime).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(days ? to_string(days) + "d " : "") +
(hours ? to_string(hours) + "h " : "") +
(minutes ? to_string(minutes) + "m " : "") +
(to_string(seconds) + "s")
).c_str();
- platform: wifi_signal
name: ${upper_devicename} Signal Strength
time:
- platform: homeassistant
id: homeassistant_time
text_sensor:
- platform: version
name: ${upper_devicename} ESPHome Version
- platform: wifi_info
ip_address:
name: ${upper_devicename} IP Address
ssid:
name: ${upper_devicename} SSID
bssid:
name: ${upper_devicename} BSSID
- platform: template
id: esp01_gas_uptime_human
name: ${upper_devicename} Uptime Human Readable
icon: mdi:clock-start
- platform: debug
device:
name: "${upper_devicename} Device Info"
reset_reason:
name: "${upper_devicename} Reset Reason"
web_server: # creates a web server where you can access all this stuff without home assistant (good for debugging or working headless (no HA))
port: 80
include_internal: true
ota: true
binary_sensor: # exposes online status
- platform: status
name: "${upper_devicename} Status"
In den nächsten Tagen werde ich diesen Beitrag weiter ergänzen:
- aktueller Fortschritt
- 3D-Projekt des Gehäuses
Hier eine kleine Auflistung, wo ich die entsprechenden Bauteile bestellen könnt. Ich bestelle gerne bei Aliexpress, Ihr müsst das aber nicht! Andere “Chinashops” wie Banggood haben die teile bestimmt auch im Programm. also keine Werbung, nur Beispiele, keine affiliate Links! Zudem sind die unterschiedlichen Bauteilen bei unterschiedlichen Händlern vielleicht günstiger. Schaut selbst!
-
Lüfter: ARCTIC P12 PWM PST - PST = Verbindungstecker für den nächsten Lüfter in der Reihe - Hier als 5er-Pack
https://www.arctic.de/P12-PWM-PST/ACFAN00137A -
Winkelprofile: Ich habe damals nur die silbernen mit den gewünschten Abmessungen bekommen. Eloxiert hätte mir noch besser gefallen.
Winkelprofil Aluminium silber 15x15x1 mm, 2,6 m bei HORNBACH kaufen -
ESP-01S - Achtung, der ESP-01"S" ist der Nachfolger zum ESP-01 und sollte daher bevorzugt werden. Ich weiß jedoch selbst nicht, ob ich den neuern im Einsatz habe…
TZT ESP 01 ESP 01S ESP8266 serielle WIFI modell Authentizität Garantiert, Internet der sache|Integrierte Schaltkreise| - AliExpress
→ Bestellt das Programmiermodul gleich mit!
-
Relaisplatine: Zum einen zum Schalten der Lüfter über ein Relais, zum anderen um alles an 12V betreiben zu können. Achtet unbedingt darauf die 12V Variante zu bestellen!
ESP8266 ESP 01 5V 12V 1 Weg Kanal WiFi Relais Modul Dinge IOT Smart Home Fernbedienung Schalter Wireless modul Telefon APP|Integrierte Schaltkreise| - AliExpress
-
Temperatursensor für den Heizkörpervorlauf - Achtet auf die Länge des Kabels! ESP-01 an die Seite mit der nächsten Steckdose. Temperatursensor mit entsprechend langem Kabel an den Vorlauf.
1Pc DS1820 edelstahl Wasserdichte DS18b20 1m 3m 5m gewinde temperatur sonde temperatur sensor 18B20 kabel für Arduino| | - AliExpress -
4,7kOhm Widerstand zum betrieb des Temperatursensors
100 stücke Metall Film Widerstand 1/4W 0,25 W 0 ~ 10M Ohm 1% 100R 220R 1K 1,5 K 2,2 K 4,7 K 10K 22K 47K 100K 100 220 220 ohm 1M Widerstand|Widerstände| - AliExpress
Weitere Tipps, um damit Energie zu sparen:
- Die Heizkörper sollten soweit es geht frei stehen, damit die Wärme in den Raum abgestrahlt werden kann
- Zumindest die Konvektion, also die Luftzirkulation, sollte ungehindert stattfinden. Also Couch vom Heizkörper weg, damit zumindest 30cm platz sind.
- Keine Vorhänge bis zum Boden, sonst fängt sich die Wärme größtenteils im Bereich Fenster-Vorhang
WICHTIG: Das ganze ist Work in progress. So wie es da ist, funktioniert zumindest es bei mir und ich bin soweit zufrieden damit. Aktualisieren kann man die Funktionalität über OTA (Over the Air) in ESPHome. Falls ihr Verbesserungsideen habt, immer gerne her damit!