Controlling an Inventer sMove decentralized ventilation system via HA and Shelly

Hi guys,

i wanted to show you how i integrated my decentral ventilation system from german company Inventer into my Homeassistant using the 0-10v interface on the sMove Controller.

Only thing you need is a Shelly Dimmer 0/1-10V PM Gen3, make sure NOT to get the other Shelly 0-10v, since we need an analog 0-10v output from the shelly.

  1. You connect the Shelly 0-10v output to Interface 2 of the sMove controller:
    image
  2. In the Manual of the sMove Controller there is a table which shows, the voltages to apply for each ventilation mode/speed.
  3. Create a select-template in HA for all Ventilation modes.
  4. Since the Shelly Integration in HA does not fully support the Shelly Dimmer 0/1-10V PM Gen3 yet, you cannot control the output voltage via HA directly. So you need an automation that issues rest_commands to the Shelly like so:
automation
  • id: ‘1732023327688’
    alias: LĂźftung Waschkelller Bridge
    description: ‘’
    triggers:
    • trigger: state
      entity_id:
      • input_select.luftungsstufen_waschkeller
        conditions:
        actions:
    • choose:
      • conditions:
        • condition: state
          entity_id: input_select.luftungsstufen_waschkeller
          state: Aus
          sequence:
        • action: rest_command.waschkelller_lueftung_aus
          metadata: {}
          data: {}
      • conditions:
        • condition: state
          entity_id: input_select.luftungsstufen_waschkeller
          state: DurchlĂźftung 1
          sequence:
        • action: rest_command.waschkelller_lueftung_druchlueften_1
          metadata: {}
          data: {}
      • conditions:
        • condition: state
          entity_id: input_select.luftungsstufen_waschkeller
          state: DurchlĂźftung 2
          sequence:
        • action: rest_command.waschkelller_lueftung_druchlueften_2
          metadata: {}
          data: {}
      • conditions:
        • condition: state
          entity_id: input_select.luftungsstufen_waschkeller
          state: DurchlĂźftung 3
          sequence:
        • action: rest_command.waschkelller_lueftung_druchlueften_3
          metadata: {}
          data: {}
      • conditions:
        • condition: state
          entity_id: input_select.luftungsstufen_waschkeller
          state: DurchlĂźftung 4
          sequence:
        • action: rest_command.waschkelller_lueftung_druchlueften_4
          metadata: {}
          data: {}
      • conditions:
        • condition: state
          entity_id: input_select.luftungsstufen_waschkeller
          state: Wärmerßckgewinnung 1
          sequence:
        • action: rest_command.waschkelller_lueftung_rueckgewinnung_1
          metadata: {}
          data: {}
      • conditions:
        • condition: state
          entity_id: input_select.luftungsstufen_waschkeller
          state: Wärmerßckgewinnung 2
          sequence:
        • action: rest_command.waschkelller_lueftung_rueckgewinnung_2
          metadata: {}
          data: {}
      • conditions:
        • condition: state
          entity_id: input_select.luftungsstufen_waschkeller
          state: Wärmerßckgewinnung 3
          sequence:
        • action: rest_command.waschkelller_lueftung_rueckgewinnung_3
          metadata: {}
          data: {}
      • conditions:
        • condition: state
          entity_id: input_select.luftungsstufen_waschkeller
          state: Wärmerßckgewinnung 4
          sequence:
        • action: rest_command.waschkelller_lueftung_rueckgewinnung_4
          metadata: {}
          data: {}
          mode: single
  • id: ‘1732027557304’
    alias: LĂźftung Waschkeller
    description: Ändert die Lüftungsanlage je nach Luftfeuchtigkeit
    triggers:
    conditions:
    actions:
    mode: single

you also need the rest_command configuration, which also does the conversion from ventilation mode to voltage:

3 Likes

This is a sample for rest_command config:

rest_commands

rest_command:
waschkelller_lueftung_aus:
url: “http://192.168.178.77/light/0?turn=off”
method: get
waschkelller_lueftung_druchlueften_1:
url: “http://192.168.178.77/light/0?turn=on&brightness=30”
method: get

The Shelly cannot be operated with 24V DC, correct? At least, I couldn’t find anything about it in the specs. I have an Inventer MZ-Home with multiple zones, and 230V is not available everywhere.

The Shelly, surprisingly, does work with 24V DC (source in German: Shelly Dimmer 0/1-10V Gen3: Messungen der Ausgangsspannung und Teardown - Shelly-Inside - Shelly Forum) - I also verified it myself :wink:

I did not implement any automations, yet - but I don’t think what @ludik0 is doing here is really necessary, as the 0-10V output is linear, so dimming to 30% equals roughly 3V.

Hi I love this post and it helps me to set the next steps in my own HA.
Can you help me to make an automation to controll the 0-10V output based on a 0-10V input?
This must be an 1on1, so 2V input is 2V output (20% brightness) etc.
Also the output must be 8V (80% brightness) when a other trigger switch is on for 3 minutes.
thanks

Where did you take that 24V to run the Shelly from? Did you get that from the touchpanel? :slight_smile:

Thanks!

Yes, exactly - the touchpanel, and the fans both need 24V in my case…

1 Like

Hi all,

Just letting you know that if you are using a 0-10 V analog control (e.g. by Shelly Dimmer 0/1-10V Gen3), you are not able to select the operation mode and speed at the smove panel anymore.
You can fix that by swiching the + line between the dimmer and smove with a potential free relais (e.g. shelly 1 mini gen 3). Once the mini is on, remote control via dimmer is active. If mini is off, the local control at smove works again (starting with the last active setting at smove panel)

BR

1 Like

As I finally came around on installing this, I wanted to share my take on things. :slight_smile:

As the Inventer is a fan, I wanted it to be a fan in HA as well. So I didn’t use automations for the setup, but rather a template fan entity (see here for documentation).

The physical installation is rather easy, the touch panel has some room behind it, the Shelly 0/1-10V PM Gen3 can be powered by 24V, that should already be there as the Inventer fans run on 24V. So only five cables to connect directly to the touch panel, that’s it!

And now to the things, I did different. After getting the Shelly discovered and integrated into HA you will have a light entity with (not only) brightness settings available. That’s great, because we can use this to setup a template fan like this:

fan:
  - platform: template
    fans:
      inventer_central_ventilation:
        friendly_name: "Zentrale LĂźftung"
        value_template: "{{ states('light.inventer') }}"
        percentage_template: "{{ (state_attr('light.inventer','brightness') | int / 255*100) | int}}"
        preset_modes:
          - 'Aus'
          - 'DurchlĂźften Stufe 1'
          - 'DurchlĂźften Stufe 2'
          - 'DurchlĂźften Stufe 3'
          - 'DurchlĂźften Stufe 4'
          - 'Wärmerßckgewinnung Stufe 1'
          - 'Wärmerßckgewinnung Stufe 2'
          - 'Wärmerßckgewinnung Stufe 3'
          - 'Wärmerßckgewinnung Stufe 4'
        preset_mode_template: >
          {% set inventer_brightness_pct = (state_attr('light.inventer', 'brightness') | int / 255*100) | round %}
          {% if inventer_brightness_pct >= 28 and inventer_brightness_pct <= 32  %}
            DurchlĂźften Stufe 1
          {% elif inventer_brightness_pct >= 18 and inventer_brightness_pct <= 22 %}
            DurchlĂźften Stufe 2
          {% elif inventer_brightness_pct > 0 and inventer_brightness_pct <= 2 %}
            DurchlĂźften Stufe 3
          {% elif inventer_brightness_pct >= 8 and inventer_brightness_pct <= 12 %}
            DurchlĂźften Stufe 4
          {% elif inventer_brightness_pct >= 48 and inventer_brightness_pct <= 52 %}
            Wärmerßckgewinnung Stufe 1
          {% elif inventer_brightness_pct >= 58 and inventer_brightness_pct <= 62 %}
            Wärmerßckgewinnung Stufe 2
          {% elif inventer_brightness_pct >= 68 and inventer_brightness_pct <= 72 %}
            Wärmerßckgewinnung Stufe 3
          {% elif inventer_brightness_pct >= 78 and inventer_brightness_pct <= 82 %}
            Wärmerßckgewinnung Stufe 4
          {% elif inventer_brightness_pct >= 38 and inventer_brightness_pct <= 42 %}
            Aus
          {% else %}
            Aus
          {% endif %}
        set_preset_mode:
          - service: light.turn_on
            target:
              entity_id: light.inventer
            data:
              brightness_pct: >-
                {% if preset_mode == 'DurchlĂźften Stufe 1' %}
                  30
                {% elif preset_mode == 'DurchlĂźften Stufe 2' %}
                  20
                {% elif preset_mode == 'DurchlĂźften Stufe 3' %}
                  1
                {% elif preset_mode == 'DurchlĂźften Stufe 4' %}
                  10
                {% elif preset_mode == 'Wärmerßckgewinnung Stufe 1' %}
                  50
                {% elif preset_mode == 'Wärmerßckgewinnung Stufe 2' %}
                  60
                {% elif preset_mode == 'Wärmerßckgewinnung Stufe 3' %}
                  70
                {% elif preset_mode == 'Wärmerßckgewinnung Stufe 4' %}
                  80
                {% elif preset_mode == 'Aus' %}
                  40
                {% else %}
                  40
                {% endif %}
        turn_on:
          service: light.turn_on
          entity_id: light.inventer
        turn_off:
          service: light.turn_off
          entity_id: light.inventer
        set_percentage:
          service: light.turn_on
          entity_id: light.inventer
          data_template:
            brightness_pct: "{{ percentage }}"

I used german wording in the template, as I think Inventer is only selling in german speaking countries. :slight_smile: There are more elegant and shorter ways to write this, but I thought this is a more readable version of the code.

It’s fairly straightforward, we set the preset_modes that Inventer gives us. The preset_mode_template is where we check the actual state of the fan (light).

With set_preset_mode we send the state we want the fan to be in to the Shelly. The values here are according to the voltage values in the manual from Inventer. It’s pretty simple, as the voltage from the Shelly corresponds to the percentage of the brightness, as stated above from @phlash13 (eg. 3V are 30% brightness).

Please note, that with this configuration the Shelly never is really ‘off’. The ‘off’ value for the Inventer is around 4V (40%), so the Shelly isn’t ‘off’, when the Inventer is ‘off’! This isn’t a problem, but it’s good to know!

If you have any questions, let me know! Otherwise have fun with the Inventer fan in HA. :wave:

2 Likes

I can also confirm, that the rest calls are no longer needed, and you can just the the percentage(voltage) on the HA light entity( at least on the latest shelly and HA version). Thanks for pointing out, that 24v is sufficient for the shelly, that might simplify my setup.

1 Like

With your solution, can you still control the fans via the touch panels?

That’s also interresting me.
I want to build in a decentralized ventilation system and was looking at the Inventer-System. While looking for decentralized ventilation systems I found
Ambientika smart (Decentralized living room ventilation Smart Home - Ambientika Smart)
that should be working out of the box with home assistant.

Is there anybody having this ventialation system running and can tell us about it?

Hey,

How do you realize the Problem by switching to „stop Ventilation“ and the inVENTer Hardware is starting After 1h automatically again but without sending the correct voltage to the Control contacts?

Means the Ventilation is running but the Home Assistant / Shelly Unit is still on „stop“