ESPHome - WS2812 - dwa paski traktowane jak jeden

Dotychczas każdy uruchamiany pasek led WS2812 obsługiwałem kodem jak ten zamieszczony niżej - paskiem sterowałem płytką wemos d1 mini.
Dziś mam potrzebę pod jeden moduł wemos d1 mini podłączyć dwa paski WS2812 o różnych ilościach diod. Może wiecie czy dwa paski o różnej ilości diod (przykładowo jeden 12diod, drugi 8diod), w esphome mogę skonfigurować tak aby każdy z nich przewód “data” miał podpięty pod niezależne piny np. D5 i D6, a żeby z punktu wiedzenie efektów, mimo że są dwa, zostały potraktowane jak jeden złączony szeregowo?

esphome:
  name: kitchen-leds
  friendly_name: kitchen-leds

esp8266:
  board: d1_mini

# Enable logging
logger:
#  level: VERBOSE

#uart:
#  rx_pin: RX
#  baud_rate: 115200

# Enable Home Assistant API
api:
  encryption:
    key: !secret api_key

ota:
  password: !secret ota_password
  safe_mode: true

time:
  - platform: homeassistant
    id: homeassistant_time
    timezone: Europe/Warsaw

web_server:
  port: 80

wifi:
  networks:
  - ssid: !secret wifi_ssid
    password: !secret wifi_password

text_sensor:
  - platform: wifi_info
    ip_address:
      name: WiFi IP Address
    ssid:
      name: WiFi Connected SSID
    mac_address:
      name: Wifi Mac Address
    scan_results:
      name: Latest Scan Results
  - platform: version
    name: WiFi Version

sensor:
  - platform: uptime
    name: "WiFi dostępność"
    update_interval: 60s
  - platform: wifi_signal
    name: "WiFi sygnał"
    update_interval: 60s

binary_sensor:
  - platform: status
    name: "Status"

light:
  - platform: neopixelbus

    id: led
    type: GRB
    variant: WS2812
    pin: D5
    num_leds: 20
    name: "NeoPixel Light"
    effects:
      - pulse:
          name: "Fast Pulse"
          transition_length: 0.5s
          update_interval: 0.5s
      - pulse:
          name: "Slow Pulse"
          transition_length: 1.25s
          update_interval: 1.25s
      - random:
          name: "Random"
          transition_length: 5s
          update_interval: 7s
      - addressable_scan:
          name: Scan Effect With Custom Values
          move_interval: 75ms
          scan_width: 3
      - addressable_color_wipe:
          name: "Color Wipe"
          colors:
            - red: 20%
              green: 0%
              blue: 80%
              num_leds: 8
            - red: 80%
              green: 0%
              blue: 80%
              num_leds: 10
            - red: 0%
              green: 0%
              blue: 80%
              num_leds: 8
            - red: 80%
              green: 0%
              blue: 80%
              num_leds: 10
          add_led_interval: 600ms
          reverse: false
      - addressable_rainbow:
          name: "Rainbow Full"
          speed: 20
          width: 12
      - addressable_rainbow:
          name: "Rainbow Double"
          speed: 30
          width: 16

Nie sądzę, choć nie próbowałem (moim zdaniem nie do ogarnięcia programowo synchronizacja efektów), ale ze względu na protokół transmisji stosowany przez WS2812 i zbliżone z jednym pinem sterowania najlepiej jest je połączyć szeregowo “po bożemu” (przynajmniej w kwestii sterowania, bo zasilanie oczywiście może być równolegle wręcz obustronnie).

Nie wiem do końca co chcesz uzyskać, ale gdybyś miał paski równej długości, to możesz je równocześnie podpiąć pod to samo wyjście, wtedy efekty na obu będą synchroniczne (wykorzystujemy jednokierunkowość protokołu i w ogóle to jak on działa), konfigurujesz na długość pojedynczego.

Jeśli będą różne powiedzmy te 8 i 12 układów, to

  • przy skonfigurowaniu długości na 8, na dłuższym pasku nie zaświecą się 4 ostatnie układy
  • przy skonfigurowaniu na 12 niektóre efekty na pasku o długości 8 będą “ucięte” tzn. “wyjadą za pasek”
  • ciekawy efekt uzyskasz gdy sterowanie krótszego paska podbierzesz z wyjścia drugiego układu paska dłuższego

ESP8266 jest dość słabym wyborem na dzisiaj, bo sterowanie odbywa się w nim w pełni programowo, ESP32/ESP32-S2/ESP32-S3/ESP32-C3 mają sprzętowe nadajniki pilotów (i to w sporej ilości bo odpowiednio 8/4/4/2), dla których istnieje biblioteka wykorzystująca je do sterowanie adresowanych driverów LED

W przypadku ESP8266 oczywiście możesz mieć niezależne wyjścia stosując konfigurację zaawansowaną, sugeruję użyć metody esp8266_uart i 2 porty szeregowe na GPIO1 i GPIO2


Pomijając wywody powyżej, do sterowania adresowanymi paskami jest dedykowany w całości osobny projekt - WLED, więc do zaawansowanego sterowania użył bym właśnie jego, a nie ESPHome
https://kno.wled.ge/