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

Could you display it in the code editor? Here is my example:

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

Make sure that you have the right entity type for each element.

Yes, I can display code editor. what shall I put in climateEntity? I have only below entities coming from integration.

Climate entity is needed for this card. And seems that the zehnder integration does not have it. You can create your own climate entity using the template (Generic) thermostat:

I would just not configure there any real switch from the comfoair as it is not a usual heating device.

Hi all, I’m looking for the uart.write commands to change the ventilationlevel of a CA350, to use in my esphome yaml file e.g. :

on_press:
  then:
     - uart.write: [0x00, 0x04, ...]

can someone help me with this?

All commands are described in the protocol documentation hacomfoairmqtt/docs/Protokollbeschreibung_ComfoAir.pdf at 75f37bab7c8ff93f24dc42c50f77f3dfe1e1b572 · adorobis/hacomfoairmqtt · GitHub

1 Like

thx! this is what I was looking for but couldn’t find it.
the pdf isn’t complete it seems, it’s missing the list of commands, but I’ve found it online.

edit:
It works, thx again.

Good morning, does anynoe know why the summer mode is always on althought external temperature is lower than inside temp? Shuoldn’t it be turned off?

It changes to winter mode only after for a few days temperature is low enough. I could not find the exact algorithm for that though.

Thanks for answering that makes sense. Will keep monitoring in the upcoming weeks when temperatures are excpected to decreaase quite a lot.

Try to set your target temperature higher. Its currently on 21C. I have mine on 23, while I had it previously set on 28 to get out of summer mode.

But is everything properly connected? Return is 21 and Exhaust is 21.5? Sounds strange to me. Exhaust should be lower then return, not higher.

[message edited, used incorrect terminology]

I will try to set it up to 25 and see if something changes.
Why do you think it is not properly wired?
Supply was 21, inside air temp was around 22.5/23 so exhaust was 21,5.
I believe exhaust is higher than supply during autumn/winter while during summer exhaust is definitely lower than supply. Doesn’t it make sense?

EDIT: I found out the preheating state is keep going on and off after few seconds, this is the screenshot of the last 1 hour and a half, crazy! Could this prevent the normal function of summer/winter mode?

Is there a way to check if it is just a bug or a mechanical behaviour?

My unit is installed on a Shelly SmartPlug S, there are also other power plugs which can measure power usage. If preheating switches on you should see a quite sharp increase in electrical power demand.

I think something is incorrectly setup either with the unit itself or with pipes, because the temperature going into the house is only one degree higher then the outside temperature (17 → 18)

I do not have a nice graphic yet but your air which blows inside the house (supply) should be above 20 degrees if your return is 21 and not 18. And like I said, the air which you blow out to the outside (exhaust) is actually hotter, it should be colder. Now you are heating up the outside of the house which is kinda strange.

I used the wrong terminology in my earlier message. Where I said supply should be “return”. It should look like this, an actual screenshot from my current values where exhaust is barely higher then outside temperature and inside (supply) is almost the same as return;

Although you actually want a situation like this in summer of course, getting heat out of the house and cold air inside.

The thing is, it looks on your graphic that the bypass is NOT active and heat exchange is taking place. But the sensors tell a different story. All in all very confusing.

Oh… And… Why is the filter indicator indicating red? Also known as “filter problem”.

I second this. You can’t have exhaust temperature increased by air with lower temperature. Unless there is something else going on e.g. the exhaust pipe is heated by some additional heat source. Or simply the temperature sensors are wrongly connected to the control board in the unit - someone had wrongly connected bypass motor so this might be similar issue just with different wires. And here my current situation - exhaust air (the flow going out of the unit) is always cooled down by intake air (the air going from ourside to the unit) and supply air (the air going into the hous from the unit) is heated up by return air (air going from the house to the unit). Of course if the temperature outdoors is higher than in the house the exchange is the opposite,
image

Thank you all for answering.
Can you suggest how to check proper connections?
I believe it’s not the esp connection wrong but the unit itself wrongly connected at this point :frowning: I’ve a comfoair 180 machine.
The filter is red as I need to change it, ordered the new one yesterday.
Here’s my setup in the card, looks ok to you?

type: custom:hacomfoairmqtt-card
climateEntity: climate.esphome_08_b6_1f_b8_17_60_climate
outsideTempSensor: sensor.outside_air_temperature
exhaustTempSensor: sensor.exhaust_air_temperature
returnTempSensor: sensor.return_air_temperature
supplyTempSensor: sensor.supply_air_temperature
filterStatusSensor: binary_sensor.is_filter_full
bypassValveSensor: binary_sensor.bypass_valve_open
summerModeSensor: binary_sensor.summer_mode
returnAirLevelSensor: null
supplyAirLevelSensor: sensor.supply_air_level
preheatingStatusSensor: binary_sensor.preheating_state
card_mod:
  style: |
    ha-card{
      padding-left: 55px;
    }

And here’s what I get from the esp via webserver:

I would open the unit, locate the temperature sensors and heat them up e.g. with hand and observe the temp reading. You just need to identify which sensor is in which duct - should not be difficult :slight_smile:
You can also consult the manual for proper sensors connections.

Looking at your temperatures and knowing how the system works I bet that those are the right names for each sensor:

I believe this one could be helpful:

Looks ok to me, assuming the sensor names are really representing what they are measuring.

Just checked the wiring inside the machine and everything looks as described in the manual, thanks for sharing!

This is the image right now but I have different sensor than you described. Do you think I should invert those sensor in the card? Maybe the esp is addressing the right sensor but returning the wrong name?

Plus I have this enthalphy sensor I don’t understand what it is for but looks like there is none:

Now it looks more like it makes sense. I’ve observed that the built in sensors are not very accurate and 0.5 degree Celsius difference might be caused by that.

Unfortunately I can’t help here, I’m using the python code running on a PC. I would just do as I’ve suggested earlier - heat up sensors one by one and observe which one is reacting in HA/Esp.

I believe you can ignore it. It is only for units that are equipped with enthalpic heat exchanger which preserves humidity as well.

Cool thanks, checked all the sensors manually and as described in the picture I’ve different sensors in different position althought it makes much more sense with these external temp. Summer mode is still on though.
Do you suggest to change the entities to match the picture you draw?

No, we assumed your piping or your sensors are wrongly configured like that drawing, it should not be configured like that.

But you are now showing values of a house which probably got heated up by the sun. Earlier you showed a screenshot in Italian language. I think they have a different definition of winter there in the south.

The screenshot of the live log which you posted earlier cuts of right at the point where the important data comes, 16.5 Outside it says, but what are the other values :slight_smile:


You have no enthalpy unit? Thats fine, me neither. This only strengths my thoughts that you should get 87%+ efficiency.

@nldav thanks for following up.
I’m getting more confused now.
What I can say is that the apartment indeed gets heaten up by the sun as it faces South and got sunshine almost all day long.

How can I check the piping etc?
The unit was installed 3 years ago by a Zehnder certified installer.
What you suggest to ask them to check?
They will be here for maintainance in one month or so.

The logs go very fast so I tried to get the most data I could :smiley:

|18:24:13|[W]|[component:238]|Components should block for at most 30 ms.|
| --- | --- | --- | --- |
|18:24:13|[D]|[switch:012]|'LED Blue Light' Turning ON.|
|18:24:13|[D]|[text_sensor:064]|'filter_status': Sending state 'Full'|
|18:24:13|[W]|[comfoair:389]|ComfoAir Checksum doesn't match: 0x00!=0xD8 (7 E6 CA 00 19 34 90 00 00)|
|18:24:13|[D]|[sensor:094]|'bypass_factor': Sending state 5.00000 with 0 decimals of accuracy|
|18:24:13|[D]|[sensor:094]|'bypass_step': Sending state 0.00000 with 0 decimals of accuracy|
|18:24:13|[D]|[sensor:094]|'bypass_correction': Sending state 5.00000 with 0 decimals of accuracy|
|18:24:14|[D]|[sensor:094]|'bypass_factor': Sending state 5.00000 with 0 decimals of accuracy|
|18:24:14|[D]|[sensor:094]|'bypass_step': Sending state 0.00000 with 0 decimals of accuracy|
|18:24:14|[D]|[sensor:094]|'bypass_correction': Sending state 5.00000 with 0 decimals of accuracy|
|18:24:14|[D]|[climate:396]|'' - Sending state:|
|18:24:14|[D]|[climate:399]|Mode: FAN_ONLY|
|18:24:14|[D]|[climate:404]|Fan Mode: LOW|
|18:24:14|[D]|[climate:419]|Current Temperature: 23.00°C|
|18:24:14|[D]|[climate:425]|Target Temperature: 24.00°C|
|18:24:14|[D]|[sensor:094]|'outside_air_temperature': Sending state 19.00000 °C with 1 decimals of accuracy|
|18:24:14|[D]|[sensor:094]|'supply_air_temperature': Sending state 23.50000 °C with 1 decimals of accuracy|
|18:24:14|[D]|[sensor:094]|'return_air_temperature': Sending state 23.00000 °C with 1 decimals of accuracy|
|18:24:14|[D]|[sensor:094]|'exhaust_air_temperature': Sending state 21.50000 °C with 1 decimals of accuracy|
|18:24:14|[W]|[component:237]||

Now it’s 6 pm and hereunder the values I get:
Screenshot 2024-10-25 alle 18.25.38

One last thing: how can I measure the 87+% efficiency you mentioned? I have no clue about my actual efficiency level and where to gather this info from.