Kupiłem licznik jak w temacie. W opiniach allegro piszą o łatwej integracji z HA, ja szukam, grzebię i nie potrafię znaleźć żadnego info jak ten licznik dodać do HA. Modbus-rtu ponoć. Ale co dalej? Nic się “automagicznie” dziać nie chce. Interfejs RS485 podłączony, port usb podłączony do VM z HA. Ale co dalej?
Poczytaj:
Licznik energii dwukierunkowy VCX DTS-1964 + ESPHome + Home Asistant - Home Assistant / Integracje - ArturHome
oraz w tematach integracji SDM630 i tym podobnych.
Po restarcie całej VM zaczęło odczytywać dane z licznika. Ale jeszcze jeden problem. Moc chwilowa podawana jest w jednostkach x10Wh. Zatem potrzebuję pomnożyć wynik x 10. Ale w poniższym 100W pobór pokazuje jako 0,10W. Czyli wynik trzeba pomnożyć x 1000 i później ew. pozbyć się przecinka i liczb po. Kombinuję ze state oraz value_template i ciągle błędy. Podpowiecie co mam nie tak?
- name: Moc chwilowa pobór
unit_of_measurement: W
unique_id: “mocchwilowapobor”
device_class: power
slave: 2
address: 0x18
input_type: input
count: 2
data_type: float32
precision: 2
value_template: '{{ states("sensor.moc_chwilowa_pobor") | multiply(1000) }}'
#state: "{{ states('sensor.moc_chwilowa_pobor') * 1000 }}"
The system cannot restart because the configuration is not valid: Invalid config for [modbus]: [value_template] is an invalid option for [modbus]. Check: modbus->modbus->0->sensors->9->value_template. (See /config/configuration.yaml, line 20).
Dodaj: scale: 1000 pod precision: 2.
Value_template to “inna bajka” i nie możesz tu użyć bo nie korzystasz z platformy template.
Ok, to co mogę zrobić aby zmodyfikować wskazanie?
dopisz na końcu to co dopisałem, usuń value…
Kurcze, jakie to było proste. A ja czytam dokumentację i na coś takiego nie natrafiłem. Zasugerowałem się że wszędzie używane są te 2 wpisy. Jak uda mi się w końcu dojść rejestry w liczniku to zamieszczę tutaj konfigurację.
Tutaj większość potrzebnych rzeczy masz, tylko przerobić:
Tak, tak, nie mogę jeszcze znaleźć chwilowej mocy oddawanej, ale to może jutro jak słońce będzie. Być może moc chwilowa zmieni znak na ujemny. Zobaczymy.
Chwilowa jest jako ujemna.as wszystko u mnie w configu
Ok, czyli czeka mnie szukanie kolejnego “myku” który ujemną przekonwertuje za sensor który da się podpiąć w zakładce energia pod produkcję… Pewnie jest to proste, ale nie dla nowicjusza…
moc czynna pobrana:
platform: modbus_controller
id: moc_czynna_pobrana
name: “Moc czynna pobrana”
register_type: read
icon: mdi:circle-slice-3
device_class: energy
state_class: total_increasing
address: 0x034
unit_of_measurement: “kWh”
value_type: FP32
accuracy_decimals: 1
skip_updates: 60
moc czynna oddana:
platform: modbus_controller
id: moc_czynna_oddana
name: “Moc czynna oddana”
register_type: read
icon: mdi:circle-slice-3
device_class: energy
state_class: total_increasing
address: 0x036
unit_of_measurement: “kWh”
value_type: FP32
accuracy_decimals: 1
skip_updates: 60
# filters:
# - multiply: 0.01
Zmodyfikowałem wpisy powodujące błędy. Licznik nie pokazuje też na której facie odbywa się oddawanie prądu a na której pobór. Prąd jest zawsze ze znakiem dodatnim. To spora wada dla mnie. Mam np.produkcję energii na poziomie 100W, ale wszystkie fazy pokazują ponad 1A przepływu, więc ewidentnie na jednej jest pobór, na drugiej oddanie.
Działający config do wklejenia w configuration.yaml. Id licznika 2, n.8.1, rtu.
modbus:
- name: hub1
type: serial
baudrate: 9600
bytesize: 8
method: rtu
parity: N
port: /dev/ttyUSB0
stopbits: 1
sensors:
- name: U L1
unit_of_measurement: V
unique_id: “L1_napiecie”
device_class: power
slave: 2
address: 0x0
input_type: input
count: 2
data_type: float32
precision: 2
- name: U L2
unit_of_measurement: V
unique_id: “L2_napiecie”
device_class: power
slave: 2
address: 0x2
input_type: input
count: 2
data_type: float32
precision: 2
- name: U L3
unit_of_measurement: V
unique_id: “L3_napiecie”
device_class: power
slave: 2
address: 0x4
input_type: input
count: 2
data_type: float32
precision: 2
- name: I L1
unit_of_measurement: A
unique_id: “L1_prad”
device_class: power
slave: 2
address: 0xC
input_type: input
count: 2
data_type: float32
precision: 2
- name: I L2
unique_id: “L2_prad”
unit_of_measurement: A
device_class: power
slave: 2
address: 0xE
input_type: input
count: 2
data_type: float32
precision: 2
- name: I L3
unique_id: “L3_prad”
unit_of_measurement: A
device_class: power
slave: 2
address: 0x10
input_type: input
count: 2
data_type: float32
precision: 2
- name: Moc pobrana
unique_id: “mocpobrana”
#id: moc_czynna_pobrana
#register_type: read
#icon: mdi:circle-slice-3
device_class: energy
state_class: total_increasing
address: 0x034
unit_of_measurement: "kWh"
data_type: float32
precision: 2
#skip_updates: 60
- name: Moc oddana
unique_id: “mocoddana”
#id: moc_czynna_oddana
#register_type: read
#icon: mdi:circle-slice-3
device_class: energy
state_class: total_increasing
address: 0x036
unit_of_measurement: "kWh"
data_type: float32
precision: 2
#skip_updates: 60
- name: Moc chwilowa
unit_of_measurement: W
unique_id: “mocchwilowa”
device_class: power
slave: 2
address: 0x18
input_type: input
count: 2
data_type: float32
precision: 2
scale: 1000
Ale moc czynną pokazuje na każdej z faz ze znakiem plus lub minus.
Ok, zatem:
modbus:
- name: hub1
type: serial
baudrate: 9600
bytesize: 8
method: rtu
parity: N
port: /dev/ttyUSB0
stopbits: 1
sensors:
- name: U L1
unit_of_measurement: V
unique_id: “L1_napiecie”
device_class: power
slave: 2
address: 0x0
input_type: input
count: 2
data_type: float32
precision: 2
- name: U L2
unit_of_measurement: V
unique_id: “L2_napiecie”
device_class: power
slave: 2
address: 0x2
input_type: input
count: 2
data_type: float32
precision: 2
- name: U L3
unit_of_measurement: V
unique_id: “L3_napiecie”
device_class: power
slave: 2
address: 0x4
input_type: input
count: 2
data_type: float32
precision: 2
- name: Moc pobrana
unique_id: “mocpobrana”
device_class: energy
state_class: total_increasing
address: 0x034
unit_of_measurement: "kWh"
data_type: float32
precision: 2
- name: Moc oddana
unique_id: “mocoddana”
device_class: energy
state_class: total_increasing
address: 0x036
unit_of_measurement: "kWh"
data_type: float32
precision: 2
- name: Moc chwilowa
unit_of_measurement: W
unique_id: “mocchwilowa”
device_class: power
slave: 2
address: 0x18
input_type: input
count: 2
data_type: float32
precision: 2
scale: 1000
- name: P L1
unit_of_measurement: W
unique_id: “L1_moc”
device_class: power
slave: 2
address: 0x12
input_type: input
count: 2
data_type: float32
precision: 2
scale: 1000
- name: P L2
unique_id: “L2_moc”
unit_of_measurement: W
device_class: power
slave: 2
address: 0x14
input_type: input
count: 2
data_type: float32
precision: 2
scale: 1000
- name: P L3
unique_id: “L3_moc”
unit_of_measurement: W
device_class: power
slave: 2
address: 0x16
input_type: input
count: 2
data_type: float32
precision: 2
scale: 1000
To moja konfiguracja która pokazywała wartości ujemne na poszczególnych fazach. Wróciłem do wersji w modułem wemos kolegi Marcin.KnD ponieważ nie byłem w stanie obrobić tych danych w nod red bo nie były widoczne jako sensory.
- name: hub1
type: serial
baudrate: 9600
bytesize: 8
method: rtu
parity: N
port: /dev/ttyUSB1
stopbits: 1
sensors:
- name: Faza 1 napięcie
unit_of_measurement: V
slave: 1
address: 0x000
input_type: input
count: 2
data_type: float32
precision: 1
scale: 1
scan_interval: 5
device_class: voltage
- name: Faza 2 napięcie
unit_of_measurement: V
slave: 1
address: 0x002
input_type: input
count: 2
data_type: float32
precision: 1
scale: 1
scan_interval: 5
device_class: voltage
- name: Faza 3 napięcie
unit_of_measurement: V
slave: 1
address: 0x004
input_type: input
count: 2
data_type: float32
precision: 1
scale: 1
scan_interval: 5
device_class: voltage
- name: Faza 1 Prąd
unit_of_measurement: A
slave: 1
address: 0x00C
input_type: input
count: 2
data_type: float32
precision: 3
scale: 1.01
scan_interval: 5
device_class: current
- name: Faza 2 Prąd
unit_of_measurement: A
slave: 1
address: 0x00E
input_type: input
count: 2
data_type: float32
precision: 3
scale: 1.01
scan_interval: 5
device_class: current
- name: Faza 3 Prąd
unit_of_measurement: A
slave: 1
address: 0x010
input_type: input
count: 2
data_type: float32
precision: 3
scale: 1.01
scan_interval: 5
device_class: current
- name: Faza 1 Energia
unit_of_measurement: KW
slave: 1
address: 0x012
input_type: input
count: 2
data_type: float32
precision: 3
scale: 1
scan_interval: 5
device_class: power
- name: Faza 2 Energia
unit_of_measurement: KW
slave: 1
address: 0x014
input_type: input
count: 2
data_type: float32
precision: 3
scale: 1
scan_interval: 5
device_class: power
- name: Faza 3 Energia
unit_of_measurement: KW
slave: 1
address: 0x016
input_type: input
count: 2
data_type: float32
precision: 3
scale: 1
scan_interval: 5
device_class: power
- name: Aktualna energia czynna
unit_of_measurement: KW
slave: 1
address: 0x018
input_type: input
count: 2
data_type: float32
precision: 3
scale: 1
scan_interval: 5
device_class: power
- name: Energia oddana do sieci
unit_of_measurement: KWh
slave: 1
address: 0x036
input_type: input
count: 2
data_type: float32
precision: 2
scale: 1
scan_interval: 5
device_class: power
- name: Energia pobrana z sieci
unit_of_measurement: KWh
slave: 1
address: 0x034
input_type: input
count: 2
data_type: float32
precision: 2
scale: 1
scan_interval: 5
device_class: power
Może się czepiam… ale mieszacie moc z energią, zupelny brak konsekwencji.
Panowie mogę prosić o prosty łopatologiczny przepis na VCX-1946 + Home Assiatant.
Mam licznik VCX-1946+ połączenie kabelkiem UTP z “Konwerter USB do RS485 modbus profibus terminal na CH340” Instalacja HA wirtualnie na serwerze Esxi, urządzenie USB przypisane do instalacji. Czytam posty o połączeniu licznika przez ESPHome ale to chyba nie ta bajka ja nie mam żadnego urządzania ESP po drodze. Nie chciałbym się doktoryzować z programowania a po prostu dodać licznik do mojego HA . Czy musze dokupić urządzenie na ESP czy wystarczy zestaw który posiadam ?
Ale jaki esphome tu widzisz? Licznik → interfejs → HA. Tydzień temu znajomemu stawiałem taką konfigurację, dokładnie z ostatniego mojego posta - ruszyło od strzała. Po prawidłowym podłączeniu wskazania w HA pojawiają się po 15s. I pamiętać o ustawieniu kanału nr 2, domyślnie licznik jest na kanale 1. ESX-i nie robiłem, ale powinno być tak samo łatwo jak w proxmox.
To nie kanał 1 tylko adres urządzenia w Modbus, każde urządzenie podłaczone do magistrali Modbus musi mieć unikatowy adres (numer). W konfiguracji HA odpowiada za to opcja slave: 1
.
@Zbign wytłumaczył wszystko, najprościej jak się da - podłącz wszystkie urządzenia, do pliku configuation.yaml
HA wklej na razie tyle:
# Example configuration.yaml entry for a serial connection
modbus:
- name: hub1
type: serial
baudrate: 9600
bytesize: 8
method: rtu
parity: N
port: /dev/ttyUSB1
stopbits: 1
sensors:
- name: Faza 1 napięcie
unit_of_measurement: V
slave: 1
address: 0x000
input_type: input
count: 2
data_type: float32
precision: 1
scale: 1
scan_interval: 5
device_class: voltage
Restart HA i zobacz czy jest encja sensor.hub1_faza_1_napiecie
. Jak zadziała uzupełnie resztę konfiguracji.