Problem with modbus device constantly becoming 'unavailable' / 'unknown'

Hi,
I have integrated my EOS sauna into Home assistant as a climate entity using their official Modbus interface and a USR-TCP232-410S modbus-to-ethernet module.

Everything works, however there seems to be a lot of ‘jitter’ in the connection. The sauna often becomes unavailable/unknown, and then almost immediately comes back. This happens around 5-10 times per hour. Again, functionally I have no complaints, but my graphs look terrible because the temperature jumps to -1 when issues occur:

My logs are also riddled with errors like this:

2023-06-23 20:00:39.361 ERROR (SyncWorker_2) [homeassistant.components.modbus.modbus] Pymodbus: sauna: Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 8 bytes (0 received)

and this:

2023-06-23 20:00:42.869 ERROR (SyncWorker_1) [pymodbus.logging] Connection to (192.168.1.155, 502) failed: timed out

Despite these errors, like I said: everything works!

This is what my modbus configuration looks like:

modbus:
  - name: sauna
    type: tcp
    host: 192.168.1.155
    port: 502
    delay: 2
    message_wait_milliseconds: 500
    retries: 10
    retry_on_empty: true
    climates:
      - name: "EOS Emotec D Sauna"
        unique_id: sauna_climate
        scan_interval: 20
        lazy_error_count: 10
        slave: 247
        address: 4
        data_type: int16
        max_temp: 115
        min_temp: 30
        offset: 0
        precision: 1
        scale: 1
        target_temp_register: 151
        hvac_mode_register:
          address: 101
          values:
            state_heat: 1
            state_off: 0
        temp_step: 1
        temperature_unit: C

And this is how the modbus-to-ethernet module is configured:

I would be super grateful for any tips on how to get rid of this noise :slight_smile:

I’m using the USR-TCP232-410S too, and I’m having the same problem. My graph looks fine, except I see that there are some missing pieces of the graph. Before I added message_wait_milliseconds, the disconnect was a lot more frequent. Now the disconnect is maybe 5-10 times per hour…

modbus:
  - name: FlowmeterModbusTCP
    type: tcp
    host: 192.168.50.53
    port: 502
    message_wait_milliseconds: 500
    sensors:
      - name: "Forbruk"
        unique_id: forbruk
        unit_of_measurement: m³/h
        slave: 1
        address: 3002
        input_type: holding
        data_type: float32
        scan_interval: 1
        precision: 2
      - name: "Total"
        unique_id: totalforbruk
        unit_of_measurement: m³
        slave: 1
        address: 3014
        input_type: holding
        data_type: float64
        scan_interval: 1
        precision: 2

I tried using the type: rtuovertcp, but it didn’t work at all, and the sensor became offline. I don’t understand what that option does, and it doesn’t seem very well documented. Link: modbus - Home Assistant

Suggestions:

  • Upgrade the converter to latest firmware
  • Does the Ethernet connection work, is it stable? If the converter is connected to a managed switch, what does the switch report about errors, duplex mismatch etc?
  • The manual and webpage is written in confusingly bad english, but I can try to upgrade the firmware when I visit next time. It’s in a remote location, and I haven’t set up VPN just yet.
  • The network is just a PC and the modbus module, connected to an Asus AX56 4G router. Short cables… No other nodes…

I also have this issue, I’m using a USR IO 424T EWR. I’ve tested using an iPhone app “Mtcp” and also configured in xxter.com (a building management system) but no issue with either of these other devices. The ethernet link uses a Ubiquiti lightwave 5.8GHz link, but the radio link is 100% solid, it’s only 0.4 mile and the signal strength (link budget is over 30dB) with no outages or CRC errors.

It would be helpful to unerstand the optional configuration items listed in the documentation, but not explained in any detail, particularly the timeout CIs.