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.

  • 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.

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