Integracja z pompą ciepła przez modbus climates nie działa

Próbuję stworzyć panel climate po modbusie do sterowania pompą ciepła ale nie udaje mi się to.
Zgodnie z Modbus - Home Assistant stworzyłem taki wpis w pliku konfiguracji modbusa:

    climates:
    - name: "Pompa ciepła"
      slave: 1
      address: 97
      input_type: holding
      count: 2
      data_type: custom
      max_temp: "26"
      min_temp: "18"
      precision: 1
      scale: 0.1
      max_temp: "24"
      structure: ">f"
      target_temp_register: 46
      temp_step: "0.1"
      temperature_unit: "°C" 

Niestety wygląda to tak:


Więc z jakiegoś powodu nie odczytuje prawidłowo danych, encje na zrzucie wyglądają tak:

    sensors:
    - name: "Pompa ciepła temperatura w domu"
      slave: 1
      address: 97
      input_type: holding
      scan_interval: 1
      data_type: int16
      unit_of_measurement: "°C"
      scale: 0.1
      precision: 1
    - name: "Pompa ciepła temperatura zadana pokoju"
      slave: 1
      address: 46
      input_type: holding
      scan_interval: 30
      data_type: int16
      unit_of_measurement: "°C"
      scale: 0.1
      precision: 1

Chciałbym aby panel termostatu pokazywał temperaturę i pozwalał zmieniać tą zadaną, oraz pozwalał przełączyć tryb pracy urządzenia na Auto / Lato / Chłodzenie
Co według dokumentacji modbusa w pompie jest możliwe


Fajnie byłoby dodać tryb Party, lecz tutaj potrzeba dodatkowo wysłać informację z ilością godzin na jaki ma być aktywny, podobnie tryb Wakacje z ilością dni.

Ma ktoś pomysł dlaczego nie pokazuje temperatur ?

Napewno ten config, który pokazałeś ma:

  • błędne wcięcia, popatrz dokładnie w dokumentację,
  • dodatkowo część wartości nie powinna być w " " bo to nie jest tekst.
  • temperature_unit też nie powinna być tak zdefiniowana.

Proponuję zacząć od minimalnej konfiguracji tzn. podać tylko te parametry, które są REQUIRED, jak zadziała to dopiero dopisać kolejne opcjonalne parametry.

Wcięcia są ok, bo gdyby były źle to by HA nie przyjął konfiguracji.
A jeżeli chodzi o " to próbowałem bez, z ’ i z " dla wszystkich tak samo nie działa, wkleiłem ostatnią konfiguracje jaka próbowałem więc z “”.
A dlaczego temperature_unit nie powinna być tak zdefiniowana skoro działa ? (A zmiana jej na C nie zmienia nic).
Taka konfiguracja tak samo nie działa, takze to nie wina “”

    climates:
    - name: "Pompa ciepła"
      slave: 1
      address: 97
      input_type: holding
      count: 2
      data_type: custom
      max_temp: 26
      min_temp: 18
      precision: 1
      scale: 0.1
      structure: ">f"
      target_temp_register: 46
      temp_step: 0.1
      temperature_unit: C 

Na minimalnej konfiguracji, która “weryfikuje” się jako prawidłowa w HA

    climates:
    - name: "Pompa ciepła"
      slave: 1
      address: 97
      input_type: holding
      count: 2
      data_type: custom
      structure: ">f"
      target_temp_register: 46
      temperature_unit: C

Również efekt ten sam…

Dzięki za sprawdzenie, czy próbowałeś innym programem odczytać dostepne rejestrów pompy przez Modbus? Np. programem CAS Modbus Scanner - Chipkin Automation Systems? Po pierwsze zweryfikujesz i możesz porównać parametry transmisji, po drugie dostajesz tablicę wszystkich rejestrów, które możesz także porównać z ustawieniami pompy (np. na panelu LCD), np (rysunek pochodzi z innego wątkup na forum):

Problem z pewnością leży także w odczycie (i konwersji odczytanych wartości z ramek Modbus) current temperature i target temperature bo końcowe wartości tych zmiennych to poprostu zero.

Widzę, że poprawnie odczytałeś dane w “Pompa ciepła temperatura w domu” i “Pompa ciepła temperatura zadana pokoju” a przy encji climate użyłeś całkiej innej struktury odczyty danych, może spróbuj zrobić analogicznie jak wcześniej - count: 1, data_type: int16. Bez dokumentacji Modbus to wróżenie z fusów, czasami dokumentacja ma błędy a wykorzystanie innego programu napewno rozjaśni temat.

A co do wcięć, to OK - weryfikacja konfiguracji przechodzi ale napewno nie masz tak jak jest w dokumentacji, porównaj sobie moje light z Modbusa z Twoim climate z Modbusa, dla mnie jest różnica, ja robie tak jak jest w dokumentacji:

image

Oczywiście konfigurowałem to tak, jak pozostałe ale problem jest taki, że konfiguracja j/w to jedyna konfiguracja jaką HA przyjmuje :frowning:




Tak odczytywałem te dane innym programem, jak również odczytuje je w HA, nie działa tylko w climates.

Zmiana wcięć nic nie daje, obie wersje weryfikuje jako prawidłową i obie nie działają w ten sam sposób :frowning:

Powiem krótki, zrobisz jak chcesz, ja moją dalszą pomoc uzależniam od bezwzględnego trzymania się dokumentacji HA, naprawdę nie masz czasu na niepotrzebne dyskusji, że “wcięcia są OK bo weryfikacja przechodzi”, sorry nie mam na to czasu na takie dyskusji, wzajemnie udawadnianie sobie, itd.

BTW: a na rysunkach masz dokładnie napisane w czym problem:

image
image

Ale to Tylko Ty wiesz jak to wyglada :wink:

Poprawiłem strukturę na taką jak mówi dokumentacja, ale to nic nie zmienia - nie dyskutuję, że tego nie zrobię tylko, napisałem, że zrobiłem i nic nie dało, oraz, że w obu przypadkach weryfikuje jako poprawną.

Mam napisane w czym problem dlatego wpisałem w climates: count: 2 i data_type: custom bo jedynie wtedy konfiguracja była weryfikowana jako poprawna, a rejestr powinien być czytany jako uint16 (zgodnie z dokumentacją modbusa pompy), ale w HA w climates nie działa ani jako int16 ani uint16, za to w sensors działa jako int16.
Wychodzi na to, że dla climates musi zawsze być data type custom bo inaczej nie weryfikuje konfiguracji, a dla mojego rejestru powinno być uint16 (lub int16) ale się nie da. Bo jak usunę structure i dodam jako uint16 lub int16 to pokazuje:


image

@maciek … nie on pierwszy ma z tym problem

Więc może jest coś na rzeczy?
Może spróbuj na początek zadawać temperaturę za pomocą suwaka.

@dar3k Na razie to są Twoje wnioski oparte o Twoją wiedzę na podstawie “tak odczytywałem te dane innym programem, jak również odczytuje je w HA”, ja nadal muszę wróżę z fusów :grin:. Pisząc pierwszego posta sporo rzeczy pominałeś, które wystąpiły wcześniej, co jeszcze czeka :wink:

@RobinI30 to issue w Githabie ma status close, dotyczy starej wersji HA i starej wersji integracji, nie sądzę, że problem po 3 latach nadal istnieje.

Coś tu jest mega dziwne bo:
Taka konfiguracja zwraca “niedostępny”

    climates:
      - name: "Pompa ciepła"
        slave: 1
        address: 97
        input_type: holding
        data_type: int16
        max_temp: 26
        min_temp: 18
        precision: 1
        scale: 0.1
        target_temp_register: 46
        temp_step: 0.1
        temperature_unit: "°C"

Taka konfiguracja działa :thinking:

image

    climates:
      - name: "Pompa ciepła"
        address: 97
        input_type: holding
        data_type: int16
        max_temp: 26
        min_temp: 18
        precision: 1
        scale: 0.1
        target_temp_register: 46
        temp_step: 0.1
        temperature_unit: "°C"

Taka konfiguracja zwraca niedostępny:
image

    sensors:
       - name: "Pompa ciepła zadana temperatura powrotu"
         address: 53
         input_type: holding
         scan_interval: 1
         data_type: int16
         unit_of_measurement: "°C"
         scale: 0.1
         precision: 1

Taka konfiguracja działa

    sensors:
    - name: "Pompa ciepła zadana temperatura powrotu"
      slave: 1
      address: 53
      input_type: holding
      scan_interval: 1
      data_type: int16
      unit_of_measurement: "°C"
      scale: 0.1
      precision: 1

Zgodnie z dokumentacją modbusa pompa powinna być dostępna pod slave 1.

I nie ma tutaj żadnego znaczenia czy pytam tak:

    - name: "Pompa ciepła"
      address: 97
      input_type: holding
      data_type: int16
      max_temp: "26"
      min_temp: "18"
      precision: "1"
      scale: "0.1"
      target_temp_register: 46
      temp_step: "0.1"
      temperature_unit: "°C" 

Czy tak

    climates:
      - name: "Pompa ciepła"
        address: 97
        input_type: holding
        data_type: int16
        max_temp: 26
        min_temp: 18
        precision: 1
        scale: 0.1
        target_temp_register: 46
        temp_step: 0.1
        temperature_unit: "°C" 

Ważne aby nie było tam slave: 1 … także struktura nie ma znaczenia o ile HA weryfikuje konfigurację jako poprawną :stuck_out_tongue:

A możesz wskazać różnice? Będzie prościej i szybciej.

@dar3k tylko nie mów mi teraz, że masz integracje Modbus TCP jak poniżej, np.

modbus:
  - name: "hub1"
    type: tcp
    host: IP_ADDRESS
    port: 502

bo tylko w przypadku takiego połączenie adres slave jest opcjonalny.

Tak, dokładnie:

  - name: "pompa"
    type: tcp
    host: 192.168.0.111
    port: 502
    timeout: 5
    delay: 5

A jak dodać sterowanie Lato, Auto, Chłodzenie ? W climate jest opcja hvac_mode tylko jak to do modbusa wrzucić ? Szukałem różnych przykładów i nie ma z modbusem za wiele.

Mam nauczkę, że trzeba pytać o wszystko. Jakbyś pokazał print screena z programu CAS Modbus Scanner wiele rzeczy by się wyjaśniło od razu i skróciło analizę problemu, pamietaj: punkt widzenia zależy od punktu siedzenia.

Tylko tam nie było co pokazywać, dla całego zakresu not available, a co dziwne skan poszedł w ok 2s. Gdzie inne urządzenia skanował długo. Tak jakby nie mógł się dostać na tym porcie do niego (HA wyłączony aby nie zajmował portu)…

Właczyłeś autowykrywanie urządzeń od adresach od 0 do 254:
image
na urządzeniu Modbus TCP:
image
poprzez funkcje Modbus (już nie będę opisywał co oznaczają po kolei funkcji 1, 2, 3 i 4):
image
Lepiej sprawdź co pokazał program dla wiersza z Device=1.

Jak już napisałem wyżej, dla całego zakresu adresów not available…
image

A ping z komputera, na którym uruchomiłeś ten skaner, do adresu 192.168.0.111 działa?

Oczywiście, qmod również odczytuje
image
image

Nie wrzucałem nic z CAS’a bo po prostu nie było co wrzucać, ja nawet nie musiałem tego programu instalować bo go miałem, znam i używam również :slight_smile:

Masz na myśli oprogramowanie QModMaster?

Sorry ale pass, nie dam rady dalej. Poproszę następnego w kolejce do pomagania :grin:.

Tak, QModMaster, a CAS nawet jak dodane ma ręcznie urządzenie to się do niego podłączyć nie może co jest bardzo dziwne, ale tak jest, zresztą w HA to, że działa bez slave: 1 w jednym miejscu, a w innym nie działa jak tego nie ma również jest mega dziwne.