Ropam Optima po Modbusie

Witajcie, Od kilku dni chcę dodać alarm ropam optima TCP/IP i bez skutku
Sprawdzałem centrale przez tester modbus i działa a gdy dodam to do HA to encje są niewidoczne.

      name: optima
      close_comm_on_error: true
      delay: 5
      timeout: 4
      type: tcp
      host: 192.168.2.13
      port: 502
      sensors:                  #inputs (e.g. temp., hum., time)
#temperature sensors (begin)
        - name: optima_Temperatura_01  #Nazwa encji
          unit_of_measurement: °C     #Nazwa jednostki pomiarowej
          precision: 1                #Ilość cyfr wyśiwtlanych po przecinku
          scale: 0.1                  #Liczba przez jaką są monożone dane przed wyświetleniem
          input_type: input           #Rodzaj rejestru modbusa z jakiego są pobierane dane
          scan_interval: 30           #Czas pomiędzy kolejnymi odczytami danego rejestru
          data_type: uint16           #Rodzaj odczytywanych danych
          address: 0                  #Adres danych w rejestrze modbus
        - name: optima_Temperatura_02
          unit_of_measurement: °C
          precision: 1
          scale: 0.1
          input_type: input
          scan_interval: 30
          data_type: uint16
          address: 1
        - name: optima_Temperatura_03
          unit_of_measurement: °C
          precision: 1
          scale: 0.1
          input_type: input
          scan_interval: 30
          data_type: uint16
          address: 2
        - name: optima_Temperatura_04
          unit_of_measurement: °C
          precision: 1
          scale: 0.1
          input_type: input
          scan_interval: 30
          data_type: uint16
          address: 3           
#Temperature sensors (end)   
#analog input (begin)
        - name: optima_analog 
          unit_of_measurement: ""
          input_type: input
          scan_interval: 5
          address: 12
          data_type: uint16     
#analog input (end)
#GSM signal level (begin)
        - name: optima_GSM_lvl    
          input_type: input
          address: 14
          data_type: uint16     
#GSM signal level (end)
#AC voltage present sensor (begin)
        - name: optima_AC_jest    
          input_type: input
          address: 16
          data_type: uint16     
#AC voltage present sensor (end)
#voltage input sensor (begin)
        - name: optima_Nap_zas 
          unit_of_measurement: mV
          input_type: input
          scan_interval: 5
          address: 18
          data_type: uint16          
#voltage input sensor (end)
#Date (begin)
        - name: optima_minuta   
          input_type: input
          unit_of_measurement: ""
          address: 40
          data_type: uint16
        - name: optima_godzina   
          input_type: input
          unit_of_measurement: ""
          address: 41
          data_type: uint16
        - name: optima_dzien   
          unit_of_measurement: ""
          input_type: input
          address: 42
          data_type: uint16
        - name: optima_miesiac   
          input_type: input
          unit_of_measurement: ""
          address: 43
          data_type: uint16
        - name: optima_rok   
          input_type: input
          unit_of_measurement: ""
          address: 44
          data_type: uint16     
#Date (end)
#Error sensor (begin)
        - name: optima_awarie1    
          input_type: input
          address: 50
          data_type: uint16
        - name: optima_awarie2    
          input_type: input
          address: 51
          data_type: uint16
        - name: optima_awarie3    
          input_type: input
          address: 52
          data_type: uint16
        - name: optima_awarie4    
          input_type: input
          address: 53
          data_type: uint16        
#Error sensor (end)
#NeoGSP-IP-64 binary inputs (begin)
      binary_sensors:
        - name: optima_wejscie_01
          scan_interval: 5
          input_type: discrete_input
          address: 0
        - name: optima_wejscie_02
          scan_interval: 5
          input_type: discrete_input
          address: 1
        - name: optima_wejscie_03
          scan_interval: 5
          input_type: discrete_input
          address: 2
        - name: optima_wejscie_04
          scan_interval: 5
          input_type: discrete_input
          address: 3
        - name: optima_wejscie_05
          scan_interval: 5
          input_type: discrete_input
          address: 4
        - name: optima_wejscie_06
          scan_interval: 5
          input_type: discrete_input
          address: 5
        - name: optima_wejscie_07
          scan_interval: 5
          input_type: discrete_input
          address: 6
        - name: optima_wejscie_08
          scan_interval: 5
          input_type: discrete_input
          address: 7
        - name: optima_wejscie_09
          scan_interval: 5
          input_type: discrete_input
          address: 8
        - name: optima_wejscie_10
          scan_interval: 5
          input_type: discrete_input
          address: 9
        - name: optima_wejscie_11
          scan_interval: 5
          input_type: discrete_input
          address: 10
        - name: optima_wejscie_12
          scan_interval: 5
          input_type: discrete_input
          address: 11
        - name: optima_wejscie_13
          scan_interval: 5
          input_type: discrete_input
          address: 12
        - name: optima_wejscie_14
          scan_interval: 5
          input_type: discrete_input
          address: 13
        - name: optima_wejscie_15
          scan_interval: 5
          input_type: discrete_input
          address: 14
        - name: optima_wejscie_16
          scan_interval: 5
          input_type: discrete_input
          address: 15
        - name: optima_wejscie_17
          scan_interval: 5
          input_type: discrete_input
          address: 16
        - name: optima_wejscie_18
          scan_interval: 5
          input_type: discrete_input
          address: 17
        - name: optima_wejscie_19
          scan_interval: 5
          input_type: discrete_input
          address: 18
        - name: optima_wejscie_20
          scan_interval: 5
          input_type: discrete_input
          address: 19
        - name: optima_wejscie_21
          scan_interval: 5
          input_type: discrete_input
          address: 20
        - name: optima_wejscie_22
          scan_interval: 5
          input_type: discrete_input
          address: 21
        - name: optima_wejscie_23
          scan_interval: 5
          input_type: discrete_input
          address: 22
        - name: optima_wejscie_24
          scan_interval: 5
          input_type: discrete_input
          address: 23
        - name: optima_wejscie_25
          scan_interval: 5
          input_type: discrete_input
          address: 24
        - name: optima_wejscie_26
          scan_interval: 5
          input_type: discrete_input
          address: 25
        - name: optima_wejscie_27
          scan_interval: 5
          input_type: discrete_input
          address: 26
        - name: optima_wejscie_28
          scan_interval: 5
          input_type: discrete_input
          address: 27
        - name: optima_wejscie_29
          scan_interval: 5
          input_type: discrete_input
          address: 28
        - name: optima_wejscie_30
          scan_interval: 5
          input_type: discrete_input
          address: 29
        - name: optima_wejscie_31
          scan_interval: 5
          input_type: discrete_input
          address: 30
        - name: optima_wejscie_32
          scan_interval: 5
          input_type: discrete_input
          address: 31
        - name: optima_wejscie_33
          scan_interval: 5
          input_type: discrete_input
          address: 32
        - name: optima_wejscie_34
          scan_interval: 5
          input_type: discrete_input
          address: 33
        - name: optima_wejscie_35
          scan_interval: 5
          input_type: discrete_input
          address: 34
        - name: optima_wejscie_36
          scan_interval: 5
          input_type: discrete_input
          address: 35
        - name: optima_wejscie_37
          scan_interval: 5
          input_type: discrete_input
          address: 36
        - name: optima_wejscie_38
          scan_interval: 5
          input_type: discrete_input
          address: 37
        - name: optima_wejscie_39
          scan_interval: 5
          input_type: discrete_input
          address: 38
        - name: optima_wejscie_40
          scan_interval: 5
          input_type: discrete_input
          address: 39
        - name: optima_wejscie_41
          scan_interval: 5
          input_type: discrete_input
          address: 40
        - name: optima_wejscie_42
          scan_interval: 5
          input_type: discrete_input
          address: 41
        - name: optima_wejscie_43
          scan_interval: 5
          input_type: discrete_input
          address: 42
        - name: optima_wejscie_44
          scan_interval: 5
          input_type: discrete_input
          address: 43
        - name: optima_wejscie_45
          scan_interval: 5
          input_type: discrete_input
          address: 44
        - name: optima_wejscie_46
          scan_interval: 5
          input_type: discrete_input
          address: 45
        - name: optima_wejscie_47
          scan_interval: 5
          input_type: discrete_input
          address: 46
        - name: optima_wejscie_48
          scan_interval: 5
          input_type: discrete_input
          address: 47
#NeoGSP-IP-64 binary inputs (end)      
#NeoGSP-IP-64 outputs (begin)      
      switches:
        - name: optima_wyjscie_01
          write_type: coil          #Rodzaj rejestru modbusa z jakiego są odczytywanie i do jakuego są zpisyewane dane
          scan_interval: 5
          address: 0
          verify:                   #Sprawdzanie stanu rejestru
        - name: optima_wyjscie_02
          write_type: coil
          scan_interval: 5
          address: 1
          verify:
        - name: optima_wyjscie_03
          write_type: coil
          scan_interval: 5
          address: 2
          verify:
        - name: optima_wyjscie_04
          write_type: coil
          scan_interval: 5
          address: 3
          verify:
        - name: optima_wyjscie_05
          write_type: coil
          scan_interval: 5
          address: 4
          verify:
        - name: optima_wyjscie_06_grzalka
          write_type: coil
          scan_interval: 5
          address: 5
          verify:
        - name: optima_wyjscie_07
          write_type: coil
          scan_interval: 5
          address: 6
          verify:
        - name: optima_wyjscie_08
          write_type: coil
          scan_interval: 5
          address: 7
          verify:
        - name: optima_wyjscie_09
          write_type: coil
          scan_interval: 5
          address: 8
          verify:
        - name: optima_wyjscie_10
          write_type: coil
          scan_interval: 5
          address: 9
          verify:
        - name: optima_wyjscie_11
          write_type: coil
          scan_interval: 5
          address: 10
          verify:
        - name: optima_wyjscie_12
          write_type: coil
          scan_interval: 5
          address: 11
          verify:
        - name: optima_wyjscie_13
          write_type: coil
          scan_interval: 5
          address: 12
          verify:
        - name: optima_wyjscie_14
          write_type: coil
          scan_interval: 5
          address: 13
          verify:
        - name: optima_wyjscie_15
          write_type: coil
          scan_interval: 5
          address: 14
          verify:
        - name: optima_wyjscie_16
          write_type: coil
          scan_interval: 5
          address: 15
          verify:
        - name: optima_wyjscie_17
          write_type: coil
          scan_interval: 5
          address: 16
          verify:
        - name: optima_wyjscie_18
          write_type: coil
          scan_interval: 5
          address: 17
          verify:
        - name: optima_wyjscie_19
          write_type: coil
          scan_interval: 5
          address: 18
          verify:
        - name: optima_wyjscie_20
          write_type: coil
          scan_interval: 5
          address: 19
          verify:
        - name: optima_wyjscie_21
          write_type: coil
          scan_interval: 5
          address: 20
          verify:
        - name: optima_wyjscie_22
          write_type: coil
          scan_interval: 5
          address: 21
          verify:
        - name: optima_wyjscie_23
          write_type: coil
          scan_interval: 5
          address: 22
          verify:
        - name: optima_wyjscie_24
          write_type: coil
          scan_interval: 5
          address: 23
          verify:
        - name: optima_wyjscie_25
          write_type: coil
          scan_interval: 5
          address: 24
          verify:
        - name: optima_wyjscie_26
          write_type: coil
          scan_interval: 5
          address: 25
          verify:
        - name: optima_wyjscie_27
          write_type: coil
          scan_interval: 5
          address: 26
          verify:
        - name: optima_wyjscie_28
          write_type: coil
          scan_interval: 5
          address: 27
          verify:
        - name: optima_wyjscie_29
          write_type: coil
          scan_interval: 5
          address: 28
          verify:
        - name: optima_wyjscie_30
          write_type: coil
          scan_interval: 5
          address: 29
          verify:
        - name: optima_wyjscie_31
          write_type: coil
          scan_interval: 5
          address: 30
          verify:
        - name: optima_wyjscie_32
          write_type: coil
          scan_interval: 5
          address: 31
          verify:
        - name: optima_wyjscie_33
          write_type: coil
          scan_interval: 5
          address: 32
          verify:
        - name: optima_wyjscie_34
          write_type: coil
          scan_interval: 5
          address: 33
          verify:
        - name: optima_wyjscie_35
          write_type: coil
          scan_interval: 5
          address: 34
          verify:
        - name: optima_wyjscie_36
          write_type: coil
          scan_interval: 5
          address: 35
          verify:
        - name: optima_wyjscie_37
          write_type: coil
          scan_interval: 5
          address: 36
          verify:
        - name: optima_wyjscie_38
          write_type: coil
          scan_interval: 5
          address: 37
          verify:
        - name: optima_wyjscie_39
          write_type: coil
          scan_interval: 5
          address: 38
          verify:
        - name: optima_wyjscie_40
          write_type: coil
          scan_interval: 5
          address: 39
          verify:
#NeoGSP-IP-64 outputs (end)     

Dajesz jakiś wycinek z konfiguracji HA, w dodatku wyrwany z kontekstu, skąd mam wiedzieć czy przypadkiem nie popełniłeś błędy w definicji encji.

Tak samo jak powyżej, skoro znasz poprawne parametry transmisji Modbus to je podaj, może robisz literówkę w konfiguracji HA, nie wywróżę tego z kart.
Kolejna sprawa, skąd mam wiedzieć pod jakimi rejestrami są jakie wartości z centralki Ropam, mam sobie poszukać w internecie a Ty już to masz, podziel sie informacjami, linkami do dokumentacji a nie każ mi “odkrywać ameryki na nowo” żeby Ci pomóc.

1 polubienie

W configuration.yaml mam wpisane

modbus: !include Ropam_N64_HA.yaml

i to jest mój cały kod.

Korzystam z oprogramowania które daje producent ROPAM
https://ropam.com.pl/wsparcie/wp-content/uploads/2019/09/ModBustester.zip

Tak, masz raję, poniżej podsyłam:

Ogólnie korzystałem z https://ropam.com.pl/wsparcie/product/modbus-tcp-ip/

Używasz wielkich liter więc plik musi nazywać sie identycznie, w systemie linux duże
R i małe r to nie to samo. Jeżeli robisz include pliku to zaczynasz od początku linii a Ty masz wcięcia.

Tak mam identycznie nazwany plik. W configuration.yaml mam jeszcze wpisane:

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include_dir_merge_list sensors
modbus: !include Ropam_N64_HA.yaml

Tzn. jak ten plik dokładnie ma wyglądać bez wcięć? Podpowiesz

sensor: !include_dir_merge_list sensors/
#script: !include_dir_named scripts/
script: !include scripts.yaml
#script: !include_dir_merge_named scripts
input_select: !include input_select.yaml
#input_boolean: !include_dir_named input_boolean/
input_boolean: !include input_boolean.yaml
#input_number: !include_dir_named input_number/
input_number: !include input_number.yaml
scene: !include scenes.yaml
#button_card_templates: include lovelace/buttons/button_card_templates.yaml
template: !include_dir_merge_list templates
switch: !include switch.yaml
mqtt:
  sensor: !include_dir_merge_list entities/mqtt/sensors/
  binary_sensor: !include_dir_merge_list entities/mqtt/binary_sensors/
  switch: !include_dir_merge_list entities/mqtt/switch/

NIE STOSUJ DUŻYCH LITER W NAZWACH ODWOŁAŃ DOPLIKÓW (zmień to na małe) Ropam_N64_HA.yaml

Co znajduje sie w twoim pliku Ropam_N64_HA.yaml

W tym pliku znajduje się to co dałem w pierwszym poście

Na moje oko to sensory powinny być w pliku sensor a nie Ropam_N64_HA.yaml ale nie doktoryzowałem się z tego.
Dziwi mnie natomiast, dlaczego wybrałeś metodę z modbus zamiast MQTT.
Integracja po MQTT tworzy praktycznie encje w HA z automatu.

Słuszna uwaga :slight_smile:, przejrzałem na szybko instukcję i niestety jest “błędnie” napisana, będzie działało ale trochę zamieszania wprowadzi w integracji HA z brokerem MQTT :wink:.

Bo nie mam centrali NEO tylko Optima z modułem TCP/IP a tu już tylko modbus

Czyli jeżeli mam sensor: !include_dir_merge_list sensors to musze sensory rzenieś do tego folderu sensors?

To co podałeś nie trzyma się żadnego formatowania wymaganego dla YAML
Wyłącz modbus: !include Ropam_N64_HA.yaml i zacznij od dodania

modbus:
name: hub1
type: tcp
host: 192.168.1.125
port: 502

w pliku konfiguracyjnym configuration.yaml i dodaniu jakiegoś jednego sensora.
modbus: !include zajmiesz się później, gdy cokolwiek zacznie ci działać .

1 polubienie

Działa częściowo ponieważ switch można zrobić on i za sekunde wraca na off natomiast przekaźnik jest fizycznie przełączony i niestety nie można już wyłączyć przekaźnika. Dodałem jak polecaliście w configuration.yaml


modbus:
  - name: hub1
    #close_comm_on_error: true
    #delay: 5
    #timeout: 5
    type: tcp  
    host: 192.168.2.13
    port: 502
    
    switches:
      - name: grzałka1
        address: 5
        write_type: coil  
        scan_interval: 5

W tym pliku jest jeszcze verify: # sprawdzanie stanu rejestru lecz jak to wpisze to encja staje się niedostępna
grzałka

Ważne że już coś ci działa.

Jeżeli HA nie dostaje potwierdzenia stanu to będzie się tak zachowywał.

Nie pomogę ci przy konfiguracji modbus.

Sprawdź tak

    switches:
      - name: grzałka1
        scan_interval: 1
        slave: 4
        address: 5
        write_type: coil
        command_on: 1
        command_off: 0
        verify:

Dzięki @SebiCo brakowało " slave: 4" i teraz działa dobrze. Jak się ogarnę z całością to wkleję całość, może komuś się przyda.

Jakby co jeszcze sprawdzone i działające:

  • czujki ruchu
  binary_sensors:
  - name: PIR korytarz
    slave: 2
    address: 0
    scan_interval: 1
    input_type: discrete_input
    device_class: motion
  • termometry
  sensors:
  - name: Korytarz
    scan_interval: 5
    unit_of_measurement: °C
    input_type: input
    slave: 1
    address: 0
    scale: 0.1
    precision: 1

Wg mnie to nie to, korzystasz z Modbus TCP więc ten parametr nie jest wymagany, nawet opisane jest to w dokumentacji:

image

Jak to rozumieć “REQURED” vs. “Optional”? :thinking:

W przypadku Modbus RTU parametr slave jest wymagany (REQURED), w przypadku Modbus TCP jest opcjonalny (Optional) - możesz podać ale nie musisz.

1 polubienie

Czy dobrze rozumiem, że slave oznacza adres.device modbusowy, urządzenia?