ESP32-based local IR control for cloud-locked heaters (Olimpia Splendid and more) – Home Assistant project

Hi everyone :wave:

I’d like to share a DIY project I’m working on to integrate IR-controlled heaters into Home Assistant, starting from an Olimpia Splendid unit but designed to be vendor-agnostic.

The context

The heater itself is smart, but:

  • it relies on a closed and proprietary cloud
  • there’s no local API
  • no official Home Assistant integration

From a Home Assistant perspective, this prevents local control and reliable automations.

The approach

The solution is a local-first IR bridge based on ESP32:

  • the ESP32 learns IR codes directly from the original remote
  • learned codes are replayed on demand
  • all communication with Home Assistant happens via MQTT

Home Assistant remains the single source of truth for logic and automations, while the ESP32 acts as a smart but stateless IR endpoint.

Supported commands

The current firmware supports a structured IR command set, including:

  • Power ON / OFF
  • Operating mode selection
  • Temperature setpoint commands
  • Fan / power level commands
  • Device reset and initialization sequences

Once IR codes are captured, the same approach works with any IR-controlled heater or device.

Reliability: power-loss recovery

One practical issue with IR-only devices is loss of state after a power outage.

To address this, the firmware includes a startup macro that:

  • detects ESP32 reboot
  • republishes availability via MQTT
  • executes a predefined IR initialization sequence

This allows Home Assistant to re-establish a known device state after power is restored.

What’s next

As soon as the remaining electronic components arrive, the device will be extended with:

  • temperature sensor
  • humidity sensor

This will enable closed-loop automations based on real environmental data rather than blind IR control.

Why I’m sharing this

The goal of the project is to provide a solution that is:

  • fully local
  • cloud-independent
  • cheap and reproducible
  • useful for many legacy or cloud-locked IR devices

If there’s interest, I’ll be happy to:

  • share schematics
  • share the ESP32 firmware
  • publish everything on GitHub once it’s cleaned up a bit

Feedback and suggestions are very welcome :slightly_smiling_face:

Welcome to the forum. Please read the following link to ensure you are abiding by the forum rules.
You did not share any links or actual code which others can use, so I’m uncertain why this is even in the Share your Projects category.

Also, please tell whatever AI wrote the above for you that there are already multiple identical IR control solutions in both this forum as well as standalone custom integrations (SmartIR is one of them, but Broadlink is way more common).

Thanks for the feedback, it was fair and helpful.

I now have the full source code, documentation, and a tagged stable release publicly available:

(v1.0.0 – initial stable release)

The repository includes:

  • the complete ESP32 firmware
  • MQTT topic structure and supported commands
  • Home Assistant MQTT Discovery integration
  • a power-loss recovery macro
  • example configuration files
  • tested library versions

Regarding the wording of the original post: yes, I used AI assistance.
English is not a language I use confidently, and I wanted the post to be clear and understandable.
I also used AI as a tool during development, in the same way one would use libraries, documentation, examples, or community resources.

This does not take away from the ideas, design decisions, implementation, and testing, which are mine and validated in a real setup.
Now that the project is fully published and versioned, I’d prefer to keep the focus on the technical aspects and on feedback about the implementation itself.

Thanks again for pointing out the need for a usable reference — hopefully this makes the project much clearer.