Zehnder ComfoAir CA350 integration via serial connection (RS232) and MQTT

That’s exactly what I thought I’m starting to think it might be the RS232 converter dead or faulty. I bought it from cheap chinese supplier :frowning: Will buy a new one and let you, thanks in the meantime.

Pleas help me stop the fan
Hi everyone. I finally managed to connect my Comfoair 200 to HA, using a raspberry pi to collect data from machine and sendind to HAOSS .
As you see from screenshots, I can get almost everyting work, exept that I can’t stop the fan: I can increase / decrease speed, but I can’t stop it.
I think I read carefully enough this page,I think I disconnected the controller(hope photos are clear enough)
Maybe it doesn’t completely stop? Can you help me?
Second question, please: my lovelace card doesn’t display temperature: can you help me to find what is my error?
Thank you very much




Great work! Comfoair fans can’t be stopped. They have a minimum speed, usually 15% of max.

Show your card config - you have to configure which entities are providing respective temps. My example here:

type: custom:hacomfoairmqtt-card
climateEntity: climate.ca350_climate
outsideTempSensor: sensor.esp01_temperature_3
exhaustTempSensor: sensor.esp01_temperature_4
returnTempSensor: sensor.esp01_temperature_2
supplyTempSensor: sensor.esp01_temperature_1
filterStatusSensor: binary_sensor.ca350_filter_status
bypassValveSensor: binary_sensor.ca350_bypass_valve
summerModeSensor: binary_sensor.ca350_summer_mode
returnAirLevelSensor: sensor.ca350_return_air_level
supplyAirLevelSensor: sensor.ca350_supply_air_level
preheatingStatusSensor: binary_sensor.ca350_preheating_status
card_mod:
  style: |
    ha-card{
      padding-left: 50px;
    }

Thank you so much for your quick reply. I didn’t understand I had to edit card config, so I didn’t changed anything. I’ll do ASAP
Thank you again for your help and your great great work

Hi all,

A hardware solution without soldering is the M5stack “Atom ESP32 lite” or “Atom S3 lite” + RS232 base: m5-docs for about 20 - 25 euro’s

The RS232base has a MAX232 + AOZ1282CI buck-converter builtin. My Zehnder WHR930 has an RJ45 RS232 connector delivering 20V, and I can confirm it works fine to power the RS232 base. The RS232 base says 12V on the case, however the AOZ1282CI buck converter allows voltage inputs up to 36V. Another user has tested it with 24V: Brink Flair 325 Heat recovery unit ESPhome modbus integration (~$5) - #63 by Fonske

With RJ45, you just have to connect Gnd, +20V, RX, TX from RJ45 cable to the RS232 base, flash software, and done.

With DB9, you’ll need an additional power supply (as described at GitHub - tieskuh/esphome-comfoair: ESPHome configuration to drive Zehnder WHR 950).

ESPhome software tested: GitHub - wichers/esphome-comfoair: ESPHome configuration to drive Zehnder ComfoAir devices.

==========================================
ESPhome configuration for Atom ESP32 lite:
==========================================
esp32:
  board: esp32dev
  framework:
    type: arduino

uart:
  id: uart_bus
  rx_pin: 22
  tx_pin: 19
  baud_rate: 9600

==========================================
ESPhome configuration for Atom S3 lite:
==========================================
esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino

uart:
  id: uart_bus
  baud_rate: 9600
  tx_pin: 6
  rx_pin: 5
==========================================


2 Likes

Cool, thanks for sharing. This looks like a neat solution! Could you please share which entities for control are available in HA with wichers esphome component?

Hi all,

I’m trying to setup with a serial-ethernet-converter USR-TCP232-302.
I follow the quick start as Docker container but I can’t achieve connection ?

Previously I use a USB-RS232 adapter on domoticz, so I’m sure RJ45-DB9 cable is OK.

image

Have you an idea?

I think it supports just the basic controls: fan speed and target temperature.

However I assume any software that works with an ESP + MAX232 should work with the RS232 base.

Does other software support more controls?

Yes, my original integration via python scripts gives a few more:
image
Additionally you can configure in the settings file the fan speeds for each ventilation level. I thought this is not needed to be done via HA as this should not be changed too often.

I’m thinking of moving to the esp rs board but in this case I would use it only as a wifi-rs232 bridge and run my python on the server. This way I could get rid of the cable between comfoair and my nas (where the python script runs at the moment).

Ok cool! Not sure if these are all implemented in the ESPhome version…

Using it as wifi-rs232 bridge should work. Perhaps also possible to run the python on the ESP.

Hello there, I would like to thank you all very very much and especially @julianpas who supported also via private messages.
Please let me share my basic schematic for those like me that are no experts but just hobbists, I believe this would be beneficial for who is interested.
My machine: Comfoair 180
Controller: Comfosense
Adapter: green RS232 plug
DC stepdown to 5V
Dual RS232-TTL interface
Code: look for esphome-comfoair by @julianpas on github
I proxied the Comnfosense along with the ESP32 (wroom32D) so I can both control my unit either from the ESP or the Comfosense wall mounted.

4 Likes

OK, so I managed to get everything up and running with a docker container using socat on a serial to net adapter. The one thing that threw me off is the pinout in the description, it has the wires of TX and RX reversed. Correct pinout is (at least when using a male DP9 connector):
rj45 pin 2 → rs232 pin 2
rj45 pin 3 → rs232 pin 3
rj45 pin 8 → rs232 pin 5

@adorobis : I would like to help with getting the commands to the unit out in real time instead of waiting on the timer to pass, however I’m not proficient in Python. Is there anything I can do to help?

The control commands are already send straight on getting them from mqtt, not in a loop. Also right after sending the command a respective state refresh command is being sent. But it seems that it takes Summer time before the comfoair reflects the new state hence the impression that it is only refreshed in the time loop. I didn’t have more patience to play with it to figure out how to optimize that. But any suggestions are more than welcome.

1 Like

One thing that is not working in my set-up is the Bypass Valve icon, it does not change regardelss of the binary_sensor value:


When I click on the icon, the correct state for the past 24 hours is present.
My card config is:

type: custom:hacomfoairmqtt-card
climateEntity: climate.whr950_climate
outsideTempSensor: sensor.whr950_outside_temperature
exhaustTempSensor: sensor.whr950_exhaust_temperature
returnTempSensor: sensor.whr950_return_temperature
supplyTempSensor: sensor.whr950_supply_temperature
filterStatusSensor: binary_sensor.whr950_filter_status
bypassValveSensor: binary_sensor.whr950_bypass_valve
summerModeSensor: binary_sensor.whr950_summer_mode
returnAirLevelSensor: sensor.whr950_return_air_level
supplyAirLevelSensor: sensor.whr950_supply_air_level
preheatingStatusSensor: binary_sensor.whr950_preheating_status

How can I fix this issue?

Same issue here. Have not noticed that before. I’d suggest to open an issue on author’s repo:

1 Like

HI,

I see this warning, do I need to change something?

02-09-2024 20:49:43 WARNING: Expected return not found
02-09-2024 20:49:43 WARNING: function set_ewt could not get serial data, retrying in 2 seconds
02-09-2024 20:49:47 WARNING: Expected return not found
02-09-2024 20:49:47 WARNING: EWT Settings out of range, correcting to minimal temperature values

Logger: homeassistant.components.mqtt.number
Source: components/mqtt/number.py:182
integration: MQTT (documentation, issues)
First occurred: 10:49:40 PM (2 occurrences)
Last logged: 10:49:40 PM

  • Invalid value for number.ca350_ewt_low_temperature: -16.5 (range 0.0 - 15.0)
  • Invalid value for number.ca350_ewt_high_temperature: -16.5 (range 10.0 - 25.0)

Are you using the EWT (ground heater) integrated with your ventilation? If not you can ignore those messages, I’d need to make this configurable and correct the code a bit to avoid the out of range values being sent to HA.

No sir, I don’t have it. Thank you for your help