Witam, posiadam sterownik do rekuperacji ecoVENT MIDI firmy PLUM.
instrukcja do sterownika ecoVENT.
Sterownik ma możliwość komunikacji z urządzeniem zewnętrznym po RS485 Modbus RTU, z możliwością nastawy prędkości transmisji, parzystości, liczby bitów stopu, adresu slave (sterownik pracuje jako slave).
Posiadam także konwerter RS485 na USB podpięty do serwera z HA generic x86-64,
konfiguracja w modbus.yaml dla jednego sensora wygląda następująco:
- name: Centrala
type: serial
baudrate: 115200
port: /dev/ttyUSB2
bytesize: 8
method: rtu
parity: N
stopbits: 1
sensors:
- name: Temperatura Nawiewu
address: 6
input_type: input
device_class: temperature
unit_of_measurement: C
slave: 10
count: 3
data_type: float32
precision: 1
offset: 5
scan_interval: 1
W sterowniku mam ustawione dokładnie tak samo, a encje są niedostępne.
przewody A+/B- sprawdzone, próbowałem różnych kombinacji ustawień RS485.
Ma ktoś ten sterownik i podzieli się konfiguracją w modbus.yaml
@Verum w instrukcji, pkt 13.2 - ustawiłeś “Aktywowanie Modbus” na tak? Jeżeli tak, to proponuje na testy obniżenie prędkość transmisji do 9600 bitów, zmiany dokonaj na sterowniku i w HA.
Potem zacznij od najprostszej konfiguracji:
@macek Prędkość transmisji obniżyłem, zredukowałem konfiguracje i aktualnie mój modbus.yaml wygląda następująco:
- name: "Licznik główny"
type: serial
baudrate: 9600
port: /dev/ttyUSB2
bytesize: 8
method: rtu
parity: N
stopbits: 1
sensors:
- name: Napięcie L1
unit_of_measurement: V
device_class: voltage
slave: 1
address: 0
input_type: input
count: 2
data_type: float32
precision: 2
- name: Napięcie L2
unit_of_measurement: V
device_class: voltage
slave: 1
address: 2
input_type: input
count: 2
data_type: float32
precision: 2
- name: Napięcie L3
unit_of_measurement: V
device_class: voltage
slave: 1
address: 4
input_type: input
count: 2
data_type: float32
precision: 2
- name: Prąd L1
unit_of_measurement: A
device_class: current
slave: 1
address: 6
input_type: input
count: 2
data_type: float32
precision: 2
- name: Prąd L2
unit_of_measurement: A
device_class: current
slave: 1
address: 8
input_type: input
count: 2
data_type: float32
precision: 2
- name: Prąd L3
unit_of_measurement: A
device_class: current
slave: 1
address: 10
input_type: input
count: 2
data_type: float32
precision: 2
- name: Moc L1
unit_of_measurement: W
device_class: power
slave: 1
address: 12
input_type: input
count: 2
data_type: float32
precision: 0
- name: Moc L2
unit_of_measurement: W
device_class: power
slave: 1
address: 14
input_type: input
count: 2
data_type: float32
precision: 0
- name: Moc L3
unit_of_measurement: W
device_class: power
slave: 1
address: 16
input_type: input
count: 2
data_type: float32
precision: 0
- name: Moc
unit_of_measurement: W
device_class: power
slave: 1
address: 52
input_type: input
count: 2
data_type: float32
precision: 0
- name: Energia pobór
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
slave: 1
address: 72
input_type: input
count: 2
data_type: float32
precision: 2
- name: Energia generacja
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
slave: 1
address: 74
input_type: input
count: 2
data_type: float32
precision: 2
- name: Napięcie L1-L2
unit_of_measurement: V
device_class: voltage
slave: 1
address: 200
input_type: input
count: 2
data_type: float32
precision: 2
- name: Napięcie L2-L3
unit_of_measurement: V
device_class: voltage
slave: 1
address: 202
input_type: input
count: 2
data_type: float32
precision: 2
- name: Napięcie L3-L1
unit_of_measurement: V
device_class: voltage
slave: 1
address: 204
input_type: input
count: 2
data_type: float32
precision: 2
- name: Centrala
type: serial
baudrate: 9600
port: /dev/ttyUSB1
bytesize: 8
method: rtu
parity: N
stopbits: 1
sensors:
- name: Temperatura Nawiewu
address: 6
slave: 10
scan_interval: 10
encje z Licznika działają poprawnie, z centrali są “niedostępne”.
Licznik także jest wpięty za pomocą konwertera RS485 na USB, przy próbie zamiany konwerterów licznik także działał dobrze, wiec konwertery oba są w porządku.
@Verum
Wklejając YAMLe nie używaj cytowania (bo to rozwala strukturę kodu), lecz konstrukcję z linijkami zawierającymi po 3 apostrofy odwrotne w dodatkowych liniach przed i za kodem (to markdown, tak jakbyś formatował dla githuba).
Możesz podejrzeć o co chodzi w poprawionym poście.
Czyli pierwszy błąd to różne parametry transmisji Modbus a druga kwestia to konfiguracja sensora "
Temperatura Nawiewu" - działa ta wersja “minimalna/okrojona” czy ta Twoja “wypasiona”? Wg mnie w Twojej były błędy jak np. data_type: float32, count: 3. Oczywiście nic nie stoi na przeszkodzie aby rozbudować konfiguracje o device_class, unit_of_measurement itd.
Sterownik w zasadzie nic nie wspiera - jeden adres to dummy dwa bajty (16bitów), które możesz interpretować dowolnie.
Ponieważ dla typu float32 musisz odczytać 32bity, czyli 4 bajty, czyli dwa kolejne adresy - stąd count=2. Dla danych 16bit count=1.
Za jednym razem możesz odczytać dowolną liczbę kolejnych rejestrów, tylko wtedy musisz potrafić sam zdekodować otrzymaną paczkę.
W przypadku błędu encje mogą być niedostępne nie z powodu tego, że strownik czegoś nie wspiera a z tego, że źle interpretujesz odebrane dane.