Systemair SAVECare Ventilation unit

I have seen a guide with modbus for homeseer, seems like the cheaper option. 2000 NOK without VAT is a bit too stiff for me.

Hi everyone,

I have read this thread carefully and prepared for integration of my own system, Systemair VTR-150 from 2020.

I have installed a simple network-to-modbus RS485 adapter and have this wired up to A-B-G terminals on the controller of the VTR-unit. I have also managed to connect up this unit so that I have control over it over the network.

From configuration point of view I have put the following into my configuration.yaml file:

modbus:
        - name: vtr150
          type: tcp
          host: 10.160.1.98
          port: 8234
          timeout: 3
          delay: 5
          close_comm_on_error: false
          retry_on_empty: true
          retries: 10
          climates:
                  - name: Ventilasjon
                    slave: 1
                    data_count: 1
                    scale: 0.1
                    offset: 0
                    precision: 1
                    max_temp: 30
                    min_temp: 15
                    temp_step: 1
                    target_temp_register: 2000
                    current_temp_register: 12104
sensor:
        - platform: modbus
          scan_register: 10
          registers:
                  - name: vtr150_utendĆørs_temperatur
                    hub: vtr150
                    device_class: temperature
                    slave: 1
                    register: 12102
                    register_type: holding
                    count: 1
                    scale: 0.1
                    precision: 1

The problem is that I am getting error when starting up HA:

Logger: homeassistant.config
Source: components/modbus/validators.py:201
First occurred: 17:37:20 (1 occurrences)
Last logged: 17:37:20

Unknown error calling modbus CONFIG_SCHEMA
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config.py", line 842, in async_process_component_config
    return component.CONFIG_SCHEMA(config)  # type: ignore
  File "/usr/local/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 272, in __call__
    return self._compiled([], data)
  File "/usr/local/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 594, in validate_dict
    return base_validate(path, iteritems(data), out)
  File "/usr/local/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 386, in validate_mapping
    cval = cvalue(key_path, value)
  File "/usr/local/lib/python3.9/site-packages/voluptuous/validators.py", line 215, in _run
    return self._exec(self._compiled, value, path)
  File "/usr/local/lib/python3.9/site-packages/voluptuous/validators.py", line 339, in _exec
    v = func(path, v)
  File "/usr/local/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 817, in validate_callable
    return schema(data)
  File "/usr/src/homeassistant/homeassistant/components/modbus/validators.py", line 201, in duplicate_entity_validator
    addr = str(entry[CONF_ADDRESS])
KeyError: 'address'

What I am doing wrong?

Best regards,
Anders

modbus:
  - name: vsr500
    type: tcp
    host: <ip til modbus-tcp adapter>
    port: <portnummer>
    timeout: 3  #Timeout for slave response in seconds (default=3)
    delay: 3  #Time to sleep in seconds after connecting and before sending messages (defualt=0)
    climates:
       - name: Ventilasjon
         slave: 1
         data_type: uint
         count: 1
         scale: 0.1
         offset: 0
         precision: 1
         max_temp: 30
         min_temp: 15
         temp_step: 1
         target_temp_register: 2000
         address: 12102
    sensors:
      - name: vsr500_inntaks_temperatur
        device_class: temperature
        slave: 1
        address: 12101
        unit_of_measurement: Ā°C
        count: 1
        scale: 0.1
        offset: 0
        precision: 1
        data_type: int

Your YAML code looked kinda funny in the code block, however Iā€™m in the process of getting control of my Systemair VSR500 unit and this configuration works for me. Havent really had much time to work on this yet but hope it can get you started.

1 Like

Hey guys,

Just getting into this as well but using a HF2211 modbusrtu to wifi adapter. Iā€™ve managed to get it hooked up and can poll information.

Does anyone have the complete sensors/climate/controls in a yaml already? Spares me reinventing the wheen and quite a few days of going through the manual and all the registers.

Tank you, GM! As a new user of HomeAssistant I have spent some time to get this installed. But now I have everything working, even the pop-up menus work. :smile:
This was the last part of getting everything in my house connected to HA. I guess this is where the fun begins, when I can make HA control the VSR300 to slow down the the Verisure alarm is activated.
I chose HA because of the community and the effort to integrate everything. HA is, as far as I can tell, the only smart house system that can control both VSR300 and NobĆø HUB. Again, thank you, great work!

Do You have vsr500 recuperator or this is AirConditioning? VSR500 is the model name of central unit. What device do you have? AC or recuperator?
I have at my home recuperator IPRS550 and looking on SystemAir wall panel i see such information:

Any luck finding configs or have you worked it out yourself and could share?

Yes i have worked it out more or less. Iā€™m not entirely sure if all the registers are mapped correctly though.
You can find the full yaml here: View paste DGJQ

1 Like

Thanks but the paste is gone could you please share it again?

This is absolutely brilliant!
I have most of it configured already. However, it seems like many of the required sensors are not there in the github repo, causing both dashboard and Node red to fail. I could of course try to rebuild the sensors in my instance, but wanted to speak up in case others will face this in the future. The only available yaml file I can see under sensors folder are the sensors_time_date_misc.yaml.

With the possibility of me being blind here, cheers.

So this has stopped working for me as of a few updates ago. Anyone made the adjustments required to get it to work again?

Please disregard my post above, the Node red companion integration had not been configured properly. Got it now. Thanks again!

Hi All,

After a HASS updated it no longer accepts the previous datatypes, here is a new working config and register file:
https://bpa.st/FDSA

There are some registers that iā€™m uncertain about so let me know if you find inconsistencies

1 Like

Just a quick question ā€“ do I have to enable modbus RTU in the control panel, or is it enabled by default?

Villavent has trouble delivering control panels, so Iā€™m stuck with a brand new VSR 500 without any control panel for a while. I was hoping I could control it via modbus in the meantime.

I have connected a NodeMCU ESP32 to the A/B/GND RS485 terminals on the unit, and Iā€™m using ESPHome to read registers, but Iā€™m not getting any values that make sense from the unit.

Hey,
Just updated today and itā€™s throwing me errors. I canā€™t seem to open your link. Do you have a config I could see? :slight_smile:

    climates:
    - name: vent_VSR500
      address: 12102
      slave: 1
      data_type: int16
      count: 1
      scale: 0.1
      offset: 0
      precision: 1
      max_temp: 30
      min_temp: 15
      temp_step: 1
      target_temp_register: 2000

Changing data_type from uint to int16 and data_count to count helped :slight_smile:

New link is broken. Please make it work again :slight_smile:

1 Like

What is exactly you are looking for? Itā€™s much much easier to through the modbus docs on the Systemair and just set the sensors you need in the config.

Just to get a grab on things. So you just copy paste in the sensors give it a device class and change the register and unit of measurement.

Configuration.yaml

modbus:
#  - name: hub1
    type: serial
    method: rtu
    port: /dev/ttymodbus
    baudrate: 9600
    stopbits: 1
    bytesize: 8
    parity: N
    climates:
    - name: vent_VSR500
      address: 12102
      slave: 1
      scale: 0.1
      offset: 0
      precision: 1
      max_temp: 30
      min_temp: 15
      temp_step: 1
      target_temp_register: 2000
    sensors: !include VSR/NEW_VSR_500.yaml
    switches:
      - name: vsr500_eco_modus
        slave: 1
        address: 2504
        command_on: 1
        command_off: 0
        verify:
          address: 2504
          state_on: 1
          state_off: 0
      - name: vsr500_heater_switch
        slave: 1
        address: 3001
        command_on: 1
        command_off: 0
        verify:
          address: 3001
          state_on: 1
          state_off: 0
      - name: vsr500_rh_switch
        slave: 1
        address: 2203
        command_on: 1
        command_off: 0
        verify:
          address: 2146
          state_on: 1
          state_off: 0

The Sensors NEW_VSR_500.yaml

  - name: vsr500_mode_speed
    slave: 1
    address: 1130
    input_type: holding
    count: 1
  - name: vsr500_mode_main
    slave: 1
    address: 1160
    input_type: holding
    count: 1
  - name: vsr500_usermode_mode
    slave: 1
    address: 1160 #0=Auto,1=Man,2=Crowded,3=Refresh,4=Fireplace,5=Away,6=Holiday,7-12 not applicable
    input_type: holding
    count: 1


#### Š¢Š•ŠœŠŸŠ•Š ŠŠ¢Š£Š Š
  - name: vsr500_temp_outdoor
    device_class: temperature
    slave: 1
    address: 12101
    input_type: holding
    unit_of_measurement: Ā°C
    count: 1
    scale: 0.1
    offset: 0
    precision: 1



Hi,

I am also trying to make work an SAVE VSR300 and using Modbus TCP device and I am not able to receive data from modbus TCP to homeassistant. I am using actually very similar HW than in here Mini-guide: Hvordan bruke Modbus (med HomeSeer) - HomeSeer - Hjemmeautomasjon ( USR-TCP232-410S it seems that mine is a bit newer)

I configure the HomeAssistant as :

modbus:
  - name: VTR300
    type: tcp    
    host: THE_IP
    port: 8234
    timeout: 3 #Timeout for slave response in seconds (default=3)
    delay: 3
    retry_on_empty: true
    message_wait_milliseconds: 750
    sensors:
      - name: vsr300_temp_outdoor
        device_class: temperature
        slave: 2
        address: 12101
        unit_of_measurement: Ā°C

    binary_sensors:
      - name: vsr300_rotating_guard_sensor
        device_class: moving
        slave: 2
        address: 12112
        input_type: discrete_input

And the modbus2tcp it is configured like this:

The Flow Control has not RTS/CTS for RS-485 for my USR-TCP232-410S versionā€¦ I can see that there is some data receivedā€¦

And of course I have some error in homeassistant:

2022-10-11 01:30:12.630 ERROR (SyncWorker_0) [homeassistant.components.modbus.modbus] Pymodbus: VTR300: Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 8 bytes (0 received)

but nothing is transmitted :thinking: :thinking: I have no idea what it can be wrong, I changed the baud speed, the parity, the flow controlā€¦ but no luck at allā€¦ Is any of you having the same device and it was able to make it work???

thanks very much in advance guys ā€¦

this seems to be the same problem i had the slave adres MUST be nr 1 since all the nodes in the nodes uses address one. either you have to rewrite the node or just use adress nr 1 (set in vsr) i also ushe the highest communication rate. Works a treat

i thougt by changing the adress value here it would work, but no the id in every node is written to use nr1 (it does not change in the code by changing the slave adress here)