#KNX: climates with shared mode (airzone)

1 messages · Page 1 of 1 (latest)

faint pollen
#

Hi there!

I have an air conditioning system with Airzone, and I'm trying to integrate it with KNX climate entities.

The issue I'm encountering is when I attempt to turn off a zone without sending the HVAC mode to "off" for the entire unit.

Let me elaborate:

My air conditioning is connected via Airzone, which manages two separate zones. Each of these zones can be opened or closed independently of the other.

This means I can set my air conditioning to "cool" mode with one zone closed, but I cannot have two different modes active simultaneously because there's only a single air source.

If I configure both climate controller_mode_address (and its state address) to the same group address (as seems to be the correct approach), when I turn off one of the climate entities representing a zone, both zones will be turned off. This happens because the climate entity sends the "off" mode to the shared group address for controller_mode_address.

My goal is to turn "off" the controller_mode only when both climate entities are "off" on their respective on_off_address.

Could you help me figure out how to achieve this?

#
climate:
  - name: "clima_soggiorno"
    temperature_address: "13/3/5"
    target_temperature_address: "13/3/2"
    target_temperature_state_address: "13/3/3"
    humidity_state_address: "13/3/4"
    controller_mode_address: "13/0/0"
    controller_mode_state_address: "13/0/1"
    on_off_address: "13/3/0"
    on_off_state_address: "13/3/1"
    min_temp: 18
    max_temp: 30
    temperature_step: 0.5
    default_controller_mode: "off"
    fan_speed_mode: "percent"
    fan_speed_address: "13/0/15"
    fan_speed_state_address: "13/0/16"
  - name: "clima_studio"
    temperature_address: "13/4/5"
    target_temperature_address: "13/4/2"
    target_temperature_state_address: "13/4/3"
    humidity_state_address: "13/4/4"
    controller_mode_address: "13/0/0"
    controller_mode_state_address: "13/0/1"
    on_off_address: "13/4/0"
    on_off_state_address: "13/4/1"
    min_temp: 18
    max_temp: 30
    temperature_step: 0.5
    default_controller_mode: "off"
    fan_speed_mode: "percent"
    fan_speed_address: "13/0/15"
    fan_speed_state_address: "13/0/16"
minor slate
#

Hi 👋! You could just create an automation checking if both are "off" and knx.send the controller mode then. But do you even need that - doesn't the device turn itself off when both zones are "off"?

faint pollen
#

it's too late for automations because knx.climate already sent the telegram to turn off hvac mode turning off both knx.climate. Actually, when hvac mode turn off for both, only the one that turned it off has on_off to "off". The other one still has on_off to "on" and my device will go to "stop" (a sort of error mode) because it has device off with a zone that want air.

mode: off
zone_1: off
zone_2: on

I think that the knx.climate must have a on/off switch that turn only the on/off state without switching mode. It could be useful to keep previous mode memorized

minor slate
#

Then just remove the Mode address from your climate config.

faint pollen
#

and how I can switch the mode if I remove it?^

#

It should work as:

  • if one turn on "heat", all turns on "heat"
  • if all are off and one turn on "heat", only that one must turn on
  • if all are on and one turn off, only that one must turn off
  • if the last ono is turn off, hvac mode must turn off too
minor slate
#

Maybe with a select entity.

#

When you have both, mode and on-off, configured, I think it only uses on-off when you toggle the switch, doesn't it?

minor slate
#

Or see if the actuator supports it directly by some ETS config.

faint pollen
#

Separating on/off from controller_mode coud be enough. A true/false value could toggle this functionality.
So, applying it, i could choose to turn on/off the device without changing the mode.

#

In this way I can use an automation to turn hvac mode off when all entities are off

faint pollen
# minor slate Maybe with a `select` entity.

but knx.climate use GA directly. The problem is still there. knx.climate merges on_off and controller_mode. It doesn't let me turn only on_off. Every controller_mode that is not 'off' switch on_off to "on", and viceversa

minor slate
faint pollen
#

The problem is that there is no on/off switch element on knx.climate card. So, the only way to turn off the entity is changing the mode to off

faint pollen
minor slate
#

Hm... I think there was a on-off toggle in the standard climate entity Ui once. Maybe this was changed?!

minor slate
faint pollen
minor slate
#

I can't help you changing UI...

#

But if the mode selector is for multiple entities, then imho it shouldn't be part of a single entity anyway.

#

so a separate select would fit nicely

faint pollen
#

maybe I can remove on/off address and add another 1.001 address, like swing. Or something that appears in UI

minor slate
#

just use a second ui element 🤷

faint pollen
#

it's not an option. The solution that I see is to set a boolean flag that separate on_off from controller_mode

minor slate
#

Hm... well then. Maybe you can just do it by changing order - so if on-off is configured use it, if not use mode.

#

Then, if on-off is ON use the mode value.

#

... or set it if it's OFF

faint pollen
#

I cloned the repo folder and made the change, but I'm having problems to let HA recognize the custom_components

minor slate
faint pollen
minor slate
#

I'd recommend to set up a proper dev installation for experimentation. Has dev docs should cover everything you need.

faint pollen
#

but
Integration error: custom_knx - Integration 'custom_knx' not found. is still there

minor slate
#

Don't rename it, then it should just replace the core version. But tbh I never used custom components, so not speaking from experience

faint pollen
minor slate
faint pollen
minor slate
#

"Development Workflow" would be what I'd read first.

faint pollen
#

I don't need to run a dev environment. The change that I made is very simple. I added a boolean in conf, and change the if statement inside sync_hvac

minor slate
#

There's a chapter "Test Core integration changes in your production Home Assistant environment" 🤷

faint pollen
faint pollen
#

I solved in another way.
My KNX is under 1home server, that allows to create "entity" that will be exposed to Matter.
The thermostat from 1home server works fine. If I turn off it, hvac mode will not be changed. So I can set both my zone, if I change an hvac mode to cool or heat they will change both, but, if I turn off one, it will switch only my on/off state.
Now I only need an automation that check that both zone states to turn off hvac mode if both zone are off.

I think that this behavior(turning off only on_off and not hvac) would be perfect for your integration. Maybe with the boolean flag that I suggested to you

minor slate