# Sterownie rekuperacją NIKOL450 - Modbus TCP

**URL:** <https://forum.arturhome.pl/t/sterownie-rekuperacja-nikol450-modbus-tcp/11920>\
**Category:** Home Assistant\
**Tags:** modbus\
**Created:** [15 Marzec 2024 12:44 UTC](https://forum.arturhome.pl/t/sterownie-rekuperacja-nikol450-modbus-tcp/11920 "2024-03-15T12:44:24Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Autor:** ![eight-stars](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/e/278dde/32.png) [@eight-stars](https://forum.arturhome.pl/u/eight-stars)\
**Data wpisu:** [15 Marzec 2024 12:44 UTC](https://forum.arturhome.pl/t/sterownie-rekuperacja-nikol450-modbus-tcp/11920/1 "2024-03-15T12:44:24Z")

</div>

Cześć,  
posiadam dość stary polski rekuperator NIKOL450 z obsługą Modbus TCP. Generalnie podłączyłem się do sterownika i odczytuję dane o temperaturach, obrotach itp.  
Natomiast mam problem ze sterowaniem.

 ![image](https://forum.arturhome.pl/uploads/default/original/3X/c/4/c4faee46bb4a5a6834701d3d56c6605bda40823c.jpeg)

Udało mi się utworzyć jeden przełącznik, który przełącza z trybu Auto (2) na Manual (0).  
Jak przełączy się na Manual to można sterować prędkością wentylatorów, ale nie wiem co dalej, jak sterować prędkościami.

Chciałbym po przełączeniu na Manual sterować prędkościami wentylatorów, np.:  
Prędkość I - 0%  
Prędkość II - 30%  
Prędkość III - 60%  
Prędkość IV - 100%

W dokumentacji sterownie wentylatorami jest pod adresem **34** w zakresie od **0-100**. Nie wiem jaki utworzyć kod aby były 4 przyciski.

Jak to zrobić? Macie jakieś pomysły? 🙂

Poniżej wycinek dokumentacji do sterownika modbus z opisem, a w linku cały opis.

 ![image](https://forum.arturhome.pl/uploads/default/original/3X/9/e/9ecb05ac427e72a006f3adeb86aa9a11e06fc6ac.png)

[http://www.alres.pl/pub/rejestry\_modbus\_msr23.pdf](http://www.alres.pl/pub/rejestry_modbus_msr23.pdf)

To mój kod przełącznika z Auto na Manual:

```auto
modbus:
  - name: "NIKOL_450"
    type: tcp
    host: "192.168.1.6"
    port: 502
    timeout: 5
    delay: 2
    
    switches:
    - name: "Reku_Tryb_Obrotow"
      slave: 109
      address: 37
      write_type: holding
      command_on: 2
      command_off: 0
      verify:
        input_type: holding
        address: 37
        state_on: 2
        state_off: 0

```

Wdzięczny za pomoc oraz uwagi.

---

<div class="post-metadata">

**Autor:** ![macek](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/macek/32/1647_2.png) [@macek](https://forum.arturhome.pl/u/macek)\
**Data wpisu:** [15 Marzec 2024 13:19 UTC](https://forum.arturhome.pl/t/sterownie-rekuperacja-nikol450-modbus-tcp/11920/2 "2024-03-15T13:19:29Z")

</div>

Jest kilka możliwości:

> **[Template fan](https://www.home-assistant.io/integrations/fan.template/)**
>
> Instructions how to setup the template fans within Home Assistant.

[https://www.reddit.com/r/homeassistant/comments/18k2vna/how\_can\_i\_use\_fan\_integration\_with\_modbus\_device/](https://www.reddit.com/r/homeassistant/comments/18k2vna/how_can_i_use_fan_integration_with_modbus_device/)

> **[Add speed control to modbus fan entities](https://community.home-assistant.io/t/add-speed-control-to-modbus-fan-entities/630610/)**
>
> Hi, would it be possible to add modbus fan entity speed control? It would be very useful for these entities to be able to select the speed. For example silence mode, low mode, medium mode, maximum mode, boost mode, auto mode…etc… Thanks everyone.

---

<div class="post-metadata">

**Autor:** ![eight-stars](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/e/278dde/32.png) [@eight-stars](https://forum.arturhome.pl/u/eight-stars)\
**Data wpisu:** [15 Marzec 2024 16:41 UTC](https://forum.arturhome.pl/t/sterownie-rekuperacja-nikol450-modbus-tcp/11920/3 "2024-03-15T16:41:14Z")

</div>

Dziękuję za wskazówki, jednak chyba to mnie przerasta, bo nie za bardzo wiem jak skorelować modbus z informacjami które mi podałeś.

Czy mam teraz próbować odczytywać dane z tego adresu 34 ? Utworzyć kolejny switch? czy mam utworzyć coś takiego:

```auto
fan:
  - platform: template

```

Jaka to powinna być składnia?

tu w dokumentacji składnia fan jest trochę inna:

> **[Modbus](https://www.home-assistant.io/integrations/modbus/)**
>
> Instructions on how to integrate modbus and platforms.

```auto
modbus:
  - type: tcp
    host: IP_ADDRESS
    port: 502
    fans:
      - name: "Fan1"
        address: 13
        write_type: coil

```

Przepraszam za mało techniczny język, ale jestem świeży.

---

<div class="post-metadata">

**Autor:** ![macek](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/macek/32/1647_2.png) [@macek](https://forum.arturhome.pl/u/macek)\
**Data wpisu:** [16 Marzec 2024 07:28 UTC](https://forum.arturhome.pl/t/sterownie-rekuperacja-nikol450-modbus-tcp/11920/4 "2024-03-16T07:28:08Z")

</div>

@eight-stars dobrze kombinujesz 🙂, najpierw musisz mieć encję fan z Modbus dzięki czemu będziesz mógł odczytać faktyczny (rzeczywisty) stan wentylatora oraz będziesz mógł sterować tym wentylatorem korzystając z usług Modbus w HA czyli `modbus.write_register` i `modbus.write_coil`.

![image](https://forum.arturhome.pl/uploads/default/original/3X/3/9/397c4163661f36d9f02d90636a18c1253a31e858.png)

Aby zmienić obroty tego wentylatora musisz zmienić wartość w tym rejestrze “34” za pomocą `modbus.write_register` albo `modbus.write_coil` (nie wchodzę w szczegóły czy to register czy coils).  
Jak masz opanowane sterowanie tym wentylatorem robisz encję fan z template aby na końcu uzyskać taki efekt:  
 ![image](https://forum.arturhome.pl/uploads/default/original/3X/0/d/0dd5d9dc16050da680f4d101ef55005e9bedb918.png)  
a docelowo tak przedstawić rekuperator (choć ja się na tym nie znam):  
 ![image](https://forum.arturhome.pl/uploads/default/original/3X/f/2/f21285e47af5c75d98198a8c82897310ebd9c8cc.png)  
albo  
 ![image](https://forum.arturhome.pl/uploads/default/original/3X/1/d/1d7c8ccb0b61936b946fc796717672533e26a68e.png)  
Małymi kroczkami do przodu 🙂, w razie czego pisz co udało się zrobić. Też jestem na etapie budowanie encji `fan` z okapu 😉

---

<div class="post-metadata">

**Autor:** ![Irek\_k](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/irek_k/32/22091_2.png) [@Irek\_k](https://forum.arturhome.pl/u/Irek_k)\
**Data wpisu:** [16 Marzec 2024 09:03 UTC](https://forum.arturhome.pl/t/sterownie-rekuperacja-nikol450-modbus-tcp/11920/5 "2024-03-16T09:03:53Z")

</div>

> [@eight-stars](#):
>
> Chciałbym po przełączeniu na Manual sterować prędkościami wentylatorów, np.:  
> Prędkość I - 0%  
> Prędkość II - 30%  
> Prędkość III - 60%  
> Prędkość IV - 100%

Sterowanie obrotami wentylatorów nie jest dobrym rozwiązaniem. Przy prędkości 30% spręż może być tak mały że nie będzie przepływu powietrza w instalacji.  
Lepszym (moim zdaniem) jest sterowanie czasowe wentylatorami pracującymi na 100%.  
Przykładowo - 10% to 6 minut pracy wentylatora w czasie godziny, 30% to 18 minut pracy w ciągu godziny, i tak dalej.

---

<div class="post-metadata">

**Autor:** ![eight-stars](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/e/278dde/32.png) [@eight-stars](https://forum.arturhome.pl/u/eight-stars)\
**Data wpisu:** [17 Marzec 2024 09:38 UTC](https://forum.arturhome.pl/t/sterownie-rekuperacja-nikol450-modbus-tcp/11920/6 "2024-03-17T09:38:43Z")

</div>

dzięki za nakierowanie, tak też zacznę robić… 🙂

---

<div class="post-metadata">

**Autor:** ![eight-stars](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/e/278dde/32.png) [@eight-stars](https://forum.arturhome.pl/u/eight-stars)\
**Data wpisu:** [17 Marzec 2024 09:42 UTC](https://forum.arturhome.pl/t/sterownie-rekuperacja-nikol450-modbus-tcp/11920/7 "2024-03-17T09:42:32Z")

</div>

Cześć, dzięki za info. Z tymi trybami to trochę na wyrost. Najbardziej interesuje mnie ustawienie wentylatorów na 0%. Głównie chodzi o to momenty kiedy na dworze mam kiepskiej jakości powietrze. Wtedy tylko skręcam obroty do 0%.  
Do sterowania nawiewami mam cały harmonogram z podziałem na dni i godziny. mogę sobie ustawiać dowolnie te wartości.

---

<div class="post-metadata">

**Autor:** ![eight-stars](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/e/278dde/32.png) [@eight-stars](https://forum.arturhome.pl/u/eight-stars)\
**Data wpisu:** [19 Marzec 2024 15:42 UTC](https://forum.arturhome.pl/t/sterownie-rekuperacja-nikol450-modbus-tcp/11920/8 "2024-03-19T15:42:09Z")

</div>

Dzięki @macek jeszcze raz 🙂  
posiłkując się Twoimi wskazówkami z posta:

> [@Protokół Modbus, rekuperator HG hava](https://forum.arturhome.pl/t/protokol-modbus-rekuperator-hg-hava/9678/8):
>
> Nie wiem jak to chciałeś zrobić ale wystarczy prosty przycisk na dashboardzie w HA (karty typu przycisk): show\_name: true show\_icon: true type: button name: Modbus write show\_state: false tap\_action: action: call-service service: modbus.write\_register data: value: 100 hub: hub1 address: 12 slave: 1 Oczywiście zakładam, że HA jest zintegrowany z urządzeniem Modbus i jest modbus masterem.

udało mi się utworzyć zwykły przycisk którym mogę wyzerować nawiewy lub dodać nowy z inną prędkością.

Teraz spróbuję to jeszcze jakoś ogarnąć estetycznie jak powyżej.

Jak pisałeś małymi kroczkami do przodu 🙂

---

<div class="post-metadata">

**Autor:** ![p1ter](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/p/a183cd/32.png) [@p1ter](https://forum.arturhome.pl/u/p1ter)\
**Data wpisu:** [11 Grudzień 2025 11:10 UTC](https://forum.arturhome.pl/t/sterownie-rekuperacja-nikol450-modbus-tcp/11920/9 "2025-12-11T11:10:47Z")

</div>

Hej!

Uruchomiłem komunikację po modbus z rekuperatorem DEFRO DRX. Trafiłem na ten temat jak próbowałem stworzyć fan template. Nie ma zbyt wielu przykładów w internecie i trochę czasu zajęło mi dopracowanie tego. Wrzucam jak to wygląda oraz mój kod dla potomnych.

Karta:

 ![image](https://forum.arturhome.pl/uploads/default/original/3X/9/4/94133299b07208e04709210f48e50630507b62f0.png)

Kod:

```auto
fan:
  - name: "Defro - Fan Mode"
    unique_id: "fan.defro_fan_mode"
    state: >-
      {{ is_state('binary_sensor.defro_status', 'on') }}
    percentage: >-
      {% set gear = states('sensor.defro_bieg_zadany_max') | int(0) %}
      {% if gear == 0 %} 0
      {% elif gear == 1 %} 33
      {% elif gear == 2 %} 66
      {% elif gear == 3 %} 100
      {% else %} 0
      {% endif %}
    speed_count: 3

    turn_on:
      - action: modbus.write_register
        data:
          slave: 1
          address: 157
          value: >-
            {% set p = percentage | int %}
            {% if p <= 0 %} 0
            {% elif p <= 33 %} 1
            {% elif p <= 66 %} 2
            {% else %} 3
            {% endif %}
          hub: DefroBMS

    turn_off:
      - action: modbus.write_register
        data:
          slave: 1
          address: 157
          value: 0
          hub: DefroBMS

    set_percentage:
      - action: modbus.write_register
        data:
          slave: 1
          address: 157
          value: >-
            {% set p = percentage | int %}
            {% if p <= 0 %} 0
            {% elif p <= 33 %} 1
            {% elif p <= 66 %} 2
            {% else %} 3
            {% endif %}
          hub: DefroBMS

    preset_modes:
      - "normalny"
      - "urlop"
      - "okna"

    preset_mode: >-
      {% if is_state('switch.defro_urlop', 'on') %}
        urlop
      {% elif is_state('switch.defro_okna', 'on') %}
        okna
      {% else %}
        normalny
      {% endif %}

    set_preset_mode:
      - choose:
          - conditions: "{{ preset_mode == 'urlop' }}"
            sequence:
              - action: switch.turn_off
                target:
                  entity_id:
                    - switch.defro_okna
              - action: switch.turn_on
                target:
                  entity_id: switch.defro_urlop

          - conditions: "{{ preset_mode == 'okna' }}"
            sequence:
              - action: switch.turn_off
                target:
                  entity_id:
                    - switch.defro_urlop
              - action: switch.turn_on
                target:
                  entity_id: switch.defro_okna

          - conditions: "{{ preset_mode == 'normalny' }}"
            sequence:
              - action: switch.turn_off
                target:
                  entity_id:
                    - switch.defro_urlop
                    - switch.defro_okna

```
