Script pour LED RGB selon distance avec Ultrasonic dans ESP Home

Salut,

je bloque et ne comprend plu rien. Je suis au bout de mes connaissances, il me faut une nouvelles idée ou piste.

J’ai assembler un ESP32 avec un DHT et Ultrasonic Sensor avec une LED RGB. l’idée est tout simplement que a une distance mesurer la LED es bleu, avec l’approche la LED change au vert et quand on es trop prêt elle change au rouge.
Tout d’abord je voulais le faire avec un script, celui ne marchait pas car ne s’adapte pas. Ensuite avec des automatitations, pas mieux…et finalement je me suis rappeler quôn pouvais faire de simple automatitations directement dans le ESP.
Voila, mon probleme ce sont les conditions. selon ce que j’ai fait sa marche tres bien pour UNE distance avec une couleurs.

Voila mon script:

light:
  - platform: rgb
    name: "Light go or no"
    red: output_component1
    green: output_component2
    blue: output_component3
    id: light_goorno

# Example output entry
output:
  - platform: ledc
    id: output_component1
    pin: GPIO4
  - platform: ledc
    id: output_component2
    pin: GPIO5
  - platform: ledc
    id: output_component3
    pin: GPIO21
 
sensor:
  - platform: dht
    pin: GPIO2
    temperature:
      name: "Garage Temperature"
    humidity:
      name: "Garage Humidity"
    update_interval: 60s
  
  - platform: ultrasonic
    trigger_pin: GPIO18
    echo_pin: GPIO19
    name: "Car distance"
    unit_of_measurement: "m"
    accuracy_decimals: 2
    update_interval: 2s
    pulse_time: 50us
    timeout: 4m
    on_value_range:
        # de
        above: 1.65
        # a
        below: 1.8
        then:
         - light.turn_on:
              id: light_goorno
              red: 0%
              green: 100%
              blue: 0%
  

comment je peut inclure ces 3 phases d’aproche avec leur couleur?

Merci d’avance

Salut,

Il est possible de mettre plusieurs valeurs dans ton « on_value_range ».
Comme l’exemple donné dans la doc de EspHome (ci dessous).
Autre solution, utiliser l’action « on_value » et dans le « then » utiliser un lambda et faire le test en C à base d’un switch-case ou d’une suite de if…else.

sensor:
  - platform: dht
    humidity:
      name: "Living Room Humidity"
      on_value_range:
        - above: 65.0
          then:
            - switch.turn_on: dehumidifier1
        - below: 50.0
          then:
            - switch.turn_off: dehumidifier1
    temperature:
      name: "Living Room Temperature"

Merci
il me dir que je ne peut pas utiliser deux fois Then…
avec le Lambda ne comprends pas trop comment sa fonctionne

Là tu as surement un souci d’indentation ou de syntaxe.
Je ne crois pas qu’il y ait de limite au nombre de conditions dans ce type d’action.

Y’a des exemples dans la doc que j’ai mis en lien.
Les lambda c’est l’équivalent des template dans le YAML de HA.
Sauf que dans ESPHome tu peux mettre du code en C directement.