esphome / issues

Issue Tracker for ESPHome
https://esphome.io/
290 stars 34 forks source link

modbus send too many values after upgrade to ESPHome 2021.10 #2630

Closed MTrab closed 2 years ago

MTrab commented 2 years ago

The problem

After upgrading to ESPHome 2021.10 I have alot of send too many values using the custom_component at https://github.com/heinekmadsen/esphome_components/tree/main/components/wavinAhc9000

This wasn't an issue prior

Which version of ESPHome has the issue?

2021.10.x

What type of installation are you using?

Home Assistant Add-on

Which version of Home Assistant has the issue?

2021.10.2

What platform are you using?

ESP8266

Board

Wemos D1 Mini

Component causing the issue

Modbus

Example YAML snippet

external_components:
  - source: github://heinekmadsen/esphome_components
    refresh: 0s

logger:
  baud_rate: 0

uart:
  rx_pin: GPIO13
  tx_pin: GPIO15
  baud_rate: 38400
  id: uart_modbus
  stop_bits: 1

modbus:
  uart_id: uart_modbus

wavinAhc9000:
  update_interval: 60s
  rw_pin: GPIO5

climate:
  - platform: wavinAhc9000
    channel: 1
    name: "Toilet"
    visual:
      temperature_step: 0.5 °C
    battery_level:
      name: "Toilet Battery"
    current_temp:
      name: "Toilet Temperature"

Anything in the logs that might be useful for us?

[10:07:22][D][wavin:143]: Timeout on channel 6, state 1
[10:07:22][E][modbus:143]: send too many values 1539 max=128
[10:07:23][D][wavin:143]: Timeout on channel 7, state 1
[10:07:23][E][modbus:143]: send too many values 1795 max=128
[10:07:24][D][wavin:143]: Timeout on channel 8, state 1
[10:07:24][E][modbus:143]: send too many values 2051 max=128
[10:07:25][D][wavin:143]: Timeout on channel 9, state 1
[10:07:25][E][modbus:143]: send too many values 2307 max=128

Additional information

I only use the first 3 channels - but none of them work as expected. Channel 1 works sometimes, but 2 and 3 are not working at all.

martgras commented 2 years ago

Can you enable verbose logging - that will show the payload sent to modbus

MTrab commented 2 years ago
[15:09:30][V][wavin:189]: Sending for channel 1, state 1
[15:09:30][V][modbus:182]: Modbus write: 01.43.03.00.00.03.04.40 (8)
[15:09:30][V][modbus:058]: Modbus received Byte  1 (0X1)
[15:09:30][V][modbus:058]: Modbus received Byte  67 (0X43)
[15:09:30][V][modbus:058]: Modbus received Byte  6 (0X6)
[15:09:30][V][modbus:058]: Modbus received Byte  33 (0X21)
[15:09:30][V][modbus:058]: Modbus received Byte  151 (0X97)
[15:09:30][V][modbus:058]: Modbus received Byte  0 (0X0)
[15:09:30][V][modbus:058]: Modbus received Byte  25 (0X19)
[15:09:30][V][modbus:058]: Modbus received Byte  0 (0X0)
[15:09:30][V][modbus:058]: Modbus received Byte  193 (0Xc1)
[15:09:30][V][modbus:058]: Modbus received Byte  70 (0X46)
[15:09:30][V][modbus:058]: Modbus received Byte  126 (0X7e)
[15:09:30][V][wavin:057]: Channel 1, state 1, Data: 21.97.00.19.00.C1 (6)
[15:09:30][D][wavin:093]: Status channel 1: ON
[15:09:30][D][climate:381]: 'Toilet' - Sending state:
[15:09:30][D][climate:384]:   Mode: HEAT
[15:09:30][D][climate:404]:   Current Temperature: nan°C
[15:09:30][D][climate:410]:   Target Temperature: 0.00°C
[15:09:30][V][wavin:189]: Sending for channel 1, state 2
[15:09:30][V][wavin:195]: Reading data for element 0
[15:09:30][V][modbus:182]: Modbus write: 01.43.01.04.00.07.45.FA (8)
[15:09:30][V][modbus:058]: Modbus received Byte  1 (0X1)
[15:09:30][V][modbus:058]: Modbus received Byte  67 (0X43)
[15:09:30][V][modbus:058]: Modbus received Byte  14 (0Xe)
[15:09:30][V][modbus:058]: Modbus received Byte  0 (0X0)
[15:09:30][V][modbus:058]: Modbus received Byte  214 (0Xd6)
[15:09:30][V][modbus:058]: Modbus received Byte  0 (0X0)
[15:09:30][V][modbus:058]: Modbus received Byte  0 (0X0)
[15:09:30][V][modbus:058]: Modbus received Byte  0 (0X0)
[15:09:30][V][modbus:058]: Modbus received Byte  0 (0X0)
[15:09:30][V][modbus:058]: Modbus received Byte  0 (0X0)
[15:09:30][V][modbus:058]: Modbus received Byte  0 (0X0)
[15:09:30][V][modbus:058]: Modbus received Byte  128 (0X80)
[15:09:30][V][modbus:058]: Modbus received Byte  148 (0X94)
[15:09:30][V][modbus:058]: Modbus received Byte  70 (0X46)
[15:09:30][V][modbus:058]: Modbus received Byte  75 (0X4b)
[15:09:30][V][modbus:058]: Modbus received Byte  0 (0X0)
[15:09:30][V][modbus:058]: Modbus received Byte  9 (0X9)
[15:09:30][V][modbus:058]: Modbus received Byte  99 (0X63)
[15:09:30][V][modbus:058]: Modbus received Byte  247 (0Xf7)
[15:09:30][V][wavin:057]: Channel 1, state 2, Data: 00.D6.00.00.00.00.00.00.80.94.46.4B.00.09 (14)
[15:09:30][D][wavin:100]: Temperature channel 1: 21.4
[15:09:30][D][wavin:101]: Battery channel 1: 90
[15:09:30][D][climate:381]: 'Toilet' - Sending state:
[15:09:30][D][climate:384]:   Mode: HEAT
[15:09:30][D][climate:404]:   Current Temperature: 21.40°C
[15:09:30][D][climate:410]:   Target Temperature: 0.00°C
[15:09:30][V][sensor:062]: 'Toilet Temperature': Received new state 21.400000
[15:09:30][D][sensor:113]: 'Toilet Temperature': Sending state 21.40000 °C with 1 decimals of accuracy
[15:09:30][V][sensor:062]: 'Toilet Battery': Received new state 90.000000
[15:09:30][D][sensor:113]: 'Toilet Battery': Sending state 90.00000 % with 0 decimals of accuracy
[15:09:30][V][wavin:189]: Sending for channel 1, state 3
[15:09:30][V][modbus:182]: Modbus write: 01.43.02.00.00.01.84.7D (8)
[15:09:30][V][modbus:058]: Modbus received Byte  1 (0X1)
[15:09:30][V][modbus:058]: Modbus received Byte  67 (0X43)
[15:09:30][V][modbus:058]: Modbus received Byte  2 (0X2)
[15:09:30][V][modbus:058]: Modbus received Byte  0 (0X0)
[15:09:30][V][modbus:058]: Modbus received Byte  230 (0Xe6)
[15:09:30][V][modbus:058]: Modbus received Byte  44 (0X2c)
[15:09:30][V][modbus:058]: Modbus received Byte  14 (0Xe)
[15:09:30][V][wavin:057]: Channel 1, state 3, Data: 00.E6 (2)
[15:09:30][D][wavin:108]: Target temperature channel 1: 23.0
[15:09:30][D][climate:381]: 'Toilet' - Sending state:
[15:09:30][D][climate:384]:   Mode: HEAT
[15:09:30][D][climate:404]:   Current Temperature: 21.40°C
[15:09:30][D][climate:410]:   Target Temperature: 23.00°C
[15:09:30][V][wavin:189]: Sending for channel 1, state 4
[15:09:30][V][modbus:182]: Modbus write: 01.43.02.07.00.01.35.BC (8)
[15:09:30][V][modbus:058]: Modbus received Byte  1 (0X1)
[15:09:30][V][modbus:058]: Modbus received Byte  67 (0X43)
[15:09:30][V][modbus:058]: Modbus received Byte  2 (0X2)
[15:09:30][V][modbus:058]: Modbus received Byte  64 (0X40)
[15:09:30][V][modbus:058]: Modbus received Byte  0 (0X0)
[15:09:30][V][modbus:058]: Modbus received Byte  156 (0X9c)
[15:09:30][V][modbus:058]: Modbus received Byte  68 (0X44)
[15:09:30][V][wavin:057]: Channel 1, state 4, Data: 40.00 (2)
[15:09:30][D][wavin:114]: Mode channel 1: 0
[15:09:30][V][wavin:189]: Sending for channel 2, state 1
[15:09:30][E][modbus:143]: send too many values 259 max=128
[15:09:31][D][wavin:143]: Timeout on channel 2, state 1
[15:09:31][V][wavin:189]: Sending for channel 3, state 1
[15:09:31][E][modbus:143]: send too many values 515 max=128
[15:09:32][D][wavin:143]: Timeout on channel 3, state 1
[15:09:32][V][wavin:189]: Sending for channel 4, state 1
[15:09:32][E][modbus:143]: send too many values 771 max=128
[15:09:32][V][sensor:062]: 'WiFi Signal Sensor': Received new state -53.000000
[15:09:32][D][sensor:113]: 'WiFi Signal Sensor': Sending state -53.00000 dBm with 0 decimals of accuracy
[15:09:33][D][wavin:143]: Timeout on channel 4, state 1
[15:09:33][V][wavin:189]: Sending for channel 5, state 1
[15:09:33][E][modbus:143]: send too many values 1027 max=128
[15:09:34][D][wavin:143]: Timeout on channel 5, state 1
[15:09:34][V][wavin:189]: Sending for channel 6, state 1
[15:09:34][E][modbus:143]: send too many values 1283 max=128
[15:09:35][D][wavin:143]: Timeout on channel 6, state 1
[15:09:35][V][wavin:189]: Sending for channel 7, state 1
[15:09:35][E][modbus:143]: send too many values 1539 max=128
[15:09:36][D][wavin:143]: Timeout on channel 7, state 1
[15:09:36][V][wavin:189]: Sending for channel 8, state 1
[15:09:36][E][modbus:143]: send too many values 1795 max=128
[15:09:37][D][wavin:143]: Timeout on channel 8, state 1
[15:09:37][V][wavin:189]: Sending for channel 9, state 1
[15:09:37][E][modbus:143]: send too many values 2051 max=128
[15:09:38][D][wavin:143]: Timeout on channel 9, state 1
[15:09:38][V][wavin:189]: Sending for channel 10, state 1
[15:09:38][E][modbus:143]: send too many values 2307 max=128
[15:09:39][D][wavin:143]: Timeout on channel 10, state 1
[15:09:39][V][wavin:189]: Sending for channel 11, state 1
[15:09:39][E][modbus:143]: send too many values 2563 max=128
[15:09:40][D][wavin:143]: Timeout on channel 11, state 1
[15:09:40][V][wavin:189]: Sending for channel 12, state 1
[15:09:40][E][modbus:143]: send too many values 2819 max=128
[15:09:41][D][wavin:143]: Timeout on channel 12, state 1
[15:09:41][V][wavin:189]: Sending for channel 13, state 1
[15:09:41][E][modbus:143]: send too many values 3075 max=128
[15:09:42][D][wavin:143]: Timeout on channel 13, state 1
[15:09:42][V][wavin:189]: Sending for channel 14, state 1
[15:09:42][E][modbus:143]: send too many values 3331 max=128
[15:09:43][D][wavin:143]: Timeout on channel 14, state 1
[15:09:43][V][wavin:189]: Sending for channel 15, state 1
[15:09:43][E][modbus:143]: send too many values 3587 max=128
[15:09:44][D][wavin:143]: Timeout on channel 15, state 1
[15:09:44][V][wavin:189]: Sending for channel 16, state 1
[15:09:44][E][modbus:143]: send too many values 3843 max=128
[15:09:45][D][wavin:143]: Timeout on channel 16, state 1
martgras commented 2 years ago

Can you please try using modbus from my fork

external_components:
  - source: github://heinekmadsen/esphome_components

  - source:
      type: git
      url: https://github.com/martgras/esphome
      ref: modbus-fix
    components: [ modbus ]
MTrab commented 2 years ago

MUCH better ;) Now it works again :)