RS485: Energia + Growatt + Eastron SDM630 Modbus V2

Witam
Działa wam komunikacja po RS485 po upgrade do core 10.2023?

U mnie również modbus wyleciał po aktualizacji. Usunąłem “count” z konfiguracji sensorów modbusa według zaleceń z linku.

Również poszedłem tym tropem ale niestety skończyło się na downgrade core a następnie przeniesieniu modbusa do ESPhome, obecnie mam przez konwerter uart to rx485 podłączony licznik oraz inwerter Growatt do NodeMCU i połączony do HA.
Niestety usunięcie z konfiguracji “count” spowodowało, że odczyt parametrów z SDM630 nie działał po restarcie HA były parametry ale się one nie odświeżały, Growatt działał poprawienie bez sensu było trzymać równoległe dwa połączenia HA → RS485.

@Kamil26F
Przyjrzę się tej konfiguracji (jestem autorem tego wpisu). Robiłem ją na szybko i zostawiłem. Też zauważyłem, że powyżej 6535 W (a nawet produkcja w kWh) spada do zera. Być może jest błąd w typach danych ale tym zajmę się w przeciągu tygodnia.

@arnie280 mi SDM630 działa prawidłowo. HA mam zaktualizowany do najnowszej wersji.

Przykładowa konfiguracja:

- name: SDM630 L1 total kWh
  unit_of_measurement: kWh
  slave: 2
  address: 358
  input_type: input
  data_type: float32
  precision: 2
  scan_interval: 600
  device_class: energy
  state_class: total_increasing

Możemi ktoś wytłumaczyćco może być nie tak. Po zaniku napięcia na falowniku Growatt komunikacja z licznikiem SDM630 przestaje działać, ponownie zacznie działać po “pobudce” falownika. Oto mój skrypt:

 #modbus:
 # SDM630 PowerMeter & Growatt
  - name: ebyteRS485
    type: rtuovertcp
    host: 192.168.254.135
    port: 502
    close_comm_on_error: true
    message_wait_milliseconds: 30
    retries: 15
    timeout: 10
    delay: 0
    sensors:


#Modbus SDM630
      - name: SDM630 Napięcie L1-0
        unique_id: SDM630_L1-0
        data_type: float32
        precision: 2
        address: 0
        input_type: input
        slave: 2
        unit_of_measurement: V
        state_class: measurement
        device_class: voltage
        scan_interval: 5

Zasilasz licznik z falownika? Jeśli tak, to nie ma zasilania, gdy falownik nie pracuje.

Ten parametr jest podejrzany, jedyne co znalazłem na temat

The close_comm_on_error configuration is no longer optional, sockets will always be closed on error.

Licznik zasilany z bezpośrednio z sieci AC spięty na wspólnej magistrali RS485 z growatem dostęp przez serial port RS485/ethernet. Po wyrzuceniu kodu z growatem komunikacja z licznikiem działa.

1 polubienie

Prawdopodobnie dlatego, że Growatt pełni funkcję MASTERA. Master może być tylko jeden. Niestety musisz wybrać, albo widzisz statystyki w HA albo w aplikacji Growatta.

Ja u siebie mam takie adresy:
001 Growatt
002 SDM630
003 SDM72D-M
010 Regulator grzałek EL-CAR

Ostatnio zmieniłem też konwerter z “RS485 to USB” i na “RS485 to ETH” (ale to ze względu na przemeblowanie i inne ułożenie kabli.

Daj znać czy widzisz zużycie domu w aplikacji Growatta. Jeżeli tak to poszperaj w ustawieniach falownika i ustaw tak aby był tylko jako Slave.

@bielen2k … wyciągasz wnioski odwrotne do zachowania układy. Wtedy modbus działałby gdy falownik się wyłączy.

@RobinI30 no tak =) Po prostu wyszedłem z innego założenia.

Licznik powinien być wpięty w rozdzielni w AC tuż zaraz na wejściu:
[podwórko] licznik z ZE ↔ przewód 3 fazowy [/podwórko] ↔ [dom] wyłącznik główny ↔ SDM630 ↔ reszta domu [/dom]

Jeżeli tak jest podpięty to problem powinien być w kodzie.

@Mario_R pokaż przykładowy kod z Growatta (bo z SDM zamieściłeś wyżej).

licznik sdm630 wpięty w rozdzielni, HA jako master, sdm630 slave2, Growat slave1

oto kod:

      - name: SDM630 L2 total kWh
        unique_id: SDM630_L2_total_kWh
        data_type: float32
        precision: 2
        address: 360
        input_type: input
        slave: 2
        unit_of_measurement: kWh
        state_class: total
        device_class: energy
      - name: SDM630 L3 total kWh
        unique_id: SDM630_L3_total_kWh
        data_type: float32
        precision: 2
        address: 362
        input_type: input
        slave: 2
        unit_of_measurement: kWh
        state_class: total
        device_class: energy
#Growat
      - name: G10KTL3X Inverter status
        slave: 1
        address: 0
        input_type: input
        data_type: uint16
        precision: 0
        scale: 1
      - name: G10KTL3X Input power l
        unit_of_measurement: kW
        slave: 1
        address: 2
        input_type: input
        data_type: uint16
        precision: 1
        scale: 0.0001
        device_class: energy

@Mario_R kod jest poprawny. Zakładam, że licznik mimo wyłączonego falownika, działa poprawnie a jedynie nie możesz skomunikować się z nim przez RS485.

Czy użyłeś skręconych przewodów w sieci RS485 (np dwie żyły zielona i biało zielona z kabla UTP cat 5e)? Czy urządzenia masz połączone szeregowo czy raczej jest to gwiazda? Jeżeli szeregowo, spróbuj zmienić na gwiazdę. Jeżeli nie masz skręconych kabli to musisz takie zastosować.

Jedną rzecz możesz poprawić w kodzie.
Zmień “state_class” z total na total_increasing. Powinieneś to stosować z licznikami gdzie kolejna wartość jest rosnąca (liczniki prądu, wody, gazu). Ja miałem taki błąd jak Ty i po wymianie podlicznika od pompy ciepła (który uległ awarii) nagle statystyki pokazały mi -7000 kWh (minus 7 tys…). Muszę teraz przeliczyć zapisy w bazie danych by naprawić statystyki :confused:

przewód to skrętka kat. 5e, przewody użyte z jednej pary

Jak to masz podłączone w falowniku?

Ok… pytania nie było :slight_smile:

Zaciski 3 i 4 w Growacie
W logach z HA znalazłem coś takiego:
Logger: homeassistant.components.modbus.modbus
Source: components/modbus/modbus.py:355
Integration: Modbus (documentation, issues)
First occurred: 5 listopada 2023 20:16:19 (55 occurrences)
Last logged: 18:26:10

Pymodbus: ebyteRS485: Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 4 bytes (0 received)
Pymodbus: ebyteRS485: Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response