ESPHome sterowanie LED - jak zmieniać parametr brightness?

Zmagam się z pewną przypadłością.
Otóż steruję światłem poprzez przycisk i czujkę ruchu.
Wykrycie ruchu przez czujkę włącza światło na 10 minut z parametrem brightness 90 (mam to zrobione w HA w NodeRed i działa ).

Sterowanie przez przycisk mam zrobione w ESPHome:

binary_sensor:
  - id: kitchen_ceiling_LED_button
    name: "kuchnia sufit LED przycisk"
    device_class: LIGHT
    platform: gpio
    pin:
      mcp23xxx: mcp23017_1
      # Use pin A0
      number: 0
      # One of INPUT or INPUT_PULLUP
      mode:
        input: true
        pullup: true
      inverted: false
    on_press:
      - light.toggle: kitchen_ceiling_LED

Jednak sterowanie przyciskiem przyjmuje parametr ustawiony dla sterowania poprzez czujkę w NodeRed.
W efekcie światło po włączeniu przez przycisk nie świeci pełną jasnością.

Rozwiązanie widzę dwa:

  1. przy wyłączeniu światła HA przez regułę NodeRed ustawienie parametru brightness do poziomu 255
  2. w ESPHome - stworzyć regułę , która przed włączeniem światła ustawi ten parametr na 255

ad. 1 Jednak w NodeRed przy wyłączeniu nie ma takie opcji dostępnej:

ad. 2 Natomiast w ESPHome dla operacji light.toggle nie ma dostępnej opcji brightness

W jaki sposób można ustawiać ten parametr ?

Pole Data

{ "brightness": "190" }

Pole Data

{  "rgbw_color": [  255,  100, 100, 50], "brightness_pct": 100,  "transition": 10 }
1 polubienie

Spoko, pole Data z wartością {“brightness”:“190”} działa i można ustawić jasność świecenia. W ten sposób mogę ustawić jasność świecenia sterowanego przez czujkę ruchu, która wyzwala światło w HA w NodeRed.

Słowo wyjaśnienia co do mechanizmu jak to ma działać. Otóż normalnie steruję światłem przez przycisk podpięty pod ESPHome dzięki czemu mogę sterować światłem nawet jak nie mam połączenia z HA. Tu chcę mieć jasność 100%. Ponadto to samo światło ma być sterowane przez czujkę ruchu , która jest podpięta pod HA. Jednak czujka ma uruchamiać światło na 50% jasności na czas 10 minut.

Teraz pozostaje kwestia jak po zadziałaniu tej reguły i wyłączeniu światła przez tę regułę , ustawić jasność na innym poziomie tak gdy zasteruję tym samym światłem przez przycisk mieć inny poziom świecenia. Czyli sterowanie światłem przez przycisk podpięty do ESPHome. Na razie zrobiłem takie łopatologiczne obejście w NodeRed gdzie po wyłączeniu światła przez regułę włączam jeszcze raz światło z poziomem jasności 100% i od razu je wyłączam. W ten sposób mam zapamiętaną jasność 100%, która zostanie użyta przy włączeniu światła przez przycisk podpięty do ESPHome. Przez to, że jest zwłoka 1 sekundy (parametr “transition”) to działa bez efektu gwałtowanego rozjaśnienia przed wyłączeniem. Takie obejście braku możliwości zdefiniowania parametru “brightness” przy operacji turn_off w NodRed oraz braku możliwości zdefiniowania tego parametru w ESPHome przy użyciu light.toggle .

EDIT:
Innym rozwiązaniem tego problemu jest zastąpienie w ESPHome prostej komendy light.toggle poprzez warunek:

    on_press:
       then:
        - if:
            condition:
              light.is_on: kitchen_ceiling_LED
            then:
            - light.turn_off: kitchen_ceiling_LED
            else:
            - light.turn_on: 
                id: kitchen_ceiling_LED
                brightness: 100%

mamy więcej kodu w ESPHome ale możemy uprościć regułę w NodeRed i usnąć te koślawe włączanie i wyłączanie żeby uzyskać parametr brightness 100%, który będzie użyty jeżeli zastosujemy proste

    on_press:
      - light toggle: kitchen_ceiling_LED

Podepnę się pod stary temat.

O ile wysłanie parametrów które sa wyżej z NR do EspHome są łatwe o tyle nie mam zielonego pojęcia jak wymusić załączenie jakiegoś efektu z neopixel w esphome.

Jakiś tip?