Modbus rs485 and w5500 ethernet component

Hello All,

I have an M5 basic core with m5 lan poe module, pin outs are:

The configuration works fine for wifi yaml but when I delete the wifi component and add the ethernet component below (the only change) the entities become unavailable. On ethernet I can see in the ESPhome builder log that it is in fact parsing data from sensors correctly. What am I missing, why doesn’t this send to Home Assistant?

esphome:
  name: core-sensor-hub
  friendly_name: Core Sensor Hub
  min_version: 2024.11.0
  name_add_mac_suffix: false

esp32:
  board: esp32dev
  framework:
    type: esp-idf

external_components:
 - source: github://nielsnl68/esphome-components
ethernet:
  type: W5500
  clk_pin: GPIO18
  mosi_pin: GPIO23
  miso_pin: GPIO19
  cs_pin: GPIO26
  interrupt_pin: GPIO34
  reset_pin: GPIO13
uart:
  id: uart_sensor
  tx_pin: GPIO15
  rx_pin: GPIO5
  baud_rate: 9600
  stop_bits: 1
i2c:
  - sda: GPIO21
    scl: GPIO22
    scan: True
    id: i2c0
modbus:
- uart_id: uart_sensor
  id: modbus1
  send_wait_time: 500ms

modbus_controller:
- id: modbus_uartsensor1
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x01
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor2
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x02
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor3
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x03
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor4
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x04
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor5
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x05
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor6
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x06
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor7
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x07
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor8
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x08
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor9
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x09
  modbus_id: modbus1
  update_interval: 10s
sensor:
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor1
  id: Temp_Sensor_1
  address: 0x0000
  register_type: holding
  name: "Living Area Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor1
  id: Humidty_Sensor_1
  name: "Living Area Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor2
  id: Temp_Sensor_2
  address: 0x0000
  register_type: holding
  name: "Master Suite Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor2
  id: Humidty_Sensor_2
  name: "Master Suite Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor3
  id: Temp_Sensor_3
  address: 0x0000
  register_type: holding
  name: "Far Bedroom Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor3
  id: Humidty_Sensor_3
  name: "Far Bedroom Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor4
  id: Temp_Sensor_4
  address: 0x0000
  register_type: holding
  name: "Near Bedroom Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor4
  id: Humidty_Sensor_4
  name: "Near Bedroom Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor5
  id: Temp_Sensor_5
  address: 0x0000
  register_type: holding
  name: "Upstairs Common Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor5
  id: Humidty_Sensor_5
  name: "Upstairs Common Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor6
  id: Temp_Sensor_6
  address: 0x0000
  register_type: holding
  name: "School Room Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor6
  id: Humidty_Sensor_6
  name: "School Room Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor7
  id: Temp_Sensor_7
  address: 0x0000
  register_type: holding
  name: "Playroom Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor7
  id: Humidty_Sensor_7
  name: "Playroom Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor8
  id: Temp_Sensor_8
  address: 0x0000
  register_type: holding
  name: "Guest Room Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor8
  id: Humidty_Sensor_8
  name: "Guest Room Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor9
  id: Temp_Sensor_9
  address: 0x0000
  register_type: holding
  name: "Upstairs Bedroom Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor9
  id: Humidty_Sensor_9
  name: "Upstairs Bedroom Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;

tca9548a:
  - address: 0x70
    id: multiplex0
    i2c_id: i2c0
    channels:
      - bus_id: multiplex0channel0
        channel: 0
      - bus_id: multiplex0channel1
        channel: 1
      - bus_id: multiplex0channel2
        channel: 2
      - bus_id: multiplex0channel3
        channel: 3
      - bus_id: multiplex0channel4
        channel: 4
      - bus_id: multiplex0channel5
        channel: 5

switch:
  - platform: m5stack4relay
    i2c_id: multiplex0channel0
    address: 0x26
    sync_mode: true
    id: Relay_25
    relay1: relay 25
    led1:
      name: led 25
      assumed_state: true
      id: led_25
  - platform: m5stack4relay
    i2c_id: multiplex0channel0
    address: 0x26
    sync_mode: true
    id: Relay_26
    relay2: relay 26
    led2:
      name: led 26
      assumed_state: true
      id: led_26
  - platform: m5stack4relay
    i2c_id: multiplex0channel0
    address: 0x26
    sync_mode: true
    id: Relay_27
    relay3: relay 27
    led3:
      name: led 27
      assumed_state: true
      id: led_27
  - platform: m5stack4relay
    i2c_id: multiplex0channel0
    address: 0x26
    sync_mode: true
    id: Relay_28
    relay4: relay 28
    led4:
      name: led 28
      assumed_state: true
      id: led_28
  - platform: m5stack4relay
    i2c_id: multiplex0channel1
    address: 0x26
    sync_mode: true
    id: Relay_29
    relay1: relay 29
    led1:
      name: led 29
      assumed_state: true
      id: led_29
  - platform: m5stack4relay
    i2c_id: multiplex0channel1
    address: 0x26
    sync_mode: true
    id: Relay_30
    relay2: relay 30
    led2:
      name: led 30
      assumed_state: true
      id: led_30
  - platform: m5stack4relay
    i2c_id: multiplex0channel1
    address: 0x26
    sync_mode: true
    id: Relay_31
    relay3: relay 31
    led3:
      name: led 31
      assumed_state: true
      id: led_31
  - platform: m5stack4relay
    i2c_id: multiplex0channel1
    address: 0x26
    sync_mode: true
    id: Relay_32
    relay4: relay 32
    led4:
      name: led 32
      assumed_state: true
      id: led_32
  - platform: m5stack4relay
    i2c_id: multiplex0channel2
    address: 0x26
    sync_mode: true
    id: Relay_33
    relay1: relay 33
    led1:
      name: led 33
      assumed_state: true
      id: led_33
  - platform: m5stack4relay
    i2c_id: multiplex0channel2
    address: 0x26
    sync_mode: true
    id: Relay_34
    relay2: relay 34
    led2:
      name: led 34
      assumed_state: true
      id: led_34
  - platform: m5stack4relay
    i2c_id: multiplex0channel2
    address: 0x26
    sync_mode: true
    id: Relay_35
    relay3: relay 35
    led3:
      name: led 35
      assumed_state: true
      id: led_35
  - platform: m5stack4relay
    i2c_id: multiplex0channel2
    address: 0x26
    sync_mode: true
    id: Relay_36
    relay4: relay 36
    led4:
      name: led 36
      assumed_state: true
      id: led_36
  - platform: m5stack4relay
    i2c_id: multiplex0channel3
    address: 0x26
    sync_mode: true
    id: Relay_37
    relay1: relay 37
    led1:
      name: led 37
      assumed_state: true
      id: led_37
  - platform: m5stack4relay
    i2c_id: multiplex0channel3
    address: 0x26
    sync_mode: true
    id: Relay_38
    relay2: relay 38
    led2:
      name: led 38
      assumed_state: true
      id: led_38
  - platform: m5stack4relay
    i2c_id: multiplex0channel3
    address: 0x26
    sync_mode: true
    id: Relay_39
    relay3: relay 39
    led3:
      name: led 39
      assumed_state: true
      id: led_39
  - platform: m5stack4relay
    i2c_id: multiplex0channel3
    address: 0x26
    sync_mode: true
    id: Relay_40
    relay4: relay 40
    led4:
      name: led 40
      assumed_state: true
      id: led_40
  - platform: m5stack4relay
    i2c_id: multiplex0channel4
    address: 0x26
    sync_mode: true
    id: Relay_41
    relay1: relay 41
    led1:
      name: led 41
      assumed_state: true
      id: led_41
  - platform: m5stack4relay
    i2c_id: multiplex0channel4
    address: 0x26
    sync_mode: true
    id: Relay_42
    relay2: relay 42
    led2:
      name: led 42
      assumed_state: true
      id: led_42
  - platform: m5stack4relay
    i2c_id: multiplex0channel4
    address: 0x26
    sync_mode: true
    id: Relay_43
    relay3: relay 43
    led3:
      name: led 43
      assumed_state: true
      id: led_43
  - platform: m5stack4relay
    i2c_id: multiplex0channel4
    address: 0x26
    sync_mode: true
    id: Relay_44
    relay4: relay 44
    led4:
      name: led 44
      assumed_state: true
      id: led_44
  - platform: m5stack4relay
    i2c_id: multiplex0channel5
    address: 0x26
    sync_mode: true
    id: Relay_45
    relay1: relay 45
    led1:
      name: led 45
      assumed_state: true
      id: led_45
  - platform: m5stack4relay
    i2c_id: multiplex0channel5
    address: 0x26
    sync_mode: true
    id: Relay_46
    relay2: relay 46
    led2:
      name: led 46
      assumed_state: true
      id: led_46
  - platform: m5stack4relay
    i2c_id: multiplex0channel5
    address: 0x26
    sync_mode: true
    id: Relay_47
    relay3: relay 47
    led3:
      name: led 47
      assumed_state: true
      id: led_47
  - platform: m5stack4relay
    i2c_id: multiplex0channel5
    address: 0x26
    sync_mode: true
    id: Relay_48
    relay4: relay 48
    led4:
      name: led 48
      assumed_state: true
      id: led_48

logger:
  baud_rate: 9600
  level: verbose

here is the log:

INFO ESPHome 2025.3.3
INFO Reading configuration /config/esphome/esphome-web-972a10.yaml...
WARNING GPIO15 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
WARNING GPIO5 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
INFO Starting log output from 192.168.1.80 using esphome API
INFO Successfully connected to core-sensor-hub @ 192.168.1.80 in 0.002s
INFO Successful handshake with core-sensor-hub @ 192.168.1.80 in 8.261s
[15:15:59][I][app:100]: ESPHome version 2025.3.3 compiled on Apr  1 2025, 21:58:01
[15:15:59][C][logger:177]: Logger:
[15:15:59][C][logger:178]:   Max Level: VERBOSE
[15:15:59][C][logger:179]:   Initial Level: VERBOSE
[15:15:59][C][logger:181]:   Log Baud Rate: 9600
[15:15:59][C][logger:182]:   Hardware UART: UART0
[15:15:59][V][modbus_controller:230]: 2 modbus commands already in queue
[15:15:59][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:15:59][W][component:237]: Component modbus_controller took a long time for an operation (123 ms).
[15:15:59][W][component:238]: Components should block for at most 30 ms.
[15:15:59][V][modbus_controller:081]: Modbus response queued
[15:15:59][V][modbus:159]: Clearing buffer of 8 bytes - parse succeeded
[15:16:00][W][component:237]: Component modbus took a long time for an operation (123 ms).
[15:16:00][W][component:238]: Components should block for at most 30 ms.
[15:16:00][V][modbus_controller:088]: Process modbus response for address 0x0 size: 4
[15:16:00][V][modbus_controller:170]: data for register address : 0x0 : 
[15:16:00][D][modbus_controller.sensor:025]: Sensor new state: 2030.00
[15:16:00][V][sensor:043]: 'Master Suite Temp': Received new state 2030.000000
[15:16:00][D][sensor:093]: 'Master Suite Temp': Sending state 68.54000 °F with 1 decimals of accuracy
[15:16:00][D][modbus_controller.sensor:025]: Sensor new state: 4491.00
[15:16:00][V][sensor:043]: 'Master Suite Humidity': Received new state 4491.000000
[15:16:00][D][sensor:093]: 'Master Suite Humidity': Sending state 44.91000 % with 0 decimals of accuracy
[15:16:00][W][component:237]: Component modbus_controller took a long time for an operation (734 ms).
[15:16:00][W][component:238]: Components should block for at most 30 ms.
[15:16:01][V][modbus_controller:043]: Sending next modbus command to device 4 register 0x00 count 2
[15:16:01][V][modbus:223]: Modbus write: 04.03.00.00.00.02.C4.5E (8)
[15:16:01][V][modbus_controller:568]: Command sent 3 0x0 2 send_count: 1
[15:16:01][W][component:237]: Component modbus_controller took a long time for an operation (366 ms).
[15:16:01][W][component:238]: Components should block for at most 30 ms.
[15:16:01][C][i2c.idf:083]: I2C Bus:
[15:16:01][C][i2c.idf:084]:   SDA Pin: GPIO21
[15:16:01][C][i2c.idf:085]:   SCL Pin: GPIO22
[15:16:01][C][i2c.idf:086]:   Frequency: 50000 Hz
[15:16:01][C][i2c.idf:092]:   Recovery: bus successfully recovered
[15:16:01][I][i2c.idf:102]: Results from i2c bus scan:
[15:16:01][I][i2c.idf:108]: Found i2c device at address 0x70
[15:16:01][V][modbus_controller:230]: 30 modbus commands already in queue
[15:16:01][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:02][W][component:237]: Component modbus_controller took a long time for an operation (121 ms).
[15:16:02][W][component:238]: Components should block for at most 30 ms.
[15:16:02][V][modbus_controller:230]: 5 modbus commands already in queue
[15:16:02][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:02][W][component:237]: Component modbus_controller took a long time for an operation (126 ms).
[15:16:02][W][component:238]: Components should block for at most 30 ms.
[15:16:02][V][modbus_controller:230]: 3 modbus commands already in queue
[15:16:02][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:02][W][component:237]: Component modbus_controller took a long time for an operation (123 ms).
[15:16:02][W][component:238]: Components should block for at most 30 ms.
[15:16:02][V][modbus_controller:081]: Modbus response queued
[15:16:03][V][modbus:159]: Clearing buffer of 8 bytes - parse succeeded
[15:16:03][W][component:237]: Component modbus took a long time for an operation (243 ms).
[15:16:03][W][component:238]: Components should block for at most 30 ms.
[15:16:03][V][modbus_controller:043]: Sending next modbus command to device 3 register 0x00 count 2
[15:16:03][V][modbus:223]: Modbus write: 03.03.00.00.00.02.C5.E9 (8)
[15:16:03][V][modbus_controller:568]: Command sent 3 0x0 2 send_count: 1
[15:16:03][W][component:237]: Component modbus_controller took a long time for an operation (245 ms).
[15:16:03][W][component:238]: Components should block for at most 30 ms.
[15:16:03][V][modbus_controller:088]: Process modbus response for address 0x0 size: 4
[15:16:03][V][modbus_controller:170]: data for register address : 0x0 : 
[15:16:03][D][modbus_controller.sensor:025]: Sensor new state: 2157.00
[15:16:03][V][sensor:043]: 'Near Bedroom Temp': Received new state 2157.000000
[15:16:04][D][sensor:093]: 'Near Bedroom Temp': Sending state 70.82600 °F with 1 decimals of accuracy
[15:16:04][D][modbus_controller.sensor:025]: Sensor new state: 4148.00
[15:16:04][V][sensor:043]: 'Near Bedroom Humidity': Received new state 4148.000000
[15:16:04][D][sensor:093]: 'Near Bedroom Humidity': Sending state 41.48000 % with 0 decimals of accuracy
[15:16:04][W][component:237]: Component modbus_controller took a long time for an operation (738 ms).
[15:16:04][W][component:238]: Components should block for at most 30 ms.
[15:16:04][V][modbus_controller:230]: 76 modbus commands already in queue
[15:16:04][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:04][W][component:237]: Component modbus_controller took a long time for an operation (119 ms).
[15:16:04][W][component:238]: Components should block for at most 30 ms.
[15:16:04][V][modbus_controller:230]: 107 modbus commands already in queue
[15:16:04][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:05][W][component:237]: Component modbus_controller took a long time for an operation (243 ms).
[15:16:05][W][component:238]: Components should block for at most 30 ms.
[15:16:05][V][modbus_controller:230]: 107 modbus commands already in queue
[15:16:05][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:05][W][component:237]: Component modbus_controller took a long time for an operation (243 ms).
[15:16:05][W][component:238]: Components should block for at most 30 ms.
[15:16:05][V][modbus_controller:230]: 107 modbus commands already in queue
[15:16:05][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:05][W][component:237]: Component modbus_controller took a long time for an operation (126 ms).
[15:16:05][W][component:238]: Components should block for at most 30 ms.
[15:16:05][V][modbus_controller:230]: 107 modbus commands already in queue
[15:16:05][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:06][W][component:237]: Component modbus_controller took a long time for an operation (123 ms).
[15:16:06][W][component:238]: Components should block for at most 30 ms.
[15:16:06][V][modbus_controller:081]: Modbus response queued
[15:16:06][V][modbus:159]: Clearing buffer of 8 bytes - parse succeeded
[15:16:06][W][component:237]: Component modbus took a long time for an operation (242 ms).
[15:16:06][W][component:238]: Components should block for at most 30 ms.
[15:16:06][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x00 count 2
[15:16:06][V][modbus:223]: Modbus write: 01.03.00.00.00.02.C4.0B (8)
[15:16:06][V][modbus_controller:568]: Command sent 3 0x0 2 send_count: 1
[15:16:06][W][component:237]: Component modbus_controller took a long time for an operation (247 ms).
[15:16:06][W][component:238]: Components should block for at most 30 ms.
[15:16:06][V][modbus_controller:088]: Process modbus response for address 0x0 size: 4
[15:16:07][V][modbus_controller:170]: data for register address : 0x0 : 
[15:16:07][D][modbus_controller.sensor:025]: Sensor new state: 2007.00
[15:16:07][V][sensor:043]: 'Far Bedroom Temp': Received new state 2007.000000
[15:16:07][D][sensor:093]: 'Far Bedroom Temp': Sending state 68.12600 °F with 1 decimals of accuracy
[15:16:07][D][modbus_controller.sensor:025]: Sensor new state: 4559.00
[15:16:07][V][sensor:043]: 'Far Bedroom Humidity': Received new state 4559.000000
[15:16:07][D][sensor:093]: 'Far Bedroom Humidity': Sending state 45.59000 % with 0 decimals of accuracy
[15:16:07][W][component:237]: Component modbus_controller took a long time for an operation (617 ms).
[15:16:07][W][component:238]: Components should block for at most 30 ms.
[15:16:07][C][uart.idf:159]: UART Bus 1:
[15:16:07][C][uart.idf:160]:   TX Pin: GPIO15
[15:16:07][C][uart.idf:161]:   RX Pin: GPIO5
[15:16:08][C][uart.idf:163]:   RX Buffer Size: 256
[15:16:08][C][uart.idf:165]:   Baud Rate: 9600 baud
[15:16:08][C][uart.idf:166]:   Data Bits: 8
[15:16:08][C][uart.idf:167]:   Parity: NONE
[15:16:08][C][uart.idf:168]:   Stop bits: 1
[15:16:08][V][modbus_controller:081]: Modbus response queued
[15:16:08][V][modbus:159]: Clearing buffer of 8 bytes - parse succeeded
[15:16:08][W][component:237]: Component modbus took a long time for an operation (121 ms).
[15:16:08][W][component:238]: Components should block for at most 30 ms.
[15:16:08][V][modbus_controller:088]: Process modbus response for address 0x0 size: 4
[15:16:08][V][modbus_controller:170]: data for register address : 0x0 : 
[15:16:08][D][modbus_controller.sensor:025]: Sensor new state: 2116.00
[15:16:08][V][sensor:043]: 'Living Area Temp': Received new state 2116.000000
[15:16:08][D][sensor:093]: 'Living Area Temp': Sending state 70.08800 °F with 1 decimals of accuracy
[15:16:09][D][modbus_controller.sensor:025]: Sensor new state: 4285.00
[15:16:09][V][sensor:043]: 'Living Area Humidity': Received new state 4285.000000
[15:16:09][D][sensor:093]: 'Living Area Humidity': Sending state 42.85000 % with 0 decimals of accuracy
[15:16:09][W][component:237]: Component modbus_controller took a long time for an operation (615 ms).
[15:16:09][W][component:238]: Components should block for at most 30 ms.
[15:16:09][V][modbus_controller:043]: Sending next modbus command to device 2 register 0x00 count 2
[15:16:09][V][modbus:223]: Modbus write: 02.03.00.00.00.02.C4.38 (8)
[15:16:09][V][modbus_controller:568]: Command sent 3 0x0 2 send_count: 1
[15:16:09][W][component:237]: Component modbus_controller took a long time for an operation (366 ms).
[15:16:09][W][component:238]: Components should block for at most 30 ms.
[15:16:09][C][modbus:165]: Modbus:
[15:16:10][C][modbus:167]:   Send Wait Time: 500 ms
[15:16:10][C][modbus:168]:   CRC Disabled: NO
[15:16:10][V][modbus_controller:230]: 2 modbus commands already in queue
[15:16:10][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:10][W][component:237]: Component modbus_controller took a long time for an operation (120 ms).
[15:16:10][W][component:238]: Components should block for at most 30 ms.
[15:16:10][V][modbus_controller:230]: 30 modbus commands already in queue
[15:16:10][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:10][W][component:237]: Component modbus_controller took a long time for an operation (243 ms).
[15:16:10][W][component:238]: Components should block for at most 30 ms.
[15:16:10][V][modbus_controller:081]: Modbus response queued
[15:16:10][V][modbus:159]: Clearing buffer of 8 bytes - parse succeeded
[15:16:10][W][component:237]: Component modbus took a long time for an operation (122 ms).
[15:16:10][W][component:238]: Components should block for at most 30 ms.
[15:16:11][V][modbus_controller:088]: Process modbus response for address 0x0 size: 4
[15:16:11][V][modbus_controller:170]: data for register address : 0x0 : 
[15:16:11][D][modbus_controller.sensor:025]: Sensor new state: 2038.00
[15:16:11][V][sensor:043]: 'Master Suite Temp': Received new state 2038.000000
[15:16:11][D][sensor:093]: 'Master Suite Temp': Sending state 68.68400 °F with 1 decimals of accuracy
[15:16:11][D][modbus_controller.sensor:025]: Sensor new state: 4502.00
[15:16:11][V][sensor:043]: 'Master Suite Humidity': Received new state 4502.000000
[15:16:11][D][sensor:093]: 'Master Suite Humidity': Sending state 45.02000 % with 0 decimals of accuracy
[15:16:11][W][component:237]: Component modbus_controller took a long time for an operation (739 ms).
[15:16:11][W][component:238]: Components should block for at most 30 ms.
[15:16:11][V][modbus_controller:043]: Sending next modbus command to device 4 register 0x00 count 2
[15:16:12][V][modbus:223]: Modbus write: 04.03.00.00.00.02.C4.5E (8)
[15:16:12][V][modbus_controller:568]: Command sent 3 0x0 2 send_count: 1
[15:16:12][W][component:237]: Component modbus_controller took a long time for an operation (245 ms).
[15:16:12][W][component:238]: Components should block for at most 30 ms.
[15:16:12][C][tca9548a:037]: TCA9548A:
[15:16:12][C][tca9548a:038]:   Address: 0x70
[15:16:12][V][modbus_controller:230]: 5 modbus commands already in queue
[15:16:12][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:12][V][modbus_controller:230]: 3 modbus commands already in queue
[15:16:12][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:12][W][component:237]: Component modbus_controller took a long time for an operation (119 ms).
[15:16:12][W][component:238]: Components should block for at most 30 ms.
[15:16:12][V][modbus_controller:230]: 77 modbus commands already in queue
[15:16:12][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:13][W][component:237]: Component modbus_controller took a long time for an operation (123 ms).
[15:16:13][W][component:238]: Components should block for at most 30 ms.
[15:16:13][V][modbus_controller:230]: 108 modbus commands already in queue
[15:16:13][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:13][W][component:237]: Component modbus_controller took a long time for an operation (123 ms).
[15:16:13][W][component:238]: Components should block for at most 30 ms.
[15:16:13][V][modbus_controller:230]: 108 modbus commands already in queue
[15:16:13][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:13][W][component:237]: Component modbus_controller took a long time for an operation (244 ms).
[15:16:13][W][component:238]: Components should block for at most 30 ms.
[15:16:13][V][modbus_controller:081]: Modbus response queued
[15:16:14][V][modbus:159]: Clearing buffer of 8 bytes - parse succeeded
[15:16:14][W][component:237]: Component modbus took a long time for an operation (246 ms).
[15:16:14][W][component:238]: Components should block for at most 30 ms.
[15:16:14][V][modbus_controller:043]: Sending next modbus command to device 3 register 0x00 count 2
[15:16:14][V][modbus:223]: Modbus write: 03.03.00.00.00.02.C5.E9 (8)
[15:16:14][V][modbus_controller:568]: Command sent 3 0x0 2 send_count: 1
[15:16:14][W][component:237]: Component modbus_controller took a long time for an operation (246 ms).
[15:16:14][W][component:238]: Components should block for at most 30 ms.
[15:16:14][V][modbus_controller:088]: Process modbus response for address 0x0 size: 4
[15:16:14][V][modbus_controller:170]: data for register address : 0x0 : 
[15:16:14][D][modbus_controller.sensor:025]: Sensor new state: 2157.00
[15:16:14][V][sensor:043]: 'Near Bedroom Temp': Received new state 2157.000000
[15:16:15][D][sensor:093]: 'Near Bedroom Temp': Sending state 70.82600 °F with 1 decimals of accuracy
[15:16:15][D][modbus_controller.sensor:025]: Sensor new state: 4138.00
[15:16:15][V][sensor:043]: 'Near Bedroom Humidity': Received new state 4138.000000
[15:16:15][D][sensor:093]: 'Near Bedroom Humidity': Sending state 41.38000 % with 0 decimals of accuracy
[15:16:15][W][component:237]: Component modbus_controller took a long time for an operation (738 ms).
[15:16:15][W][component:238]: Components should block for at most 30 ms.
[15:16:15][C][modbus_controller:349]: ModbusController:
[15:16:15][C][modbus_controller:350]:   Address: 0x01
[15:16:15][C][modbus_controller:351]:   Max Command Retries: 3
[15:16:15][C][modbus_controller:352]:   Offline Skip Updates: 0
[15:16:15][C][modbus_controller:354]: sensormap
[15:16:15][C][modbus_controller:356]:  Sensor type=3 start=0x0 offset=0x0 count=1 size=2
[15:16:16][C][modbus_controller:356]:  Sensor type=3 start=0x0 offset=0x2 count=1 size=2
[15:16:16][C][modbus_controller:360]: ranges
[15:16:16][C][modbus_controller:362]:   Range type=3 start=0x0 count=2 skip_updates=0
[15:16:16][C][modbus_controller:365]: server registers
[15:16:16][V][modbus_controller:230]: 108 modbus commands already in queue
[15:16:16][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:16][W][component:237]: Component modbus_controller took a long time for an operation (123 ms).
[15:16:16][W][component:238]: Components should block for at most 30 ms.
[15:16:16][V][modbus_controller:230]: 108 modbus commands already in queue
[15:16:16][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:16][W][component:237]: Component modbus_controller took a long time for an operation (123 ms).
[15:16:16][W][component:238]: Components should block for at most 30 ms.
[15:16:16][V][modbus_controller:081]: Modbus response queued
[15:16:17][V][modbus:159]: Clearing buffer of 8 bytes - parse succeeded
[15:16:17][W][component:237]: Component modbus took a long time for an operation (123 ms).
[15:16:17][W][component:238]: Components should block for at most 30 ms.
[15:16:17][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x00 count 2
[15:16:17][V][modbus:223]: Modbus write: 01.03.00.00.00.02.C4.0B (8)
[15:16:17][V][modbus_controller:568]: Command sent 3 0x0 2 send_count: 1
[15:16:17][W][component:237]: Component modbus_controller took a long time for an operation (246 ms).
[15:16:17][W][component:238]: Components should block for at most 30 ms.
[15:16:17][V][modbus_controller:088]: Process modbus response for address 0x0 size: 4
[15:16:17][V][modbus_controller:170]: data for register address : 0x0 : 
[15:16:17][D][modbus_controller.sensor:025]: Sensor new state: 1996.00
[15:16:17][V][sensor:043]: 'Far Bedroom Temp': Received new state 1996.000000
[15:16:18][D][sensor:093]: 'Far Bedroom Temp': Sending state 67.92800 °F with 1 decimals of accuracy
[15:16:18][D][modbus_controller.sensor:025]: Sensor new state: 4562.00
[15:16:18][V][sensor:043]: 'Far Bedroom Humidity': Received new state 4562.000000
[15:16:18][D][sensor:093]: 'Far Bedroom Humidity': Sending state 45.62000 % with 0 decimals of accuracy
[15:16:18][W][component:237]: Component modbus_controller took a long time for an operation (617 ms).
[15:16:18][W][component:238]: Components should block for at most 30 ms.
[15:16:18][C][modbus_controller:349]: ModbusController:
[15:16:18][C][modbus_controller:350]:   Address: 0x02
[15:16:18][C][modbus_controller:351]:   Max Command Retries: 3
[15:16:18][C][modbus_controller:352]:   Offline Skip Updates: 0
[15:16:18][C][modbus_controller:354]: sensormap
[15:16:18][C][modbus_controller:356]:  Sensor type=3 start=0x0 offset=0x0 count=1 size=2
[15:16:19][C][modbus_controller:356]:  Sensor type=3 start=0x0 offset=0x2 count=1 size=2
[15:16:19][C][modbus_controller:360]: ranges
[15:16:19][C][modbus_controller:362]:   Range type=3 start=0x0 count=2 skip_updates=0
[15:16:19][C][modbus_controller:365]: server registers
[15:16:19][V][modbus_controller:230]: 2 modbus commands already in queue
[15:16:19][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0
[15:16:19][W][component:237]: Component modbus_controller took a long time for an operation (123 ms).
[15:16:19][W][component:238]: Components should block for at most 30 ms.
[15:16:19][V][modbus_controller:081]: Modbus response queued
[15:16:19][V][modbus:159]: Clearing buffer of 8 bytes - parse succeeded
[15:16:19][W][component:237]: Component modbus took a long time for an operation (243 ms).
[15:16:19][W][component:238]: Components should block for at most 30 ms.
[15:16:19][V][modbus_controller:088]: Process modbus response for address 0x0 size: 4
[15:16:19][V][modbus_controller:170]: data for register address : 0x0 : 
[15:16:20][D][modbus_controller.sensor:025]: Sensor new state: 2110.00
[15:16:20][V][sensor:043]: 'Living Area Temp': Received new state 2110.000000
[15:16:20][D][sensor:093]: 'Living Area Temp': Sending state 69.98000 °F with 1 decimals of accuracy
[15:16:20][D][modbus_controller.sensor:025]: Sensor new state: 4270.00
[15:16:20][V][sensor:043]: 'Living Area Humidity': Received new state 4270.000000
[15:16:20][D][sensor:093]: 'Living Area Humidity': Sending state 42.70000 % with 0 decimals of accuracy
[15:16:20][W][component:237]: Component modbus_controller took a long time for an operation (615 ms).
[15:16:20][W][component:238]: Components should block for at most 30 ms.
[15:16:20][V][modbus_controller:043]: Sending next modbus command to device 2 register 0x00 count 2
[15:16:20][V][modbus:223]: Modbus write: 02.03.00.00.00.02.C4.38 (8)
[15:16:20][V][modbus_controller:568]: Command sent 3 0x0 2 send_count: 1
[15:16:21][W][component:237]: Component modbus_controller took a long time for an operation (245 ms).
[15:16:21][W][component:238]: Components should block for at most 30 ms.
[15:16:21][C][modbus_controller:349]: ModbusController:
[15:16:21][C][modbus_controller:350]:   Address: 0x03
[15:16:21][C][modbus_controller:351]:   Max Command Retries: 3
[15:16:21][C][modbus_controller:352]:   Offline Skip Updates: 0
[15:16:21][C][modbus_controller:354]: sensormap
[15:16:21][C][modbus_controller:356]:  Sensor type=3 start=0x0 offset=0x0 count=1 size=2
[15:16:21][C][modbus_controller:356]:  Sensor type=3 start=0x0 offset=0x2 count=1 size=2
[15:16:21][C][modbus_controller:360]: ranges
[15:16:21][C][modbus_controller:362]:   Range type=3 start=0x0 count=2 skip_updates=0
[15:16:21][C][modbus_controller:365]: server registers
[15:16:21][V][modbus_controller:230]: 30 modbus commands already in queue
[15:16:21][V][modbus_controller:198]: Range : 0 Size: 2 (3) skip: 0

note, this is the yaml currently configured on the core basic. Also note that it is currently connected to a PoE plug which is connected to the router. I am accessing log from laptop (WiFI) to HA docker in order to obtain the log, so it is clearly connected to esphome builder.

Also to note I have also tried it with:

esp32:
  board: m5stack-core-esp32

When I used this “board” I couldn’t even get it to discover any entities (it said no devices and no entities under the esp discovered device). I did try reset/flashing as new and then copying the yaml numerous times so either it changed when it switch to the different board/platform or just because of luck of flashing

I tried flash yaml back to WiFi and entities were unavailable. I deleted ESPhome builder add-on, deleted ESPhome devices, I installed the file editor add-on and deleted the ESPhome folder in config. After I did that the entities became available with the WiFI yaml loaded. Tried flashing back to ethernet settings as above and it still shows all as unavailable.

I just don’t understand this, how can I see all of the connections in the log but not have any availability in HA?

It has to be an issue with the ethernet component. This yaml works on my atomS3 on wifi and it works on this device as WiFi but removing WiFi component and changing to ethernet component makes it so it can be seen in logs under ESPhome builder add-on but not actually see any data in HA and HA cannot invoke any actions (i.e. turning on the relay).

@nickrout do you have any input on what other information I could add to better diagnose?

I tried the following yaml. The core basic is arduino/python/uiflow framework so it changed that and also added clockspeed to 30mhz. I changed the board to m5stack-grey because it matched 240mhz,540kb,16m of this device. Per documents of the lan controller the w5500 has max of 80mhz but their testing max was 33.3Mhz. Several yaml configurations on here show 30Mhz but no one seems to have the same issue that I have. Most cannot ping nor see their devices at all. I can see it and connect to it but it just doesn’t send to HA. I deleted everything again and restarted HA. Installed ESPhome builder add-on and connected to the device. Flashed this yaml and then added to HA as a node. The node is there and the log is still the same, but it says no devices or entities under this node. Same result with or without fixed IP.

esphome:
  name: core-sensor-hub
  friendly_name: Core Sensor Hub

esp32:
  board: m5stack-grey
  framework:
    type: arduino

external_components:
 - source: github://nielsnl68/esphome-components
ethernet:
  type: W5500
  clk_pin: GPIO18
  mosi_pin: GPIO23
  miso_pin: GPIO19
  cs_pin: GPIO26
  interrupt_pin: GPIO34
  reset_pin: GPIO13
  clock_speed: 30Mhz
uart:
  id: uart_sensor
  tx_pin: GPIO15
  rx_pin: GPIO5
  baud_rate: 9600
  stop_bits: 1
i2c:
  - sda: GPIO21
    scl: GPIO22
    scan: True
    id: i2c0
modbus:
- uart_id: uart_sensor
  id: modbus1
  send_wait_time: 500ms

modbus_controller:
- id: modbus_uartsensor1
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x01
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor2
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x02
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor3
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x03
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor4
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x04
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor5
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x05
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor6
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x06
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor7
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x07
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor8
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x08
  modbus_id: modbus1
  update_interval: 10s
- id: modbus_uartsensor9
  allow_duplicate_commands: true
  command_throttle: 9s
  max_cmd_retries: 3
  address: 0x09
  modbus_id: modbus1
  update_interval: 10s
sensor:
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor1
  id: Temp_Sensor_1
  address: 0x0000
  register_type: holding
  name: "Living Area Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor1
  id: Humidty_Sensor_1
  name: "Living Area Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor2
  id: Temp_Sensor_2
  address: 0x0000
  register_type: holding
  name: "Master Suite Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor2
  id: Humidty_Sensor_2
  name: "Master Suite Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor3
  id: Temp_Sensor_3
  address: 0x0000
  register_type: holding
  name: "Far Bedroom Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor3
  id: Humidty_Sensor_3
  name: "Far Bedroom Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor4
  id: Temp_Sensor_4
  address: 0x0000
  register_type: holding
  name: "Near Bedroom Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor4
  id: Humidty_Sensor_4
  name: "Near Bedroom Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor5
  id: Temp_Sensor_5
  address: 0x0000
  register_type: holding
  name: "Upstairs Common Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor5
  id: Humidty_Sensor_5
  name: "Upstairs Common Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor6
  id: Temp_Sensor_6
  address: 0x0000
  register_type: holding
  name: "School Room Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor6
  id: Humidty_Sensor_6
  name: "School Room Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor7
  id: Temp_Sensor_7
  address: 0x0000
  register_type: holding
  name: "Playroom Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor7
  id: Humidty_Sensor_7
  name: "Playroom Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor8
  id: Temp_Sensor_8
  address: 0x0000
  register_type: holding
  name: "Guest Room Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor8
  id: Humidty_Sensor_8
  name: "Guest Room Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor9
  id: Temp_Sensor_9
  address: 0x0000
  register_type: holding
  name: "Upstairs Bedroom Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor9
  id: Humidty_Sensor_9
  name: "Upstairs Bedroom Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;

tca9548a:
  - address: 0x70
    id: multiplex0
    i2c_id: i2c0
    channels:
      - bus_id: multiplex0channel0
        channel: 0
      - bus_id: multiplex0channel1
        channel: 1
      - bus_id: multiplex0channel2
        channel: 2
      - bus_id: multiplex0channel3
        channel: 3
      - bus_id: multiplex0channel4
        channel: 4
      - bus_id: multiplex0channel5
        channel: 5

switch:
  - platform: m5stack4relay
    i2c_id: multiplex0channel0
    address: 0x26
    sync_mode: true
    id: Relay_25
    relay1: relay 25
    led1:
      name: led 25
      assumed_state: true
      id: led_25
  - platform: m5stack4relay
    i2c_id: multiplex0channel0
    address: 0x26
    sync_mode: true
    id: Relay_26
    relay2: relay 26
    led2:
      name: led 26
      assumed_state: true
      id: led_26
  - platform: m5stack4relay
    i2c_id: multiplex0channel0
    address: 0x26
    sync_mode: true
    id: Relay_27
    relay3: relay 27
    led3:
      name: led 27
      assumed_state: true
      id: led_27
  - platform: m5stack4relay
    i2c_id: multiplex0channel0
    address: 0x26
    sync_mode: true
    id: Relay_28
    relay4: relay 28
    led4:
      name: led 28
      assumed_state: true
      id: led_28
  - platform: m5stack4relay
    i2c_id: multiplex0channel1
    address: 0x26
    sync_mode: true
    id: Relay_29
    relay1: relay 29
    led1:
      name: led 29
      assumed_state: true
      id: led_29
  - platform: m5stack4relay
    i2c_id: multiplex0channel1
    address: 0x26
    sync_mode: true
    id: Relay_30
    relay2: relay 30
    led2:
      name: led 30
      assumed_state: true
      id: led_30
  - platform: m5stack4relay
    i2c_id: multiplex0channel1
    address: 0x26
    sync_mode: true
    id: Relay_31
    relay3: relay 31
    led3:
      name: led 31
      assumed_state: true
      id: led_31
  - platform: m5stack4relay
    i2c_id: multiplex0channel1
    address: 0x26
    sync_mode: true
    id: Relay_32
    relay4: relay 32
    led4:
      name: led 32
      assumed_state: true
      id: led_32
  - platform: m5stack4relay
    i2c_id: multiplex0channel2
    address: 0x26
    sync_mode: true
    id: Relay_33
    relay1: relay 33
    led1:
      name: led 33
      assumed_state: true
      id: led_33
  - platform: m5stack4relay
    i2c_id: multiplex0channel2
    address: 0x26
    sync_mode: true
    id: Relay_34
    relay2: relay 34
    led2:
      name: led 34
      assumed_state: true
      id: led_34
  - platform: m5stack4relay
    i2c_id: multiplex0channel2
    address: 0x26
    sync_mode: true
    id: Relay_35
    relay3: relay 35
    led3:
      name: led 35
      assumed_state: true
      id: led_35
  - platform: m5stack4relay
    i2c_id: multiplex0channel2
    address: 0x26
    sync_mode: true
    id: Relay_36
    relay4: relay 36
    led4:
      name: led 36
      assumed_state: true
      id: led_36
  - platform: m5stack4relay
    i2c_id: multiplex0channel3
    address: 0x26
    sync_mode: true
    id: Relay_37
    relay1: relay 37
    led1:
      name: led 37
      assumed_state: true
      id: led_37
  - platform: m5stack4relay
    i2c_id: multiplex0channel3
    address: 0x26
    sync_mode: true
    id: Relay_38
    relay2: relay 38
    led2:
      name: led 38
      assumed_state: true
      id: led_38
  - platform: m5stack4relay
    i2c_id: multiplex0channel3
    address: 0x26
    sync_mode: true
    id: Relay_39
    relay3: relay 39
    led3:
      name: led 39
      assumed_state: true
      id: led_39
  - platform: m5stack4relay
    i2c_id: multiplex0channel3
    address: 0x26
    sync_mode: true
    id: Relay_40
    relay4: relay 40
    led4:
      name: led 40
      assumed_state: true
      id: led_40
  - platform: m5stack4relay
    i2c_id: multiplex0channel4
    address: 0x26
    sync_mode: true
    id: Relay_41
    relay1: relay 41
    led1:
      name: led 41
      assumed_state: true
      id: led_41
  - platform: m5stack4relay
    i2c_id: multiplex0channel4
    address: 0x26
    sync_mode: true
    id: Relay_42
    relay2: relay 42
    led2:
      name: led 42
      assumed_state: true
      id: led_42
  - platform: m5stack4relay
    i2c_id: multiplex0channel4
    address: 0x26
    sync_mode: true
    id: Relay_43
    relay3: relay 43
    led3:
      name: led 43
      assumed_state: true
      id: led_43
  - platform: m5stack4relay
    i2c_id: multiplex0channel4
    address: 0x26
    sync_mode: true
    id: Relay_44
    relay4: relay 44
    led4:
      name: led 44
      assumed_state: true
      id: led_44
  - platform: m5stack4relay
    i2c_id: multiplex0channel5
    address: 0x26
    sync_mode: true
    id: Relay_45
    relay1: relay 45
    led1:
      name: led 45
      assumed_state: true
      id: led_45
  - platform: m5stack4relay
    i2c_id: multiplex0channel5
    address: 0x26
    sync_mode: true
    id: Relay_46
    relay2: relay 46
    led2:
      name: led 46
      assumed_state: true
      id: led_46
  - platform: m5stack4relay
    i2c_id: multiplex0channel5
    address: 0x26
    sync_mode: true
    id: Relay_47
    relay3: relay 47
    led3:
      name: led 47
      assumed_state: true
      id: led_47
  - platform: m5stack4relay
    i2c_id: multiplex0channel5
    address: 0x26
    sync_mode: true
    id: Relay_48
    relay4: relay 48
    led4:
      name: led 48
      assumed_state: true
      id: led_48

logger:
  baud_rate: 9600
  level: verbose

api:
 encryption:
   key: "crazybananas'fakekey"
ota:
- platform: esphome

HA is a container docker connected to a router via ethernet. That router is connected to the main router via ethernet. This esp device is connected via ethernet to the main router. I don’t think that would be causing any issues, but offer it in case I missed something.

I set static IP and it connects the same. Then I tried changing logger to very_verbose to see if I could get more detail and it would not connect to device at all. The log sits like this:

INFO Starting log output from 192.168.1.81 using esphome API
WARNING Can't connect to ESPHome API for core-sensor-hub @ 192.168.1.81: Error connecting to [AddrInfo(family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, proto=6, sockaddr=IPv4Sockaddr(address='192.168.1.81', port=6053))]: [Errno 111] Connect call failed ('192.168.1.81', 6053) (SocketAPIError)
INFO Trying to connect to core-sensor-hub @ 192.168.1.81 in the background

When I change back to verbose it connects and the log keeps flowing with data; however, I still have no devices or entities discovered in this device node.

Looking through the forum on past topics that were slightly related I tried adding:

external_components:
 - source:
     type: git
     url: https://github.com/JeroenVanOort/esphome/
     ref: eth-w5500
   components: [ ethernet,network,api,esp32 ]

ethernet:
 type: W5500
 clk_pin: GPIOx
 mosi_pin: GPIOx
 miso_pin: GPIOx
 cs_pin: GPIOx
 interrupt_pin: GPIOx
 reset_pin: GPIOx
 clock_speed: 30Mhz

which was in reference to the topic: How to use w5500 Ethernet module with esphome - ESPHome - Home Assistant Community

as other users have commented that the included ethernet component wasn’t working directly. I tried all of these yaml configurations on current version of ESPhome builder and ESPhome builder dev and it still doesn’t work.

However, when I added this to my yaml configuration, compile rejected stating that esphome needed a platform with platform key. If you enter platform and a key then it fails because it says it no longer uses platform. Attempting numerous times and sometimes compile will allow it to proceed but rejects and states that ethernet component not found. So again, I am lost.

So, I tried unplugging components and adding them 1 at a time and then delete and then add node. When I unplugged the connector for the rs485 mod sensors, the entities were added. The relays works but obviously the rs485 sensors do not.

Any thoughts as to why the rs485 sensors would cause issue if the data is logging correctly? Why would the connection cause entities to not be discovered in HA? Is the ethernet component trying to use a pin that is shared with the rs485 bus?

Unplugging the rs485 sensors and waiting lets the relays come back online. At first plug in, the rs485 sensors send data if you open the entity directly (but they show on dashboard as unavailable) the data in the graph of the entity is intermittent. It looks like updates are every 5 mins. After you unplug the sensors then some of the data shows as the last retrieved value in the sensors displayed on the dashboard.

So, something in the ethernet component is utilizing the rx/tx pins of the uart. On this device set up, this is how they are mapped, is it possible to figure out what in the ethernet component is using whatever pin(s) is/are involved and remap those?

GPIO5 for this device is IO7 or just an available pin, GPIO15 is IIS_out so is used for audio if connecting a speaker. The m5stack Grey has the exact same pinmap for bus as the m5stack core basic v2.7 (my board), that is what I am using as the current board for the yaml and ethernet component is still interfering with the rx/tx read. These available boards do not match these pin layouts because all of the different type boards I have tried all say that GPIO5 and GPIO15 are strapping pins. I have no idea to find out why that is, where it is defined, or how to change it so that it maps appropriately for this device.

I removed the rs485 chip and soldered the rx tx to gpio1 and gpio3. Exact same result. I figure that ethernet component also uses rx/tx. So I did a bit more research and tried substituting rx/tx for GPIO17/GPIO16 per board and leaving uart as gpio1 gpio3. It didn’t work. So I thought if WiFi works and ethernet doesn’t and there is rx/tx for both now separated then the only thing that could be common is THE GROUND! I haven’t needed a ground because the sensors are powered directly with a power supply and the device had it’s own power source. Well, this device is powered by PoE so they were sharing the same ground which may have been causing a bit of cross-talk.

Just to make it less complicated for people in the future with this m5 lan poe module. I resoldered the connecting pins and rs485 chip to the assigned gpio5 and gpio15 per m5 docs. I updated the yaml and it still works. I also tried deleting out the tx/rx substitution to see if it it caused conflict and it did, so they need to be separate for w5500 ethernet.

In conclusion, to use w5500 PoE ethernet connection AND rs485 modbus, you need solder the rs485 chip to the board in it’s designated spot as manufactured. Then you must substitute for alternate rx/tx pins and have your rs485 uart use different rx/tx pins and you must connect the esp device rs485 interface ground to the common ground of all of your peripherals that are communicating via rs485.

working yaml configuration

esphome:
  name: core-sensor-hub
  friendly_name: Core Sensor Hub
esp32:
  board: m5stack-grey
  framework: 
    type: esp-idf   
substitutions:
  tx_pin: GPIO17
  rx_pin: GPIO16
external_components:
 - source:
     type: git
     url: https://github.com/nielsnl68/esphome-components
   components: all
ethernet:
  type: w5500
  clk_pin: GPIO18
  mosi_pin: GPIO23
  miso_pin: GPIO19
  cs_pin: GPIO26
  interrupt_pin: GPIO34
  reset_pin: GPIO13
  clock_speed: 30Mhz
uart:
  id: uart_sensor
  tx_pin: GPIO15
  rx_pin: GPIO5
  baud_rate: 9600
  stop_bits: 1
i2c:
  - sda: GPIO21
    scl: GPIO22
    scan: True
    id: i2c0
modbus:
- uart_id: uart_sensor
  id: modbus1
  send_wait_time: 500ms

modbus_controller:
- id: modbus_uartsensor1
  allow_duplicate_commands: true
  command_throttle: 3s
  max_cmd_retries: 3
  address: 0x01
  modbus_id: modbus1
  update_interval: 30s
- id: modbus_uartsensor2
  allow_duplicate_commands: true
  command_throttle: 3s
  max_cmd_retries: 3
  address: 0x02
  modbus_id: modbus1
  update_interval: 30s
- id: modbus_uartsensor3
  allow_duplicate_commands: true
  command_throttle: 3s
  max_cmd_retries: 3
  address: 0x03
  modbus_id: modbus1
  update_interval: 30s
- id: modbus_uartsensor4
  allow_duplicate_commands: true
  command_throttle: 3s
  max_cmd_retries: 3
  address: 0x04
  modbus_id: modbus1
  update_interval: 30s
- id: modbus_uartsensor5
  allow_duplicate_commands: true
  command_throttle: 3s
  max_cmd_retries: 3
  address: 0x05
  modbus_id: modbus1
  update_interval: 30s
- id: modbus_uartsensor6
  allow_duplicate_commands: true
  command_throttle: 3s
  max_cmd_retries: 3
  address: 0x06
  modbus_id: modbus1
  update_interval: 30s
- id: modbus_uartsensor7
  allow_duplicate_commands: true
  command_throttle: 3s
  max_cmd_retries: 3
  address: 0x07
  modbus_id: modbus1
  update_interval: 30s
- id: modbus_uartsensor8
  allow_duplicate_commands: true
  command_throttle: 3s
  max_cmd_retries: 3
  address: 0x08
  modbus_id: modbus1
  update_interval: 30s
- id: modbus_uartsensor9
  allow_duplicate_commands: true
  command_throttle: 3s
  max_cmd_retries: 3
  address: 0x09
  modbus_id: modbus1
  update_interval: 30s
sensor:
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor1
  id: Temp_Sensor_1
  address: 0x0000
  register_type: holding
  name: "Living Area Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor1
  id: Humidty_Sensor_1
  name: "Living Area Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor2
  id: Temp_Sensor_2
  address: 0x0000
  register_type: holding
  name: "Master Suite Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor2
  id: Humidty_Sensor_2
  name: "Master Suite Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor3
  id: Temp_Sensor_3
  address: 0x0000
  register_type: holding
  name: "Far Bedroom Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor3
  id: Humidty_Sensor_3
  name: "Far Bedroom Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor4
  id: Temp_Sensor_4
  address: 0x0000
  register_type: holding
  name: "Near Bedroom Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor4
  id: Humidty_Sensor_4
  name: "Near Bedroom Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor5
  id: Temp_Sensor_5
  address: 0x0000
  register_type: holding
  name: "Upstairs Common Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor5
  id: Humidty_Sensor_5
  name: "Upstairs Common Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor6
  id: Temp_Sensor_6
  address: 0x0000
  register_type: holding
  name: "School Room Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor6
  id: Humidty_Sensor_6
  name: "School Room Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor7
  id: Temp_Sensor_7
  address: 0x0000
  register_type: holding
  name: "Playroom Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor7
  id: Humidty_Sensor_7
  name: "Playroom Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor8
  id: Temp_Sensor_8
  address: 0x0000
  register_type: holding
  name: "Guest Room Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor8
  id: Humidty_Sensor_8
  name: "Guest Room Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;
- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor9
  id: Temp_Sensor_9
  address: 0x0000
  register_type: holding
  name: "Upstairs Bedroom Temp"
  icon: "mdi:temperature-fahrenheit"
  device_class: "temperature"
  state_class: "measurement"
  unit_of_measurement: "°F"
  value_type: U_WORD
  accuracy_decimals: 1
  filters:
   - lambda: if (x < 32768) return x * 0.01; else return -1 * (x - 65535) * 0.01;
   - lambda: return x * (9.0/5.0) + 32.0;

- platform: modbus_controller
  modbus_controller_id: modbus_uartsensor9
  id: Humidty_Sensor_9
  name: "Upstairs Bedroom Humidity"
  address: 0x0001
  register_type: holding
  icon: "mdi:water-percent"
  device_class: "humidity"
  state_class: "measurement"
  unit_of_measurement: "%"
  value_type: U_WORD
  accuracy_decimals: 0
  filters:
   - lambda: return x * 0.01;

tca9548a:
  - address: 0x70
    id: multiplex0
    i2c_id: i2c0
    channels:
      - bus_id: multiplex0channel0
        channel: 0
      - bus_id: multiplex0channel1
        channel: 1
      - bus_id: multiplex0channel2
        channel: 2
      - bus_id: multiplex0channel3
        channel: 3
      - bus_id: multiplex0channel4
        channel: 4
      - bus_id: multiplex0channel5
        channel: 5

switch:
  - platform: m5stack4relay
    i2c_id: multiplex0channel0
    address: 0x26
    sync_mode: true
    id: Relay_25
    relay1: relay 25
    led1:
      name: led 25
      assumed_state: true
      id: led_25
  - platform: m5stack4relay
    i2c_id: multiplex0channel0
    address: 0x26
    sync_mode: true
    id: Relay_26
    relay2: relay 26
    led2:
      name: led 26
      assumed_state: true
      id: led_26
  - platform: m5stack4relay
    i2c_id: multiplex0channel0
    address: 0x26
    sync_mode: true
    id: Relay_27
    relay3: relay 27
    led3:
      name: led 27
      assumed_state: true
      id: led_27
  - platform: m5stack4relay
    i2c_id: multiplex0channel0
    address: 0x26
    sync_mode: true
    id: Relay_28
    relay4: relay 28
    led4:
      name: led 28
      assumed_state: true
      id: led_28
  - platform: m5stack4relay
    i2c_id: multiplex0channel1
    address: 0x26
    sync_mode: true
    id: Relay_29
    relay1: relay 29
    led1:
      name: led 29
      assumed_state: true
      id: led_29
  - platform: m5stack4relay
    i2c_id: multiplex0channel1
    address: 0x26
    sync_mode: true
    id: Relay_30
    relay2: relay 30
    led2:
      name: led 30
      assumed_state: true
      id: led_30
  - platform: m5stack4relay
    i2c_id: multiplex0channel1
    address: 0x26
    sync_mode: true
    id: Relay_31
    relay3: relay 31
    led3:
      name: led 31
      assumed_state: true
      id: led_31
  - platform: m5stack4relay
    i2c_id: multiplex0channel1
    address: 0x26
    sync_mode: true
    id: Relay_32
    relay4: relay 32
    led4:
      name: led 32
      assumed_state: true
      id: led_32
  - platform: m5stack4relay
    i2c_id: multiplex0channel2
    address: 0x26
    sync_mode: true
    id: Relay_33
    relay1: relay 33
    led1:
      name: led 33
      assumed_state: true
      id: led_33
  - platform: m5stack4relay
    i2c_id: multiplex0channel2
    address: 0x26
    sync_mode: true
    id: Relay_34
    relay2: relay 34
    led2:
      name: led 34
      assumed_state: true
      id: led_34
  - platform: m5stack4relay
    i2c_id: multiplex0channel2
    address: 0x26
    sync_mode: true
    id: Relay_35
    relay3: relay 35
    led3:
      name: led 35
      assumed_state: true
      id: led_35
  - platform: m5stack4relay
    i2c_id: multiplex0channel2
    address: 0x26
    sync_mode: true
    id: Relay_36
    relay4: relay 36
    led4:
      name: led 36
      assumed_state: true
      id: led_36
  - platform: m5stack4relay
    i2c_id: multiplex0channel3
    address: 0x26
    sync_mode: true
    id: Relay_37
    relay1: relay 37
    led1:
      name: led 37
      assumed_state: true
      id: led_37
  - platform: m5stack4relay
    i2c_id: multiplex0channel3
    address: 0x26
    sync_mode: true
    id: Relay_38
    relay2: relay 38
    led2:
      name: led 38
      assumed_state: true
      id: led_38
  - platform: m5stack4relay
    i2c_id: multiplex0channel3
    address: 0x26
    sync_mode: true
    id: Relay_39
    relay3: relay 39
    led3:
      name: led 39
      assumed_state: true
      id: led_39
  - platform: m5stack4relay
    i2c_id: multiplex0channel3
    address: 0x26
    sync_mode: true
    id: Relay_40
    relay4: relay 40
    led4:
      name: led 40
      assumed_state: true
      id: led_40
  - platform: m5stack4relay
    i2c_id: multiplex0channel4
    address: 0x26
    sync_mode: true
    id: Relay_41
    relay1: relay 41
    led1:
      name: led 41
      assumed_state: true
      id: led_41
  - platform: m5stack4relay
    i2c_id: multiplex0channel4
    address: 0x26
    sync_mode: true
    id: Relay_42
    relay2: relay 42
    led2:
      name: led 42
      assumed_state: true
      id: led_42
  - platform: m5stack4relay
    i2c_id: multiplex0channel4
    address: 0x26
    sync_mode: true
    id: Relay_43
    relay3: relay 43
    led3:
      name: led 43
      assumed_state: true
      id: led_43
  - platform: m5stack4relay
    i2c_id: multiplex0channel4
    address: 0x26
    sync_mode: true
    id: Relay_44
    relay4: relay 44
    led4:
      name: led 44
      assumed_state: true
      id: led_44
  - platform: m5stack4relay
    i2c_id: multiplex0channel5
    address: 0x26
    sync_mode: true
    id: Relay_45
    relay1: relay 45
    led1:
      name: led 45
      assumed_state: true
      id: led_45
  - platform: m5stack4relay
    i2c_id: multiplex0channel5
    address: 0x26
    sync_mode: true
    id: Relay_46
    relay2: relay 46
    led2:
      name: led 46
      assumed_state: true
      id: led_46
  - platform: m5stack4relay
    i2c_id: multiplex0channel5
    address: 0x26
    sync_mode: true
    id: Relay_47
    relay3: relay 47
    led3:
      name: led 47
      assumed_state: true
      id: led_47
  - platform: m5stack4relay
    i2c_id: multiplex0channel5
    address: 0x26
    sync_mode: true
    id: Relay_48
    relay4: relay 48
    led4:
      name: led 48
      assumed_state: true
      id: led_48

logger:
  baud_rate: 9600
  level: verbose

api:
 encryption:
   key: secret
ota:
- platform: esphome