ESPHome YAML zwei verschiedene Werte übergeben

In ESPHome habe ich ein Script, welches die Helligkeit eines LED-Streifens auf Grundlage eines Helligkeitssensors (ein LDR am ADC) berechnet. Dieses Script funktioniert auch hervorragend und tut, was es soll.

script:
  - id: refresh_brightness
    then:
      - light.turn_on:
          id: neopixel_ring
          brightness: !lambda 'return id(brightness_sensor).state/100;'

Aufgerufen wird das Script jedes mal, wenn sich die Helligkeit ändert:

sensor:
  - platform: adc
    id: brightness_sensor
    pin: GPIO34 
    name: "Helligkeitssensor"
    update_interval: 5s
    device_class: illuminance
    unit_of_measurement: "%"
    filters:
      - calibrate_linear:
         datapoints:
           - 0.0 -> ${minimum_brightness}
           - 1.05 -> 100
    on_value:
      then:
        - script.execute: refresh_brightness

Nun möchte ich in Abhängigkeit eines Schalters die Helligkeit auf 100% setzen. Der Schalter ist einfach ein digitaler Ausgang, der aus HA angesprochen wird.

switch:
  - platform: gpio
    name: "Nachtlicht"
    pin: 
      number: 26
    id: nachtlicht
    device_class: switch

Allerdings schaffe ich es irgendwie nicht, den Rückgabewert in Abhängigkeit des Switches auf 100% zu setzen.

Versucht habe ich es so:

script:
  - id: refresh_brightness
    then:
      - light.turn_on:
          id: neopixel_ring
          brightness:
            - lambda: |-
              if (id(nachtlicht).state) {        
                return 100;              
              } else {
                return id(brightness_sensor).state/100;              
              }

bekomme aber beim validate folgende Fehler:

INFO ESPHome 2026.2.4
INFO Reading configuration /config/esphome/uhr-wz.yaml...
ERROR Error while reading config: Invalid YAML syntax:

while scanning a simple key
  in "/config/esphome/uhr-wz.yaml", line 288, column 15
could not find expected ':'
  in "/config/esphome/uhr-wz.yaml", line 290, column 15

Zeile 288 ist die mit dem if und 290 die mit dem else.

So langsam komme ich hier einfach nicht mehr weiter. Kann mir jemand sagen, wo hier mein Fehler liegt?

Ich denke mal da steht was dazu

Danke,

nach einigem Suchen in der Doku hab ich es dann schließlich geschafft.

Das Script sieht jetzt so aus:

script:
  - id: refresh_brightness
    then:
      - if:
          condition:
            lambda: 'return id(nachtlicht).state == true;'
          then: 
            - light.turn_on:
                id: neopixel_ring
                brightness: !lambda 'return 100;'
          else: 
            - light.turn_on:
                id: neopixel_ring
                brightness: !lambda 'return id(brightness_sensor).state/100;'

So funktioniert es.

1 „Gefällt mir“