Modbus won't any read sensors if one is down

Hey all,

I’ve got a fuse box with about 15 power meters. The meters are connected with modbus to one modbus hub. Yesterday I found out I had no readings for about a week from that hub. It only reads one value at reboot, and that’s it.

After a few hours tinkering I found out that I’ve turned of one of the breakers (because I’m working in that room on the power). So I found out that if one breaker is off, or in other words, when one modbus device is unreachable, the hub won’t read any of the other devices it values.

Is the a bug, or should I use a different approach?

This is a simplified config:

- name: 100_series_hub
  type: tcp
  host: 192.168.0.30
  port: 502
  retries: 25
  timeout: 4
  delay: 2
  sensors:

    - name: 100 - Phase 1 line to neutral volts
      unique_id: 100_l1_neutral_volts
      data_type: float32
      precision: 2
      address: 0
      input_type: input
      slave: 100
      scan_interval: 10
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage

    - name: 101 - Phase 1 line to neutral volts
      unique_id: 101_l1_neutral_volts
      data_type: float32
      precision: 2
      address: 0
      input_type: input
      slave: 101
      scan_interval: 10
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage

    - name: 102 - Phase 1 line to neutral volts
      unique_id: 102_l1_neutral_volts
      data_type: float32
      precision: 2
      address: 0
      input_type: input
      slave: 102
      scan_interval: 10
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage

So, when slave 101 is down, none of them work.

Thinking of it, should I maybe create a hub for each device? Maybe like this?


- name: 100_hub
  type: tcp
  host: 192.168.0.30
  port: 502
  retries: 25
  timeout: 4
  delay: 2
  sensors:
    - name: 100 - Phase 1 line to neutral volts
      unique_id: 100_l1_neutral_volts
      data_type: float32
      precision: 2
      address: 0
      input_type: input
      slave: 100
      scan_interval: 10
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage

- name: 101_hub
  type: tcp
  host: 192.168.0.30
  port: 502
  retries: 25
  timeout: 4
  delay: 2
  sensors:
    - name: 101 - Phase 1 line to neutral volts
      unique_id: 101_l1_neutral_volts
      data_type: float32
      precision: 2
      address: 0
      input_type: input
      slave: 101
      scan_interval: 10
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage

- name: 102_hub
  type: tcp
  host: 192.168.0.30
  port: 502
  retries: 25
  timeout: 4
  delay: 2
  sensors:
    - name: 102 - Phase 1 line to neutral volts
      unique_id: 102_l1_neutral_volts
      data_type: float32
      precision: 2
      address: 0
      input_type: input
      slave: 102
      scan_interval: 10
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage

How can I avoid this problem?