Summary
The "Max Air" roof vent from the brand "2012" (yes, it really is called that) is one of the best roof vents I've seen so far. With a price of only around €200 and really good workmanship, it is simply impressive.
I will discuss the exact advantages and disadvantages in a future blog post. The main focus here will be on how to integrate the fan control into Home Assistant.
- [Low-noise brushless motor - five times longer service life than conventional brush motors]: Exclusive brushless motor solution that operates with extremely low noise. Powerful...
Letzte Aktualisierung am 15.11.2025 / Werbung / Bilder von der Amazon Product Advertising API
Status quo
The fan is supplied with a simple infrared remote control. There are also buttons on the device.
The only interface without opening or otherwise manipulating the device is therefore to use the infrared interface on the underside of the device to trigger certain actions such as opening and closing the flap
Infrared reverse engineering
Reverse engineering is a big word in this context, but it is actually exactly what is needed here: In order to simulate a button press on the original remote control with Home Assistant, we need the exact infrared codes that are sent by the remote control. We can then send the codes with an ESP32 and ESPHome via an IR transmitter and have thus enabled remote control via Home Assistant for just a few euros.
What do we need?
The following components can be used to read the codes and then send them again.
ESP32 for controlling the IR diodes
- Powerful ESP32 microcontroller installed! An absolute novelty on the market! The ESP32 ethernet is an absolute all-rounder. It is characterized by its compact design. For the...
Letzte Aktualisierung am 15.11.2025 / Werbung / Bilder von der Amazon Product Advertising API
Alternatively, other microcontrollers, such as an ESP8266, can also be used as long as they are supported by ESPHome.
IR transmitter and receiver
- IR is widely used for remote control. With this IR receiver set, the Arduino Project is able to transmit command to any IR remote receiver if you have the correct decoder.
Letzte Aktualisierung am 15.11.2025 / Werbung / Bilder von der Amazon Product Advertising API
I deliberately chose exactly this article, as the IR diodes are provided directly with the appropriate resistors and can be easily connected to the ESP with jumper cables.
Record IR codes
Of course, I first researched whether there were already known codes on the Internet that I could simply use. Although there are many instructions for integrating classic fans or air conditioning systems, I couldn't find anything suitable for roof fans. The brand "2012" is also rather unknown, which doesn't make things easy.
Fortunately, the IR codes sent by the remote control are very easy to read and after a while I found the right combination. As you can see here in the video:
The matching codes
The following commands can be sent to the roof fan. At least that's all I've found out. There may be more, but there is already a bit more than with the original remote control:
OPEN:
address: 0x7F80
command: 0xED12
CLOSE:
address: 0x7F80
command: 0xF00F
AIR IN:
address: 0x7F80
command: 0xF50A
AIR OUT:
address: 0x7F80
command: 0xE01F
STOP:
address: 0x7F80
command: 0xFA05
LID UP:
address: 0x7F80
command: 0xFB04
LID DOWN:
address: 0x7F80
command: 0xF906
RAIN MODE:
address: 0x7F80
command: 0xE11EFor example, there is a "Stop" command or one for "Lid-Up" or "Lid-Down", with which you can move the hatch up or down in small steps. The remaining commands are self-explanatory. They correspond to the commands on the remote control and on the device itself.
If you use these codes and combine them with simple button entities in ESPHome, you can emulate the remote control and integrate it into Home Assistant.
Complete ESP Home code
esphome:
name: fan-remote-esp8285
platform: ESP8266
board: esp8285
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
web_server:
version: 3
ota:
platform: esphome
remote_receiver:
pin:
number: GPIO14
inverted: True
dump: nec
remote_transmitter:
id: my_remote_transmitter
pin: GPIO4
carrier_duty_percent: 50%
button:
- platform: template
name: Open
on_press:
- remote_transmitter.transmit_nec:
address: 0x7F80
command: 0xED12
repeat: 2
- delay: 500ms
- platform: template
name: Close
on_press:
- remote_transmitter.transmit_nec:
address: 0x7F80
command: 0xF00F
repeat: 2
- delay: 500ms
- platform: template
name: Air In
on_press:
- remote_transmitter.transmit_nec:
address: 0x7F80
command: 0xF50A
repeat: 2
- delay: 500ms
- platform: template
name: Air Out
on_press:
- remote_transmitter.transmit_nec:
address: 0x7F80
command: 0xE01F
repeat: 2
- delay: 500ms
- platform: template
name: Stop
on_press:
- remote_transmitter.transmit_nec:
address: 0x7F80
command: 0xFA05
repeat: 2
- delay: 500ms
- platform: template
name: Lid Up
on_press:
- remote_transmitter.transmit_nec:
address: 0x7F80
command: 0xFB04
repeat: 2
- delay: 500ms
- platform: template
name: Lid Down
on_press:
- remote_transmitter.transmit_nec:
address: 0x7F80
command: 0xF906
repeat: 2
- delay: 500ms
- platform: template
name: Rain Mode
on_press:
- remote_transmitter.transmit_nec:
address: 0x7F80
command: 0xE11E
repeat: 2
- delay: 500msI'm still working on a good UI in Home Assistant. Until then, I'm using a simple entity list to display all the buttons one below the other:

Automations
Now that control is possible via Home Assistant for the first time, it is of course possible to implement some automations that can automatically ensure a better climate in the camper. For example:
- Open the hatch automatically once a day, ventilate at the highest level for 30 minutes and then close again.
Particularly exciting when the camper is in storage. - Ventilate automatically as soon as the humidity rises above a certain level.
This is particularly easy to implement if you have a sensor indoors and outdoors so that you can compare the values. If the air outside is drier than inside, it is worth ventilating. - Automatic start as an extractor hood when the hob is activated.
This is particularly useful when cooking with an induction hob.
Conclusion
Control via IR is the easiest way to integrate the Max Air from 2012 into Home Assistant. However, there is one decisive disadvantage: the IR transmitter of the ESP always needs a clear view of the IR port of the fan. A good position in the camper is therefore a prerequisite. In future, I may try to control the circuit board or the motor directly in order to achieve even better control and, for example, to be able to set an individual speed. Because over-engineering always comes first 🤝🏻
