Hallo,
wer hat einen aroVair schon erfolgreich in HA/ESPHome integriert?
Mit Hilfe von ein wenig eigener Recherche und Claude hab ich eine yaml für ESPHome schreiben lassen mit den Registern, Sensoren etc und hab einen ESP8266 über einen RS485-Wandler (MAX485) an den Modbus (CN23/PQE) angeschlossen aber kriege keinerlei Signale.
Vielleicht hatte ja schon jemand anders Erfolg und hat Tipps?
Ok, kurz nach dem Posten habe ich es zum Laufen gekriegt: Man muss am Gerät die Modbus Adresse (ENC1) auf 0 stellen, aber im yaml “address” auf 1 (statt auch auf 0). Ich schreibe gleich noch ausführlicher wie ich es angeschlossen habe.
Hier mal alles zusammengefasst:
Was man an Hardware braucht (ca. 5-10€)
Wie man es verkabelt
VCC (MAX485) —> 5V (ESP)
GND (MAX485) —> GND (ESP)
R0 (MAX485) —> RX / GPIO3 (ESP)
DI (MAX485) —> TX / GPIO1 (ESP)
RE und DE (MAX485) —> D2 / GPIO4 (beide Pins vom MAX485 müssen an einen Pin am ESP!)
E (aroVair) —> GND (ESP) (gemeinsam mit dem GND vom MAX485)
Q (aroVair) —> B (MAX485)
P (aroVair) —> A (MAX485)
Das Bedienteil von Vaillant habe ich abgesteckt, damit es nicht meine Einstellungen überschreibt.
Wichtig: ENC1 am aroVair muss auf 0 stehen!
Welche Config man für ESP Home benötigt
esphome:
name: arovair-konvektor
friendly_name: aroVair Konvektor
# --- ESP8266 (z.B. Wemos D1 mini, NodeMCU) ---
esp8266:
board: nodemcuv2 # ggf. anpassen, z.B. "d1_mini" für Wemos D1 mini
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
min_auth_mode: WPA2
ap:
ssid: arovair-ssid
password: !secret arovair_konvektor__wifi_pw
api:
encryption:
key: !secret arovair_konvektor__encryption_key
logger:
baud_rate: 0 # WICHTIG bei ESP8266 + Hardware-UART: Logger darf nicht über
# dieselbe UART senden, sonst Konflikt mit Modbus-Daten
ota:
platform: esphome
password: !secret arovair_konvektor__ota_password
captive_portal:
# ---------------------------------------------------------------------------
# UART zum RS485-Wandler (z.B. MAX485-Modul)
# ESP8266 hat nur eine nutzbare Hardware-UART für Modbus:
# entweder GPIO1(TX)/GPIO3(RX) -> das ist die "normale" UART0 (Standard-Pins)
# oder GPIO15(TX)/GPIO13(RX) -> UART0 auf alternative Pins umgeschaltet
# GPIO1/GPIO3 sind zugleich die Pins, über die geflasht wird - beim Flashen
# ggf. den RS485-Wandler kurz abstecken, falls es Probleme gibt.
# ---------------------------------------------------------------------------
uart:
id: mod_uart
tx_pin: GPIO1
rx_pin: GPIO3
baud_rate: 9600 # laut PDF S.5: 9600, N, 8, 1
stop_bits: 1
modbus:
id: modbus1
flow_control_pin: GPIO4 # DE/RE-Pin des MAX485-Moduls (das ARCELI-Modul
# hat KEINEN Auto-Flow, dieser Pin ist zwingend nötig)
modbus_controller:
- id: arovair
address: 1 # per DIP-Schalter ENC1 am Gerät eingestellte Adresse (1-63)
modbus_id: modbus1
setup_priority: -10
update_interval: 10s
# ---------------------------------------------------------------------------
# Sensoren (nur lesbar)
# ---------------------------------------------------------------------------
sensor:
- platform: modbus_controller
modbus_controller_id: arovair
id: raumtemperatur
name: "aroVair Raumtemperatur T1"
address: 1606
register_type: holding
value_type: U_WORD
unit_of_measurement: "°C"
accuracy_decimals: 1
filters:
# laut PDF S.7: Rohwert = (T + 5) * 2 + 30 => T = (Rohwert - 30) / 2 - 5
- lambda: return (x - 30.0) / 2.0 - 5.0;
- platform: modbus_controller
modbus_controller_id: arovair
id: kaltwasser_fuehler
name: "aroVair Kaltwasserfühler T2-C"
address: 1607
register_type: holding
value_type: U_WORD
unit_of_measurement: "°C"
accuracy_decimals: 1
filters:
- lambda: return (x - 30.0) / 2.0 - 5.0;
- platform: modbus_controller
modbus_controller_id: arovair
id: warmwasser_fuehler
name: "aroVair Warmwasserfühler T2-H"
address: 1608
register_type: holding
value_type: U_WORD
unit_of_measurement: "°C"
accuracy_decimals: 1
filters:
- lambda: return (x - 30.0) / 2.0 - 5.0;
- platform: modbus_controller
modbus_controller_id: arovair
id: firmware_version
name: "aroVair Firmware Version"
address: 1620
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: arovair
id: dip_info_1
name: "aroVair DIP-Info 1"
address: 1618
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: arovair
id: dip_info_2
name: "aroVair DIP-Info 2 / Adresse"
address: 1619
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
# ---------------------------------------------------------------------------
# Binäre Zustände (Pumpe, Sperren, Fehler) über Bitmasken aus Register 1613/1614
# ---------------------------------------------------------------------------
binary_sensor:
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Ablaufpumpe aktiv"
register_type: holding
address: 1613
bitmask: 0x1
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Fehler T1-Fühler"
register_type: holding
address: 1614
bitmask: 0x4 # Bit2 = E2 T1 sensor error
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Fehler EEPROM"
register_type: holding
address: 1614
bitmask: 0x80 # Bit7 = E7 EEPROM
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Fehler TA-Fühler"
register_type: holding
address: 1614
bitmask: 0x8 # Bit3 = E3 TA sensor error
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Fehler T2B-Fühler"
register_type: holding
address: 1614
bitmask: 0x10 # Bit4 = E4 T2B sensor error
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Fehler Lüfterdrehzahl"
register_type: holding
address: 1614
bitmask: 0x100 # Bit8 = E8 fan speed
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Fehler Wasserstand"
register_type: holding
address: 1614
bitmask: 0x4000 # Bit14 = E14 water level
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Sperre Fernbedienung"
register_type: holding
address: 1612
bitmask: 0x1 # Bit0 = Fernbedienungs-Sperre
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Sperre Kühlen"
register_type: holding
address: 1612
bitmask: 0x2 # Bit1 = Kühlen-Sperre
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Sperre Heizen"
register_type: holding
address: 1612
bitmask: 0x4 # Bit2 = Heizen-Sperre
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Kaltluftschutz"
register_type: holding
address: 1615
bitmask: 0x2 # Bit1 = Kaltluftschutz
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Frostschutz"
register_type: holding
address: 1617
bitmask: 0x1 # Bit0 = Frostschutz
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Temperatur außer Bereich"
register_type: holding
address: 1617
bitmask: 0x2 # Bit1 = Temp. außerhalb Bereich
- platform: modbus_controller
modbus_controller_id: arovair
name: "aroVair Fernabschaltung"
register_type: holding
address: 1617
bitmask: 0x4 # Bit2 = Fernabschaltung
# ---------------------------------------------------------------------------
# Schreibbare Werte: Betriebsart, Lüfterstufe, Solltemperatur, Timer
# ---------------------------------------------------------------------------
select:
- platform: modbus_controller
modbus_controller_id: arovair
id: betriebsart
name: "aroVair Betriebsart"
address: 1601
value_type: U_WORD
optionsmap:
"Aus": 0
"Nur Lüfter": 1
"Kühlen": 2
"Heizen": 3
"Entfeuchten": 4
"Automatik": 5
- platform: modbus_controller
modbus_controller_id: arovair
id: luefterstufe
name: "aroVair Lüfterstufe"
address: 1603
value_type: U_WORD
optionsmap:
"Niedrig": 2
"Mittel": 3
"Hoch": 4
"Automatik": 5
number:
- platform: modbus_controller
modbus_controller_id: arovair
id: solltemperatur
name: "aroVair Solltemperatur"
address: 1602
value_type: U_WORD
unit_of_measurement: "°C"
min_value: 17
max_value: 30
step: 1
- platform: modbus_controller
modbus_controller_id: arovair
id: timer_start
name: "aroVair Timer Start"
address: 1604
value_type: U_WORD
min_value: 0
max_value: 96
step: 1
# 0 = kein Timer, sonst 24h-Raster (jede Einheit = 15 Min.)
- platform: modbus_controller
modbus_controller_id: arovair
id: timer_stopp
name: "aroVair Timer Stopp"
address: 1605
value_type: U_WORD
min_value: 0
max_value: 96
step: 1
# 0 = kein Timer, sonst 24h-Raster (jede Einheit = 15 Min.)
# ---------------------------------------------------------------------------
# DE/RE-Verdrahtung des MAX485-Moduls:
# Manche Module haben zwei getrennte Pins DE und RE - dann beide miteinander
# verbinden und gemeinsam an GPIO4 (oder einen anderen freien GPIO) anschließen.
# Alternativ GPIO0 oder GPIO2 verwenden, aber Vorsicht: das sind Boot-Mode-Pins,
# die beim Start einen bestimmten Pegel brauchen - GPIO4/GPIO5 sind unkritischer.
# ---------------------------------------------------------------------------
derm1
2. September 2026 um 14:54
4
Hi. Ich überlege aktuell auch in meinem 2 Vaillant Gebläsekonvektoren zu installieren. Ich bin eigentlich nur stiller Mitleser hier, habe mich jetzt aber regisitriert weil ich mich für deine Arbeit bedanken wollte.
Kannst du mir evtl generell deine Erfahrung zum heizen mit den Vaillant Fan Coils mitteilen?
Der Vorteil von dem Gebläsekonvektor ist, dass es recht schnell warm wird durch die Lüfter und man natürlich auch kühlen kann.
Nachteil ist natürlich, dass es durch die Lüfter auch lauter ist als ein normaler Heizkörper.
Aber mit Wärmepumpe und niedriger Vorlauftemperatur ist so ein Teil schon sehr gut.
Wenn du nicht kühlen willst und auch ne WP, schau mal ob es Heizkörper gibt, die auch mit niedrigen Temperaturen gut heizen.