Flexit Nordic (BACnet) - Roadmap & ideas

@lellky and I are currently working on figuring out how to further expand the Flexit Nordic (BACnet) integration.

Our current plan is to:

  1. add support for the following sensors:
  • outside air, supply air, extract air and exhaust air temperatures,
  • humidity,
  • CO2,
  • fan speeds,
  • heat recovery mode and speed,
  • power consumption,
  • additional heating status,
  • air filter status.
  1. Implement services for:
  • triggering boost mode (with configurable timeout),
  • triggering fireplace mode (with configurable timeout),
  • triggering kitchen hood mode,
  • reset filter status,
  • graceful shut down of the unit (e.g. to replace filters),
  • enable/disable electric heater.
  1. Make sure that any optional accessories/sensors are correctly rendered in the UI widgets, for example room temperature.

Any ideas and suggestions are welcome.

4 Likes

One thing we have talked about is the naming of the device and entities. We have talked to Flexit and learned that we can extract the model name from the current device name i.e. the device name hvacfnct21y_a tells us it is in fact a Nordic series device. Also we have learned that we can extract the model from the serial number i.e. the serial number 800130-002967 corresponds to the model S4 RER.

So what this means is that we can decide on what to call the device and the entities in home assistant after implementing it in the flexit_bacnet library.

Please also add heat exchanger efficiency to the sensors

Yes, it will be added

Very good, and thanks for opening this thread!

I am using this integration, and even though this early functionality is quite restricted it is working really well. I have a node-red workflow to monitor and control the air quality using a PI controller that I have mentioned elsewhere. I know it is possible to add CO2 sensors to the Flexit, but I already have 2 external CO2 sensors. My solution cannot control the fan speed directly, and uses the preset modes instead, so it will not be as good as a built in CO2 sensor, but I have it working quite well, I think! The example in the figure shows that the load (calculated by the PI controller) follows the CO2 concentration well and I used this to change the preset mode appropriately.

More on my implementation here. It will be updated shortly as I have made some considerable improvements since writing the article.

2 Likes

Hello!

First of all thank you for the simple and easy integration. I have really been one waiting for this integration. I am a big fan of utilizing the HomeKit bridge plugin, which I have connected to the Flexit Bacnet plugin. Right now the functionality in HomeKit is very simple. The temperature is showing at 0.0°C and I have a nordic S4 and it says “cooling down to 18°C” which is the set-point temp I have on my system. My system doesn’t even have a cooling mode/battery, only the normal FTX system.

Other than that great implementation, can’t wait for what’s to come!

Could you add support for the auxiliary heater in some systems? ie reading off how much it is on, or provide energy use, but percentage on would do.

Adding sensors for the aux heater and many other sensors was just merged and will be released in an upcoming version of Home Assistant :slight_smile:

Hi. Thank you for perfect job. I would like to ask, how to us it for Flexit Nordic CL2. It wont work, f.e. when I change the Preset (i can see just away, home, boost, but in reality I have HOME, AWAY, HIGHT, FIREPLACE, CALENDAR mode), after few secont return firt option = away. Sorry for stupid question, Iam newbie in that topic. Thank you vey much.

Hello!

There are no stupid questions.

It’s hard for me to say why it isn’t working. Maybe that model is special in some way. Or the integration is broken in some way. Try to set mode HOME in the flexit app, and then set mode AWAY in Home Assistant. What happens?

Do you have any messages in the logs?

Wow great work with the integration so far! I was looking at the code and it’s missing the fan entities and speed control for them if I’m not mistaken. I still have these in my old PR that got obsolete. Is someone working on these or could I make a PR about these? And sorry for not being active after you merged the PR @lellky.

Nice o hear from you!

If you mean the fan rpm’s and the speed control, it’s there.

The beta was released yesterday, and I think all my changes will be coming in the release 2024-02-07.

Cheers!

Okay good to hear! Great that you got around finishing this stuff. Thanks for your effort!

What are still the missing functionality from this integration? I’ll also try this myself soon and see is anything important missing.

Great update! I still have the problem that room temperature is at 0°C on my Nordic S4 unit, this is due to it only having four sensors:
The supply air sensor (B1) registers the temperature
after the heating battery.
The extract air sensor (B3/H1) registers the temperature and relative humidity of
the extract air.
The outdoor air sensor (B4) registers the temperature of the outdoor air.
The exhaust air sensor (B6) registers the temperature of the exhaust air.

Therfore a way around this might be to use the “extract air temperature” as the de facto room temp.

@KarolSvaty would you be able to run this GitHub - piotrbulinski/bacnet_dump: The tool to dump BACnet device objects with your unit and provide the output? I don’t have access to any other unit than CL4, so it would be of great help if community could help me build a database of bacnet objects for flexit devices.

@alexderosa this is great idea! @lellky I think we could do that in the HA integration, right?

@jeremyc this is impressive. Great job! The underlying flexit_bacnet python library already exposes the control over fan speed set points (https://github.com/piotrbulinski/flexit_bacnet/blob/23b3ebeed6f367371f53a1155c303c8fd2a02cbc/flexit_bacnet/device.py#L284), so we just need to convince @lellky to expose those to you as services in HA :slight_smile:

I have already tried fiddling with this. Actually I think numbers could be usable for this:

FlexitNumberEntityDescription(
        key="fan_setpoint_supply_air_fire",
        translation_key="fan_setpoint_supply_air_fire",
        device_class=NumberDeviceClass.POWER_FACTOR,
        native_min_value=0,
        native_max_value=100,
        native_step=1,
        mode=NumberMode.SLIDER,
        unit_of_measurement=PERCENTAGE,
        native_value_fn=lambda data: data.fan_setpoint_supply_air_fire,
    )

This will present a slider in the UI and there would be a slider for all fan set points. One thing to note is that when the HVAC is installed, all air inlets and outlets are measured and the set points are set by the installer. I don’t know if regular users should fiddle with this?

Fan speeds are adjusted automatically anyways if you have wireless Flexit humidity/CO2 sensors and those values are exposed in the basic user interface in the official Flexi Go app for adjustment. IMO we should expose them in whatever way is the simplest to integrate with.

This is what it looks like with numbers.

In the departement of naming things: how should we translate the strings? I.e. the properties are:

fan_setpoint_supply_air_home
fan_setpoint_extract_air_home
fan_setpoint_supply_air_high
fan_setpoint_extract_air_high
fan_setpoint_supply_air_away
fan_setpoint_extract_air_away
fan_setpoint_supply_air_cooker
fan_setpoint_extract_air_cooker
fan_setpoint_supply_air_fire
fan_setpoint_extract_air_fire

I’m thinking “Home fan setpoint, supply air” and “Home fan setpoint, extract air” or “Fan setpoint, Home, supply air” and so on. In this way they will be presented in order. Oh, wait a minute! They are probably sorted by their keys… And the keys are the same as the properties in the flexit lib. We should probably not rename them.

Any thoughts?