I'll definitely prepare a longer write-up when I have everything figure out, but here's a summary:

I have 4 systems:

- Komfovent HRV for ventilation

- NIBE F-series heat pump for floor and water heating

- Vaillant gas boiler that "supports" the heat pump

- Samsung multi-split AC units

HRV - Komfovent uses the same controllers in all of their units, so you get all the communication goodies you'd want - though it took me a long while to figure out that basic features need to be toggled on :) There are existing YAML presets for their C6/C6M controllers on HA forums. The only caveat is that if you want to feed it a virtual thermostat, you need a stuff a device simulating a 10k NTC inside of the ventilator. Otherwise it's just a single Ethernet cable.

Heat pump - I'm not exactly sure if I'm happy with NIBE, but thanks to the community the integration ended up being quite easy. I wasted a bunch of money on their MODBUS40 just to learn that you need to use a certain MODBUS address in the internal bus to make certain registries writeable (eg. thermostat values) - so I took an ESP32 with Ethernet, a galvanically isolated RS485 dongle, a 12V to 5V converter and used https://github.com/elupus/esphome-nibe. The firmware extracts my templated HA sensor's value and feeds it to the heat pump as a virtual thermostat.

Vaillant uses this weird "eBUS" protocol, there's a bunch of cheap PCBs that you can use to connect to it - I'm using https://github.com/danielkucera/esp-arduino-ebus. That's the last system that I haven't touched :)

Samsung ACs use their MIM-B19N modules installed in the outdoor units. There's some magic around enabling remote control, but once you plug their diagnostics device into their indoor units, you can flash all of them at once. I had to mess around with internal NASA addresses to have all the units appear at once.

For indoor sensors I have 3 types:

- AirGradient units measure CO2, tempeature, humidity, PMx etc. - these are mounted at ~150cm and feed the "current house temperature" template.

- I have like 8 Everything Presence One devices, powered by a custom PCB that converts 12V/24V sent over wired alarm cables to the device. They have built-in temperature, humidity and motion sensors. These are mostly installed for motion sensing and their height makes the temperature measurements quite useless.

- Everything else (and most importantly bathrooms) is done using custom ESP32-C3 devices that use SHT31 sensors to measure humidity and LD2412 for movement sensing. Also using the same adapter PCB for powering.

Thermostats are synchronized across all the devices with HA scripts. The HRV specifically uses its own wired temperature sensor to determine if it should enable heat recovery ("free cooling mode"), since its extracted air temp is always a bit lower than room temp (laziness :-)). "Current temperature" template fed to other heaters is derived from multiple room temperatures (currently using an average), with rooms "ignored" if AC is heating there (or was turned on recently). Ventilation has 2 modes set up - 20% and 80% - with the latter toggled by a bathroom humidity threshold.

There are 3 remaining things I want to set up:

- auto switching to gas heating if it's cheaper / the house is running on batteries - so far I've only imported electricity / gas prices into HA and quickly realized that I'm missing a power monitor on the heat pump circuit

- dampening of air ducts to reduce the temp drop when high humidity extraction boost gets triggered

- using more of the HRV range by auto-adjusting fan speed depending on real CO2 values - there's max 2 ppl at the house most of the time, so even at 20% the HRV is quite wasteful