Rekuperator Thessla, problem z modbusem

Dzięki wielkie. Teraz nie tylko działa, ale i wygląda :slight_smile:

1 polubienie

Witam,
Korzystam od kilku miesięcy z tego kodu i w momencie włączenia trybu specjalnego Otwarte Okna albo poprzez HA albo przez panel na rekuperatorze mam komunikat
Unexpected response from modbus device slave 10 register 4224, got 0x a

Wyłączenie tego trybu specjalnego (rejestr 4224 wartość 10) skutkuje zaprzestaniem powstawania błędów.
Ktoś zna przyczynę?

Funkcja otwarte okna ma kod 10 czyli w hex 0xa. Pokaż definicję odczytu z rejestru 4224, coś namieszane z dekodowaniem danych. Skąd ta spacja pomiędzy 0x i a ?

Poniżej cała konfiguracja. Rejestr 4224 jest odczytywany kilka razy i nie wiem, którego obiektu (sensor.rekuperator_tryb_specjalny) czy też przełączników problem dotyczy.
Wklejony zapis jest wyświetlany w logu - to jest przeklejony komunikat
Włączenie innego trybu specjalnego ewidencjonowanego w rejestrze 4224 jak np. wietrzenie czy kominek także powoduje błąd, dla wietrzenia to

Unexpected response from modbus device slave 10 register 4224, got 0x 7

    # REKUPERATOR MODBUS
modbus:
  - type: tcp
    host: 192.168.8.209
    port: 4196
    name: reku
    timeout: 5
    delay: 2
    sensors:
      - name: "Rekuperator Temperatura Czerpnia"      #outside_temperature      # Temperatura powietrza zewnętrznego (TZ1)
        slave: 10
        address: 16
        input_type: input
        scan_interval: 120
        data_type: int16
        unit_of_measurement: °C
        scale: 0.1
        precision: 1
        unique_id: sensor.rekuperator_temperatura_czerpnia
      - name: "Rekuperator Temperatura Nawiew"        #supply_temperature       # Temperatura powietrza nawiewanego (TN1)
        slave: 10
        address: 17
        input_type: input
        scan_interval: 120
        data_type: int16
        unit_of_measurement: °C
        scale: 0.1
        precision: 1
        unique_id: sensor.rekuperator_temperatura_nawiew
      - name: "Rekuperator Temperatura Wywiew"        #exhaust_temperature      # Temperatura powietrza usuwanego z pomieszczenia (TP)
        slave: 10
        address: 18
        input_type: input
        scan_interval: 120
        data_type: int16
        unit_of_measurement: °C
        scale: 0.1
        precision: 1
        unique_id: sensor.rekuperator_temperatura_wywiew
      - name: "Rekuperator Temperatura za FPX"        #fpx_temperature          # Temperatura powietrza za nagrzewnicą FPX (TZ2)
        slave: 10
        address: 19
        input_type: input
        scan_interval: 120
        data_type: int16
        unit_of_measurement: °C
        scale: 0.1
        precision: 1
        unique_id: sensor.rekuperator_temperatura_za_fpx
      - name: "Rekuperator Temperatura PCB"           #ambient_temperature      # Temperatura otoczenia (TO)
        slave: 10
        address: 22
        input_type: input
        data_type: int16
        scan_interval: 120
        unit_of_measurement: °C
        scale: 0.1
        precision: 1
        unique_id: sensor.rekuperator_temperatura_pcb
      - name: "Rekuperator Strumień nawiew"
        slave: 10
        address: 256
        input_type: holding
        scan_interval: 10
        data_type: int16
        unit_of_measurement: m3/h
        scale: 1
        precision: 1
      - name: "Rekuperator Strumień wywiew"
        slave: 10
        address: 257
        input_type: holding
        scan_interval: 10
        data_type: int16
        unit_of_measurement: m3/h
        scale: 1
        precision: 1
      - name: "Rekuperator lato zima"
        scan_interval: 11
        data_type: int16
        slave: 10
        address: 4209
        input_type: holding
      - name: "Rekuperator bypass status"
        scan_interval: 11
        data_type: int16
        slave: 10
        address: 4330
        input_type: holding
      - name: "Rekuperator tryb pracy"
        scan_interval: 6
        data_type: int16
        slave: 10
        address: 4208
        input_type: holding
      - name: "Rekuperator tryb specjalny"           #specialMode
        scan_interval: 6
        slave: 10
        address: 4224
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
        unique_id: sensor.rekuperator_tryb_specjalny
      - name: "Rekuperator speedmanual"       #airFlowRateManual                # Intensywność wentylacji - tryb MANUALNY
        scan_interval: 5
        data_type: int16
        unit_of_measurement: "%"
        slave: 10
        address: 4210
        input_type: holding
        unique_id: sensor.rekuperator_speedmanual
      - name: "Rekuperator SpeedTemporary"    #airFlowRateTemporary             # Intensywność wentylacji - tryb CHWILOWY
        scan_interval: 5
        data_type: int16
        unit_of_measurement: "%"
        slave: 10
        address: 4211
        input_type: holding
        unique_id: sensor.rekuperator_speedtemporary
      - name: "Rekuperator fpx flaga"
        scan_interval: 29
        data_type: int16
        unit_of_measurement: ""
        slave: 10
        address: 4192
        input_type: holding
      - name: "Rekuperator FPX tryb"
        scan_interval: 29
        data_type: int16
        unit_of_measurement: ""
        slave: 10
        address: 4198
        input_type: holding
      - name: "Rekuperator Alarm"
        scan_interval: 63
        slave: 10
        data_type: int16
        address: 8192
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator Error"
        scan_interval: 63
        slave: 10
        address: 8193
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator FPX zabezpieczenie termiczne"
        scan_interval: 63
        slave: 10
        address: 8208
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator Awaria Wentylatora Nawiewu"
        scan_interval: 63
        slave: 10
        address: 8222
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator Awaria Wentylatora Wywiewu"
        scan_interval: 63
        slave: 10
        address: 8223
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator Awaria CF Nawiewu"
        scan_interval: 63
        slave: 10
        address: 8330
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator Awaria CF Wywiewu"
        scan_interval: 63
        slave: 10
        address: 8331
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator Wymiana Filtrów"          #E252              # Sygnalizacja konieczności wymiany filtrów w centrali wyposażonej w presostat
        scan_interval: 63
        slave: 10
        address: 8444
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
    binary_sensors:
      - name: "Rekuperator Silownik bypassu"         #bypass            # Stan wyjścia siłownika przepustnicy bypass
        scan_interval: 5
        slave: 10
        address: 9
      - name: "Rekuperator Potwierdzenie pracy"      #power_supply_fans # Stan wyjścia przekaźnika zasilania wentylatorów
        scan_interval: 1
        slave: 10
        address: 11
    switches:
      - name: "Rekuperator Okna"                     #specialMode       # 10 - OTWARTE OKNA
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 10
        command_off: 0
        verify:
      - name: "Rekuperator Kominek"                  #specialMode       # 2 - KOMINEK
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 2
        command_off: 0
        verify:
      - name: "Rekuperator Wietrzenie"               #specialMode       # 7 - WIETRZENIE (aktywacja ręczna)
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 7
        command_off: 0
        verify:
      - name: "Rekuperator Pusty Dom"                #specialMode       # 11 - PUSTY DOM
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 11
        command_off: 0
        verify:
      - name: "Rekuperator bypass"                   #bypassOff         # Dezaktywacja działania bypass 
        scan_interval: 5
        slave: 10
        address: 4320
        command_on: 0                                                   # 0 - aktywny
        command_off: 1                                                  # 1 - nieaktywny (pasywny)
        verify:
      - name: "Rekuperator ON/OFF"                   #onOffPanelMode    # ON / OFF - załączanie urządzenia
        scan_interval: 1
        slave: 10
        address: 4387
        command_on: 1                                                   # ON (urządzenie włączone)
        command_off: 0                                                  # OFF (urządzenie wyłączone)
        verify:
      - name: "Rekuperator tryb manualny"            #mode              # Tryb pracy AirPack
        scan_interval: 1
        slave: 10
        address: 4208
        command_on: 1                                                   # 1 - manualny
        command_off: 2                                                  # 2 - chwilowy
        verify:
        unique_id: switch.rekuperator_tryb_manualny
      - name: "Rekuperator tryb auto"                #mode              # Tryb pracy AirPack
        scan_interval: 1
        slave: 10
        address: 4208
        command_on: 0                                                   # 0 - automatyczny
        command_off: 1                                                  # 1 - manualny
        unique_id: switch.rekuperator_tryb_auto
      - name: "Rekuperator zima"
        scan_interval: 7
        slave: 10
        address: 4209
        command_on: 1
        command_off: 0
        verify:


sensor:
  - platform: integration
    source: sensor.rekuperator_odzyskana_moc
    name: rekuperator_odzyskana_energia
    unit_prefix: k
    round: 3

Czy po tym rekuperator przechodzi we właściwy tryb? Trzeba wychwycić czy źródłem błędu jest odczyt czy zapis do rejestru. To pokazuje się cyklicznie co 6sek?

Problemem najprawdopodobniej jest odczyt we wszystkich switch, który weryfikuje ich stan, jak usuniesz verify ze wszystkich switch dla tego rejestru 4224 to problem znika. Wg. dokumentacji HA, wartości powinny być czytane i pisane jako dziesiętne, a tutaj z jakiegoś powodu jest szesnastkowa. HA spodziewa się 10 a dostaje 0xA.
Spróbuj tak:

 switches:
      - name: "Rekuperator Okna"                     #specialMode       # 10 - OTWARTE OKNA
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 0xA
        command_off: 0x0
        verify:
      - name: "Rekuperator Kominek"                  #specialMode       # 2 - KOMINEK
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 0x2
        command_off: 0x0
        verify:
      - name: "Rekuperator Wietrzenie"               #specialMode       # 7 - WIETRZENIE (aktywacja ręczna)
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 0x7
        command_off: 0x0
        verify:
      - name: "Rekuperator Pusty Dom"                #specialMode       # 11 - PUSTY DOM
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 0xB
        command_off: 0x0
        verify:

Edit:
Właśnie to zmieniłem u siebie i wychodzi na to, że tak jest poprawnie, lecz ja u siebie mam logowanie tylko błędów tylko critical, do testów włączyłem normalne logi, ten wpis pojawia się w logach, a wszystko i tak działa - nie ma statusu critical więc go olałem, ale teraz jak zmieniłem na hex, to nie ma wpisów w logach, a wszystko działa - więc rekuperator chyba na ten rejestr chce HEX (w modbus w hex najczęściej rejestry typu float pracują). Przetestuj u siebie.

1 polubienie

Zmieniłem u siebie, ale problem nadal występuje. Co jedną sekundę wrzuca 3 wystąpienia błędów.
Moja obecna konfiguracja poniżej:

    # REKUPERATOR MODBUS
modbus:
  - type: tcp
    host: 192.168.8.209
    port: 4196
    name: reku
    timeout: 5
    delay: 2
    sensors:
      - name: "Rekuperator Temperatura Czerpnia"      #outside_temperature      # Temperatura powietrza zewnętrznego (TZ1)
        slave: 10
        address: 16
        input_type: input
        scan_interval: 120
        data_type: int16
        unit_of_measurement: °C
        scale: 0.1
        precision: 1
        unique_id: sensor.rekuperator_temperatura_czerpnia
      - name: "Rekuperator Temperatura Nawiew"        #supply_temperature       # Temperatura powietrza nawiewanego (TN1)
        slave: 10
        address: 17
        input_type: input
        scan_interval: 120
        data_type: int16
        unit_of_measurement: °C
        scale: 0.1
        precision: 1
        unique_id: sensor.rekuperator_temperatura_nawiew
      - name: "Rekuperator Temperatura Wywiew"        #exhaust_temperature      # Temperatura powietrza usuwanego z pomieszczenia (TP)
        slave: 10
        address: 18
        input_type: input
        scan_interval: 120
        data_type: int16
        unit_of_measurement: °C
        scale: 0.1
        precision: 1
        unique_id: sensor.rekuperator_temperatura_wywiew
      - name: "Rekuperator Temperatura za FPX"        #fpx_temperature          # Temperatura powietrza za nagrzewnicą FPX (TZ2)
        slave: 10
        address: 19
        input_type: input
        scan_interval: 120
        data_type: int16
        unit_of_measurement: °C
        scale: 0.1
        precision: 1
        unique_id: sensor.rekuperator_temperatura_za_fpx
      - name: "Rekuperator Temperatura PCB"           #ambient_temperature      # Temperatura otoczenia (TO)
        slave: 10
        address: 22
        input_type: input
        data_type: int16
        scan_interval: 120
        unit_of_measurement: °C
        scale: 0.1
        precision: 1
        unique_id: sensor.rekuperator_temperatura_pcb
      - name: "Rekuperator Strumień nawiew"
        slave: 10
        address: 256
        input_type: holding
        scan_interval: 10
        data_type: int16
        unit_of_measurement: m3/h
        scale: 1
        precision: 1
      - name: "Rekuperator Strumień wywiew"
        slave: 10
        address: 257
        input_type: holding
        scan_interval: 10
        data_type: int16
        unit_of_measurement: m3/h
        scale: 1
        precision: 1
      - name: "Rekuperator lato zima"
        scan_interval: 11
        data_type: int16
        slave: 10
        address: 4209
        input_type: holding
      - name: "Rekuperator bypass status"
        scan_interval: 11
        data_type: int16
        slave: 10
        address: 4330
        input_type: holding
      - name: "Rekuperator tryb pracy"
        scan_interval: 6
        data_type: int16
        slave: 10
        address: 4208
        input_type: holding
      - name: "Rekuperator tryb specjalny"           #specialMode
        scan_interval: 6
        slave: 10
        address: 4224
        data_type: int16
        input_type: holding
        unique_id: sensor.rekuperator_tryb_specjalny
      - name: "Rekuperator speedmanual"       #airFlowRateManual                # Intensywność wentylacji - tryb MANUALNY
        scan_interval: 5
        data_type: int16
        unit_of_measurement: "%"
        slave: 10
        address: 4210
        input_type: holding
        unique_id: sensor.rekuperator_speedmanual
      - name: "Rekuperator SpeedTemporary"    #airFlowRateTemporary             # Intensywność wentylacji - tryb CHWILOWY
        scan_interval: 5
        data_type: int16
        unit_of_measurement: "%"
        slave: 10
        address: 4211
        input_type: holding
        unique_id: sensor.rekuperator_speedtemporary
      - name: "Rekuperator fpx flaga"
        scan_interval: 29
        data_type: int16
        unit_of_measurement: ""
        slave: 10
        address: 4192
        input_type: holding
      - name: "Rekuperator FPX tryb"
        scan_interval: 29
        data_type: int16
        unit_of_measurement: ""
        slave: 10
        address: 4198
        input_type: holding
      - name: "Rekuperator Alarm"
        scan_interval: 63
        slave: 10
        data_type: int16
        address: 8192
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator Error"
        scan_interval: 63
        slave: 10
        address: 8193
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator FPX zabezpieczenie termiczne"
        scan_interval: 63
        slave: 10
        address: 8208
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator Awaria Wentylatora Nawiewu"
        scan_interval: 63
        slave: 10
        address: 8222
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator Awaria Wentylatora Wywiewu"
        scan_interval: 63
        slave: 10
        address: 8223
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator Awaria CF Nawiewu"
        scan_interval: 63
        slave: 10
        address: 8330
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator Awaria CF Wywiewu"
        scan_interval: 63
        slave: 10
        address: 8331
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
      - name: "Rekuperator Wymiana Filtrów"          #E252              # Sygnalizacja konieczności wymiany filtrów w centrali wyposażonej w presostat
        scan_interval: 63
        slave: 10
        address: 8444
        data_type: int16
        input_type: holding
        unit_of_measurement: ""
    binary_sensors:
      - name: "Rekuperator Silownik bypassu"         #bypass            # Stan wyjścia siłownika przepustnicy bypass
        scan_interval: 5
        slave: 10
        address: 9
      - name: "Rekuperator Potwierdzenie pracy"      #power_supply_fans # Stan wyjścia przekaźnika zasilania wentylatorów
        scan_interval: 1
        slave: 10
        address: 11
    switches:
      - name: "Rekuperator Okna"                     #specialMode       # 10 - OTWARTE OKNA
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 0xA
        command_off: 0x0
        verify:
      - name: "Rekuperator Kominek"                  #specialMode       # 2 - KOMINEK
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 0x2
        command_off: 0x0
        verify:
      - name: "Rekuperator Wietrzenie"               #specialMode       # 7 - WIETRZENIE (aktywacja ręczna)
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 0x7
        command_off: 0x0
        verify:
      - name: "Rekuperator Pusty Dom"                #specialMode       # 11 - PUSTY DOM
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 0xB
        command_off: 0x0
        verify:
      - name: "Rekuperator bypass"                   #bypassOff         # Dezaktywacja działania bypass 
        scan_interval: 5
        slave: 10
        address: 4320
        command_on: 0                                                   # 0 - aktywny
        command_off: 1                                                  # 1 - nieaktywny (pasywny)
        verify:
      - name: "Rekuperator ON/OFF"                   #onOffPanelMode    # ON / OFF - załączanie urządzenia
        scan_interval: 1
        slave: 10
        address: 4387
        command_on: 1                                                   # ON (urządzenie włączone)
        command_off: 0                                                  # OFF (urządzenie wyłączone)
        verify:
      - name: "Rekuperator tryb manualny"            #mode              # Tryb pracy AirPack
        scan_interval: 1
        slave: 10
        address: 4208
        command_on: 1                                                   # 1 - manualny
        command_off: 2                                                  # 2 - chwilowy
        verify:
        unique_id: switch.rekuperator_tryb_manualny
      - name: "Rekuperator tryb auto"                #mode              # Tryb pracy AirPack
        scan_interval: 1
        slave: 10
        address: 4208
        command_on: 0                                                   # 0 - automatyczny
        command_off: 1                                                  # 1 - manualny
        unique_id: switch.rekuperator_tryb_auto
      - name: "Rekuperator zima"
        scan_interval: 7
        slave: 10
        address: 4209
        command_on: 1
        command_off: 0
        verify:


sensor:
  - platform: integration
    source: sensor.rekuperator_odzyskana_moc
    name: rekuperator_odzyskana_energia
    unit_prefix: k
    round: 3

@RobinI30 Urządzenie przełącza się we właściwy tryb ale sypie błędami.
Są 3 nowe wystąpienia co jedną sekundę.

Bombardujesz rejestr 4224 w kilku miejscach co 1sek, czyli wysyłasz tą samą komendę odczytu kilka razy w ciągu sekundy - wysyłasz kolejną zanim w kolejce zostanie obsłużona poprzednia.
Wydłuż scan_interval. Pokaż te błędy.

Już wiem dlaczego, testowałem to wyrzucając wszystkie inne wpisy, a zostawiając jeden. Problemem jest taki:
Wysyłając komendę 10 - otwarte okna, rekuperator przechodzi w ten tryb potwierdza i wszystko super.

switches:
      - name: "Rekuperator Okna"                     #specialMode       # 10 - OTWARTE OKNA
        scan_interval: 1
        slave: 10
        address: 4224
        command_on: 0xA
        command_off: 0x0
        verify:

Natomiast, pozostałe tryby dostają niespodziewaną odpowiedź bo przychodzi “10”, a spodziewa się odpowiednio innej liczby, jeżeli dodasz ten switch raz to wszystko działa, zarówno hex, i dec, ale jak dodasz go kilka razy, jako wietrzenie, okna itd., to w jednym przypadku jest ok, a w pozostałych pojawia się błąd, bo spodziewa się 0 dla off, ale różnej wartości dla on, a jak pojawia się inna niż wpisana to pokazuje się ten błąd, a że masz różne tryby to przychodzi różna wartość, chyba jedyne rozwiązanie to nie weryfikować, a stan odczytywać jako sensor i odpowiednio do stanu z sensora ustawiać stan przycisku, ale to zabawa bezsensu lepsze rozwiązanie to olać ten błąd, który nie jest błędem, teraz to sobie przypomniałem już w zeszłym roku z tym walczyłem i doszedłem do tych samych wniosków i po prostu wyłączyłem logi :wink:

Wyłączenie verify powoduje, że jeśli w trakcie pracy trybu specjalnego dokonamy restartu HA to przycisk nie świeci się, można dojść jak pracuje rekuperator na podstawie sensora, jednak w takiej sytuacji chyba lepiej jest zmniejszyć częstość odczytu rejestru i mieć taki błąd niż niepełną informację.
Może kiedyś ktoś się pokusi o dodanie innej obsługi przycisku, ja na ten moment jestem zbyt słaby technicznie
Poniżej zrzut błędu o które prosił RobinI30

Logger: homeassistant.components.modbus.base_platform
Source: components/modbus/base_platform.py:350
Integration: Modbus (documentation, issues)
First occurred: 23:45:38 (3 occurrences)
Last logged: 23:45:38
Unexpected response from modbus device slave 10 register 4224, got 0x a

Możesz zrobić manekiny przełączników modbus i za ich pomocą sterować. Stan tych manekinów ustawiał byś na podstawie odczytanego rejestru. Do tego służy platforma template

Gdy poczytasz to zobaczysz, że można połączyć klika encji ze sobą jako jeden funkcjonalny przełącznik.
W tym temacie zbytnio nie pomogę bo nie znam na tyle dobrze HA aby coś podrzucić. @artpc by wiedział.
Takie rzeczy robę inaczej.

Dziękuję, wygląda na to, że trzeba by pójść drogą o której piszesz.
Trafiłem na artykuł, który wydaje mi się, że opisuje częściowo podobną sytuację, z tymże na ten moment nie czuję się na tyle biegły aby to wykonać.
Wspomniany link.

Na początek możesz próbować stworzyć kilka switch template aby ich stan uaktualniał się na podstawie encji sensor.rekuperator_tryb_specjalny (bez sterowania). Później dołożysz do nich sterowanie i usuniesz valid. Możesz próbować bez ryzyka, że popsujesz to co dotychczas działa.

Ja mam problem z tą zmianą, jak zmienić ten kod by nie krzyczał:


configuration.yaml

template:
  sensor:
    - name: "Rekuperator Sprawność"
      unique_id: "sensor.rekuperator_sprawnosc"
      icon: "mdi:percent"
      unit_of_measurement: "%"
      state: >-
        {% if is_state('binary_sensor.rekuperator_silownik_bypassu', 'off') %}
          {% set t1 = states('sensor.rekuperator_temperatura_czerpnia') | float %}
          {% set t2 = states('sensor.rekuperator_temperatura_nawiew') | float %}
          {% set t3 = states('sensor.rekuperator_temperatura_wywiew') | float %}
          {{ (((t2 - t1) / (t3 - t1)) * 100|float) | round(2, default=0) }}
        {% else %}
          0
        {% endif %}
    - name: "Rekuperator Wysterowanie Nawiew"
      unique_id: "sensor.rekuperator_wysterowanie_nawiew"
      icon: "mdi:percent"
      unit_of_measurement: "%"
      state: >
        {% set flowN = states('sensor.rekuperator_strumien_nawiew') | float %}
        {{ ((flowN * 100) / 320 |float) | round(2, default=0) }}
    - name: "Rekuperator Wysterowanie wywiew"
      unique_id: "sensor.rekuperator_wysterowanie_wywiew"
      icon: "mdi:percent"
      unit_of_measurement: "%"
      state: >
        {% set flowW = states('sensor.rekuperator_strumien_wywiew') | float %}
        {{ ((flowW * 100) / 320|float) | round(2, default=0) }}
    - name: "Rekuperator Odzyskana Moc"
      unique_id: "sensor.rekuperator_odzyskana_moc"
      icon: "mdi:counter"
      unit_of_measurement: "W"
      state: >-
        {% if is_state('binary_sensor.rekuperator_silownik_bypassu', 'off') %}
          {% set strumienN = states('sensor.rekuperator_strumien_nawiew') | float %}
          {% set tcz = states('sensor.rekuperator_temperatura_czerpnia') | float %}
          {% set tn = states('sensor.rekuperator_temperatura_nawiew') | float %}
          {% if states('sensor.rekuperator_temperatura_czerpnia')|float < states('sensor.rekuperator_strumien_nawiew')|float %}
              {{ ((((tn - tcz) * strumienN * 1200) / 3600)|float) | round(2, default=0) }}
          {% else %}
              {{ (((((tn - tcz) * strumienN * 1200) / 3600) * -1)|float) | round(2, default=0) }}
          {% endif %}
        {% else %}
          0
        {% endif %}

A co on krzyczy ? Nic nie słyszę.

a coś takiego :slight_smile:

W YAML ważna jest ilość spacji na początku tak aby “robiło się drzewko” czyli najwyższy parametr startuje od początku linii, a każdy “podparametr” ma wcięcie, ten błąd dotyczy się tych wcięć. Zainstaluj sobie dodatek do HA File Editor - on podpowiada gdzie jest błąd.

Ten kod jest zamieszczony w twoim pliku configuration.yaml ? Jeżeli tak to błędy mogą być randomowe. Staraj się nie wrzucać wszystkiego do configuration.yaml tylko rozdziel swoje pliki, poczytaj o include, packages

https://forum.arturhome.pl/t/package-w-home-assistant/707

Łatwiej jest zapanować nad konfiguracją i poszukiwaniem błędów w pojedynczej konfiguracji jakiegoś urządzenia, sensora ,template…

a to nie jest problem związany z tą zmianą?

Rozumiem, że to jakiś wojenny projekt i będziesz kapał informacjami do śmierci.
Jak na razie to wiadomo, że coś oczekuje zmiennej tablicowej zamiast tego dostaje coś?