LUNOS Heat Recovery Ventilation (HRV) fan control

I wanted to control the speed settings of my decentralized LUNOS heat recovery ventilation (HRV) fans, however LUNOS offers no connected or “smart” controller for interacting with the fans. I created this integration which can be paired with a pair of inexpensive smart relays that can be installed with the standard LUNOS universal controller to set speed settings, turn on/off extra modes, and clear the filter reminders.

See github.com/rsnodgrass/hass-lunos

This is a community supported Home Assistant integration, so if you have an improvement, bug fix, etc, please submit the code improvements via git. Support is via this Home Assistant discussion topic.

While this LUNOS integration allows control of the fan modes through Home Assistant, the real power comes in supporting a wide variety of automation opportunities when paired with other third-party sensors:

  • set LUNUS speeds to maximum when high CO2, VOCs, or radon is detected
  • keeping LUNOS running at lower speeds, EXCEPT when air quality issues are detected, could provide a balance between LUNOS fan noise (which is already a very quiet fan) and maintaining optimal fresh indoor air quality
  • increase LUNOS fan speeds to high when kitchen smoke alarm detects smoke
  • if outside temperature is closer to target temperature on thermostats, engage exhaust only modes in LUNOS devices to expel indoor air (drawing in temperature that is closer to target from leaks in the building envelope or open windows/doors)
  • turn off LUNOS air circulation when house vacation mode is set, and re-activate LUNOS air circulation whenever motion is detected (or someone arrives at the house)
  • turn off LUNOS air circulation if outside air quality is detected as being very poor (e.g. nearby forest fires or pollution)
3 Likes

Hello,

great work. I have some LUNOS devices in my house, but they come with an another controller and control panel. Is it possible to get work with these?

Control Panel: Smart Comfort Steuerung 5/SC-FT


Thanks and best reguards

Mike

I think it might be possible with a second set of switches controlling the fans in addition to the 5/SC-FT. I’m not sure exactly how, but someone with creative ideas on how to supplement this with additional relays for controlling the fans might be able to help.

Of course, you could replace this control switch with a different set of HA controllable relays, but then you likely can only control your fans through HA.

Sounds good and its no problem for me. The electrician from the house,has planed the control planel at the basement and the fans are at ground floor or First Floor :thinking:. Current i don’t control these, because i’m to lazy to go down to the basement. So that works in standard mode lowest speed.

Old thread but I use a couple of Fibaro RGBG switches to set the fans with the old Lunos controller. Works great.

Thanks for these hint, can i use the same wiring plan? I’m a worst electrician, but my neighbor is great.

This may work with the shelly rgbw?

Disregard the Fibaro RGBW. Its not stable after testing.
In case you do just connect grey and red to R and G.
Maybe the setting in the controller I got wrong.

Now using the Fibaro-224 but it require 220V to operate.
This is a dry switch and I connect as below
Black in
Red Q1
Grey Q2

Good luck!
/Per

Hey,

not much going on here. I successfully went from ioBroker to HA. For me it suits me/us much better. Then I have seen your LUNOS fan control addon in HACS. I am using the KNX control4 modules. I have five of them for my house. Every control4 is controlling a pair of fans. I have two different ones. ego and e2.

Can I support you somehow to add this modules to your addon?

It already works with KNX as this is just an overlay over any supported switches within Home Assistant.

1 Like

Hi, thanks for the great work. I am having problems getting the summer ventilation to work. I correctly set the fans in my configuration and I am able to start them with the right speed through the fan service. But when I am trying to set the summer ventilation off/on or the filter reset function on my e2-60 its not working.

  action:
  - service: lunos.lunos_clear_filter_reminder
    data:
      entity_id: fan.wozivorne

and in the log:

2021-08-30 10:11:52 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'interlock' when rendering '{{ value_json.interlock }}'
2021-08-30 10:12:57 WARNING (MainThread) [homeassistant.helpers.service] Unable to find referenced entities fan.wozivorne
2021-08-30 10:13:03 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'interlock' when rendering '{{ value_json.interlock }}'

Does anybofy know what I am doing wrong? Thanks and best regards

Great feature! This was exactly what I needed :slight_smile:

Im a little bit rusty on the hardware side, but could this be implemented with the Fibaro Smart Implant as well? Smart Implant - to make your old device smart | FIBARO

0.2.0 released

1 Like

Hi,

I’m just about to purchase a few Lunos units and also just getting into HA. What smart relay did you use and did it get inserted inline of the standard double rocker switches?

thanks,

I skipped using rocker switches and just used smart relay switch.

I believe I had to flash this with Tasmota, so if you want an easy out-of-the-box solution that doesn’t require flashing custom firmware this might not be the one for you.

This 4 relay smart switch allows me to manually turn on/off ventilation fans with the buttons, or control via Home Assistant (and automations). My eventual plan is to pair with a wireless remote switch, like the Lutron Pico, to allow manual control of the fan speed in a bathroom/laundry with an eGO. That allows someone to manually turn up the fan speed when necessary. This only makes sense to add IF you already have Lutron Caseta bridge in place that you are using to control lights.

I have a Touch Air Comfort (TAC) control system for my 4 Lunos e². Is there any way on how to make that work with Home Assistant ideally in parallel to the TAC? It would already help if you could point me into the right direction. Thanks a lot for any support!

Hi, i use HA 2022.7.4 with version 0.2.0, if i try to turn the fans off thru service call i got this error:

Logger: homeassistant.components.websocket_api.http.connection
Source: custom_components/lunos/fan.py:437
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 00:19:41 (8 occurrences)
Last logged: 19:21:55

[1600679912] 'LUNOSFan' object has no attribute 'async_set_precentage'
[1482887736] 'LUNOSFan' object has no attribute 'async_set_precentage'
[1805926464] 'LUNOSFan' object has no attribute 'async_set_precentage'
[1805926464] Error handling message: Unknown error (unknown_error)
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 193, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1713, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1750, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 680, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 930, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 717, in _handle_entity_call
    await result
  File "/config/custom_components/lunos/fan.py", line 437, in async_turn_off
    await self.async_set_precentage(0)
AttributeError: 'LUNOSFan' object has no attribute 'async_set_precentage'

if i try to set the preset_mode for fans thru service call i got this error:

Logger: homeassistant.components.websocket_api.http.connection
Source: core.py:452
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 00:15:45 (11 occurrences)
Last logged: 19:38:43

[1600679912] LUNOSFan.async_set_preset_mode() got an unexpected keyword argument 'preset_mode'
[1600679912] Error handling message: Unknown error (unknown_error)
[1805926464] Error handling message: Unknown error (unknown_error)
[1805926464] LUNOSFan.async_set_preset_mode() got an unexpected keyword argument 'preset_mode'
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 193, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1713, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1750, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 680, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 930, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 711, in _handle_entity_call
    result = hass.async_run_job(partial(getattr(entity, func), **data))  # type: ignore[arg-type]
  File "/usr/src/homeassistant/homeassistant/core.py", line 594, in async_run_job
    return self.async_run_hass_job(HassJob(target), *args)
  File "/usr/src/homeassistant/homeassistant/core.py", line 549, in async_run_hass_job
    return self.async_add_hass_job(hassjob, *args)
  File "/usr/src/homeassistant/homeassistant/core.py", line 452, in async_add_hass_job
    task = self.loop.create_task(hassjob.target(*args))
TypeError: LUNOSFan.async_set_preset_mode() got an unexpected keyword argument 'preset_mode'

Thanks. Check if that went away in the latest release 0.2.1 as there was a typo in a service call.

Error ist still persist:

Logger: homeassistant.components.websocket_api.http.connection
Source: custom_components/lunos/fan.py:437
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 23:52:09 (1 occurrences)
Last logged: 23:52:09

[1439978448] 'LUNOSFan' object has no attribute 'async_set_precentage'
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 193, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1713, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1750, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 680, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 930, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 717, in _handle_entity_call
    await result
  File "/config/custom_components/lunos/fan.py", line 437, in async_turn_off
    await self.async_set_precentage(0)
AttributeError: 'LUNOSFan' object has no attribute 'async_set_precentage'
Эта ошибка возникла в кастомной интеграции.

Logger: homeassistant.helpers.script.websocket_api_script
Source: custom_components/lunos/fan.py:320
Integration: LUNOS Heat Recovery Ventilation (documentation, issues)
First occurred: 23:53:29 (1 occurrences)
Last logged: 23:53:29

websocket_api script: Error executing script. Unexpected error for call_service at pos 1: name 'mode' is not defined
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 447, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 680, in _async_call_service_step
    await service_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1713, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1750, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 680, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 930, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 717, in _handle_entity_call
    await result
  File "/config/custom_components/lunos/fan.py", line 320, in async_set_preset_mode
    if mode not in self.preset_modes:
NameError: name 'mode' is not defined

Logger: homeassistant.components.websocket_api.http.connection
Source: custom_components/lunos/fan.py:320
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 23:51:50 (5 occurrences)
Last logged: 23:53:29

[1439978448] name 'mode' is not defined
[1439978448] Error handling message: Unknown error (unknown_error)
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 193, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1713, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1750, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 680, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 930, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 717, in _handle_entity_call
    await result
  File "/config/custom_components/lunos/fan.py", line 430, in async_turn_on
    await self.async_set_preset_mode(preset)
  File "/config/custom_components/lunos/fan.py", line 320, in async_set_preset_mode
    if mode not in self.preset_modes:
NameError: name 'mode' is not defined

The missing preset_modes mode not defined error should be fixed in 0.2.2. The other bug was fixed earlier, so that should also go away with 0.2.2.

Эта ошибка возникла в кастомной интеграции.

Logger: custom_components.lunos.fan
Source: custom_components/lunos/fan.py:335
Integration: LUNOS Heat Recovery Ventilation (documentation, issues)
First occurred: 00:25:09 (3 occurrences)
Last logged: 00:26:12

LUNOS preset mode 'low' is NOT YET IMPLEMENTED!
LUNOS preset mode 'high' is NOT YET IMPLEMENTED!

I get this error if i try to set the preset Mode over Service call. And there is no Reaktion to Fan turn_off service call.