Long RGB Animations, breaks I2C

Hello,

I have two RGB LED’s connected to PCA9685. When even if one of them runs animation (Random), several seconds later, all of the I2C devices stop responding with this warning:

[W][i2c:076]: Unknown transmit error 4 for address 0x20

0x20 is MCP23017. Don’t know how it is related. This only affects I2C devices. ESP8266 is still responsive.

This is my problematic configuration:

esphome:
  name: bedroom
  platform: ESP8266
  board: nodemcuv2

wifi:
  ssid: "****"
  password: "****"
  manual_ip:
    static_ip: 192.168.1.198
    gateway: 192.168.1.1
    subnet: 255.255.255.0
  ap:
    ssid: "*****"
    password: "****"

captive_portal:

uart:
  rx_pin: D4
  tx_pin: D3
  baud_rate: 9600

i2c:
  sda: D2
  scl: D1
  scan: True

mcp23017:
  - id: 'mcp23017_hub'
    address: 0x20

spi:
  clk_pin: D6
  mosi_pin: D7

pca9685:
  - frequency: 200

output:
  - platform: pca9685
    id: 'R1R'
    channel: 9
  - platform: pca9685
    id: 'G1G'
    channel: 10
  - platform: pca9685
    id: 'B1B'
    channel: 11
  - platform: pca9685
    id: 'R2R'
    channel: 12
  - platform: pca9685
    id: 'G2G'
    max_power: 50%
    channel: 13
  - platform: pca9685
    id: 'B2B'
    channel: 14

mqtt:
  broker: 192.168.1.200
  username: "***"
  password: "******"

text_sensor:
  - platform: mqtt_subscribe
    name: "Data from topic"
    id: text
    topic: sensor/text
    
light:
  - platform: rgb
    name: "Yatak Şerit"
    red: "R1R"
    green: "G1G"
    blue: "B1B"
    default_transition_length: 1s
    effects:
      - random:
  - platform: rgb
    name: "Mini LED"
    red: "R2R"
    green: "G2G"
    blue: "B2B"
    default_transition_length: 300ms 
    effects:
      - random:

display:
 - platform: max7219
   cs_pin: D8
   num_chips: 1
   intensity: 1
   update_interval: 150ms
   lambda: |-
      it.print("no VI-FI");
      it.printf("%s", id(text).state.c_str());
      
switch: 
  - platform: gpio
    name: "Yatak Şerit PWR LED"
    pin:
      mcp23xxx: mcp23017_hub
      number: 6
      mode: OUTPUT
      inverted: False

  - platform: gpio
    name: "Yatak Şerit Oto LED"
    pin:
      mcp23xxx: mcp23017_hub
      number: 8
      mode: OUTPUT
      inverted: False
  - platform: gpio
    name: "Yatak Spot PWR LED"
    pin:
      mcp23xxx: mcp23017_hub
      number: 13
      mode: OUTPUT
      inverted: False
  - platform: gpio
    name: "Yatak Spot Oto LED"
    pin:
      mcp23xxx: mcp23017_hub
      number: 11
      mode: OUTPUT
      inverted: False
  - platform: gpio
    name: "Yatak Odası Buzzer"
    pin:
      mcp23xxx: mcp23017_hub
      number: 3
      mode: OUTPUT
      inverted: False
  - platform: gpio
    name: "Yatak Spot"
    pin:
      mcp23xxx: mcp23017_hub
      number: 4
      mode: OUTPUT
      inverted: True
  - platform: gpio
    name: "Duraklat LED"
    pin:
      mcp23xxx: mcp23017_hub
      number: 15
      mode: OUTPUT
      inverted: False
binary_sensor: 
  - platform: status
    name: "Yatak Odası Wi-Fi"
  - platform: gpio
    name: "Yatak Hareket"
    device_class: motion
    pin:
      number: D5
      mode: INPUT_PULLUP
      inverted: False
  - platform: gpio
    name: "Yatak Spot PWR Düğme"
    pin:
      mcp23xxx: mcp23017_hub
      number: 12
      mode: INPUT_PULLUP
      inverted: True
  - platform: gpio
    name: "Yatak Spot Oto Düğme"
    pin:
      mcp23xxx: mcp23017_hub
      number: 10
      mode: INPUT_PULLUP
      inverted: True
  - platform: gpio
    name: "Yatak Şerit Mod Düğme"
    pin:
      mcp23xxx: mcp23017_hub
      number: 9
      mode: INPUT_PULLUP
      inverted: True
  - platform: gpio
    name: "Yatak Şerit Oto Düğme"
    pin:
      mcp23xxx: mcp23017_hub
      number: 7
      mode: INPUT_PULLUP
      inverted: True
  - platform: gpio
    name: "Yatak Şerit PWR Düğme"
    pin:
      mcp23xxx: mcp23017_hub
      number: 5
      mode: INPUT_PULLUP
      inverted: True
  - platform: gpio
    name: "Duraklat Düğme"
    pin:
      mcp23xxx: mcp23017_hub
      number: 14
      mode: INPUT_PULLUP
      inverted: True

sensor:
  - platform: mhz19
    co2:
      name: "Hava Kalitesi"
    temperature:
      name: "MH-Z19 Temperature"
    update_interval: 30s
    automatic_baseline_calibration: false
  - platform: adc
    pin: A0
    name: "Yatak Odası Parlaklığı"
    update_interval: 1s
  - platform: aht10
    temperature:
      name: "Yatak Odası Sıcaklık"
      filters:
      - offset: -4
    humidity:
      name: "Yatak Odası Nem"
      filters:
      - offset: 5
    update_interval: 20s


# Enable logging
logger:
  level: WARN

# Enable Home Assistant API
#api:

ota:

If I reduce the transition duration like this, the problem disappears.

light:
  - platform: rgb
    name: "Yatak Şerit"
    red: "R1R"
    green: "G1G"
    blue: "B1B"
    default_transition_length: 1s
    effects:
      - random:
          transition_length: 1s
          update_interval: 30s
  - platform: rgb
    name: "Mini LED"
    red: "R2R"
    green: "G2G"
    blue: "B2B"
    default_transition_length: 300ms 
    effects:
      - random:
          transition_length: 1s
          update_interval: 25s