ESP32 RMT LED Strip

This is a component using the ESP32 RMT peripheral to drive most addressable LED strips.

light:
  - platform: esp32_rmt_led_strip
    rgb_order: GRB
    pin: GPIO13
    num_leds: 30
    rmt_channel: 0
    chipset: ws2812
    name: "My Light"

Configuration variables

  • pin (Required, Pin): The pin for the data line of the light.

  • num_leds (Required, int): The number of LEDs in the strip.

  • rmt_channel (Required, int): The RMT channel to use. If using multiple strips, you need to use different channels.
    • ESP32: 0 to 7

    • ESP32-S2: 0 to 3

    • ESP32-S3: 0 to 3

    • ESP32-C3: 0 or 1

  • chipset (Required, enum): The chipset to apply known timings from. Not used if specifying the timings manually, see below.
    • WS2812

    • SK6812

    • APA106

    • SM16703

  • rgb_order (Required, string): The RGB order of the strip.
    • RGB

    • RBG

    • GRB

    • GBR

    • BGR

    • BRG

  • is_rgbw (Optional, boolean): Set to true if the strip is RGBW. Defaults to false.

  • is_wrgb (Optional, boolean): Set to true if the strip is WRGB. Defaults to false.

  • max_refresh_rate (Optional, Time): A time interval used to limit the number of commands a light can handle per second. For example 16ms will limit the light to a refresh rate of about 60Hz. Defaults to sending commands as quickly as changes are made to the lights.

  • All other options from Light.

Manual Timings

These can be used if you know the timings and your chipset is not set above. If you have a new specific chipset, please consider adding support to the codebase and add it to the list above.

  • bit0_high (Optional, Time): The time to hold the data line high for a 0 bit.

  • bit0_low (Optional, Time): The time to hold the data line low for a 0 bit.

  • bit1_high (Optional, Time): The time to hold the data line high for a 1 bit.

  • bit1_low (Optional, Time): The time to hold the data line low for a 1 bit.

See Also