VCX-1946 jak podpiąć do HA?

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
1 Like

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.

2 Likes

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.

1 Like

Panowie super odpaliłem działa rewelacja, zamiast /dev/ttyUSB1 wstawiłem adres bezpośrednia uzyskałem go komendą “ha hardware info” przez ssh. Działa idealnie

Można i tak :stuck_out_tongue: ale to można też wyklikać w menu Ustawień HA
(System → Sprzęt → hamburger menu → Cały sprzęt)