ESP Home et Home Assistant: Recupération du simple/double click

Bonjour à tous,

Je suis en train de tester home assistant et esp home pour remplacer mon installation domotique artisanale actuelle et je cherche a mettre en place quelques actions a partir de bouton physiques.
Ce que je faisait sur mon nodemcu c’est de capter le type de click (simple double, triple) et selon le type, j’envoyais une requète http a mon serveur qui allumait ou non mes lumières (Click simple on allume si eteint et vice vers, double on allume a 50%, triple on allume aune prise de la pièce)

Je commence a bidouiller dans ESPHome , j’arrive deja a avoir un capteur DHT22, mais pour l’histoire des click, je ne sais pas par ou commencer.

Ce que j’ai réussi a faire:
Voici mon code esphome:

esphome:
  name: boutons_bureau
  friendly_name: "Boutons bureau"

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "ma clé"

ota:
  - platform: esphome
    password: "password"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Test Fallback Hotspot"
    password: "V33eoCsQTIhM"

captive_portal:
    
binary_sensor:
  - platform: gpio
    pin: 
      number: GPIO14
      mode: INPUT_PULLUP
      inverted: True
    name: "Bouton1"

sensor:
  - platform: dht
    model: DHT22
    pin: GPIO04
    temperature: 
      name: "Température bureau"
    humidity: 
      name: "Humidité bureau"
    

Je récupère bien les température, et humidité dans home assistant.
En faisant une automatisation sur l’entité bouton1, j’arrive a récupérer la notion de Activé et j’allume si eteint et vice versa…
Mais je ne sais pas gérer le 50%

Savez vous si je fais fausse route ? si oui, que dois-je faire?

Je suis désolé, je debut sous home assistant et esp home et j’ai encore beaucoup de mal avec les notions d’objets…


Configuration HAOS sur VM


Salut,

Tu as des évènements (on_xxx) et pour chacun d’eux tu peux défini les délais


Si les délais sont respectés la partie ‹ then › sera exécutée

Tu dois donc y mettre ton envoi HTTP… Mais tu as peut-être aussi intéret à utiliser un truc plus générique : MQTT par ex

1 « J'aime »

J’avais vu cette information j’ai testé mais je ne dais pas comment récupérer le type de click coté home assistant pour les automatisations !

En effet, je vire toutes ma domotique maison et les lumières sont des milight qui remonent dans MQTT, je peux donc les allumer de manière traditionnelle !

Après je m’interroge, ne serait’il pas plus simple de pousser l’information depuis l’esp directement dans MQTT via Home assistant ? Mais comment on fait ca ? J’ai tenté de retrouver mes entités sur esphome mais a la compilation ca me dit inconnu

Plus simplement, tu peux faire ça

    on_double_click:
      then:
        - homeassistant.service:
            service: light.toggle
            data:
              entity_id: light.malampe

Après ça te laisse dépendant de HA, l’autre solution c’est de poster le message directement à l’ampoule en MQTT… Plus résiliant (direct) mais pas plus simple (et vachement répétitif, tu dois mettre les infos MQTT dans tous les ESP)

J’ai testé ce code, mais ca ne fonctionne pas


binary_sensor:
  - platform: gpio
    pin: 
      number: GPIO14
      mode: INPUT_PULLUP
      inverted: True
    name: "Bouton1"
    on_click:
      then:
        - homeassistant.service:
            service: light.toggle
            data:
              entity_id: light.core_mosquitto_bureau

sensor:
  - platform: dht
    model: DHT22
    pin: GPIO04
    temperature: 
      name: "Température bureau"
    humidity: 
      name: "Humidité bureau"


Sur la console, je ne vois que Bouton1 : sending state ON ou OFF

Une idée ?

Teste ça d’abord

    on_click:
      then:
        - logger.log: "1 click"

et vérifie que tu as bien configuré l’option pour l’esp en question
image

1 « J'aime »

Merci !! (j’ai vraiment l’air con pour le coup :sweat_smile:)
Je ne savais pas qu’il y avait cette option! et je n’ai pas vu l’info lors de mes recherches !

Ca fonctionne bien pour le toogle !!

J’essai de tester le double click mais ca ne fonctionne pas, il me fait deux simple click j’ai l’impression !

Voici le code :

 on_click:
      then:
        - homeassistant.service:
            service: light.toggle
            data:
              entity_id: light.core_mosquitto_bureau
    on_double_click:
      then:
        - homeassistant.service:
            service: light.turn_on
            data:
              entity_id: light.core_mosquitto_bureau
              level: "50"

Une idée de ce qui cloche ?

Défini les valeurs (delay) comme dans la doc

Les valeurs me semblent bien !

J’ai mis 2 logger pour voir ce qui se passe :

    on_click:
      then:
        - logger.log: "Simple click"
        - homeassistant.service:
            service: light.toggle
            data:
              entity_id: light.core_mosquitto_bureau
    on_double_click:
      min_length: 50ms
      max_length: 350ms
      then:
        - logger.log: "Double click"        
        - homeassistant.service:
            service: light.turn_on
            data:
              entity_id: light.core_mosquitto_bureau
              level: "50"

Lorsque je simple click, j’ai ca dans le log:

[19:02:22][D][binary_sensor:036]: 'Bouton1': Sending state ON
[19:02:22][D][binary_sensor:036]: 'Bouton1': Sending state OFF
[19:02:22][D][main:254]: Simple click
[19:02:22][D][binary_sensor:036]: 'Bouton1': Sending state ON
[19:02:23][D][main:263]: Double click
[19:02:23][D][binary_sensor:036]: 'Bouton1': Sending state OFF
[19:02:23][D][main:254]: Simple click

au simple clic ca :

[19:02:18][D][binary_sensor:036]: 'Bouton1': Sending state ON
[19:02:18][D][binary_sensor:036]: 'Bouton1': Sending state OFF
[19:02:18][D][main:254]: Simple click

Il prend donc bien le double click mais les simple click sont aussi apellés

Juste une question de valeur ?

Essaye avec des simples clics plus courts sur les doubles ou 2 types de simples
image

1 « J'aime »

Cela ne me semble pas possible de faire de type de simples les deux codes ci dessous ne compilent pas :

binary_sensor:
  - platform: gpio
    pin: 
      number: GPIO14
      mode: INPUT_PULLUP
      inverted: True
    name: "Bouton1"
    on_click:
      min_length: 50ms
      max_length: 350ms      
      then:
        - logger.log: "Simple click"
        - homeassistant.service:
            service: light.toggle
            data:
              entity_id: light.core_mosquitto_bureau
    on_click          
      min_length: 500ms
      max_length: 1000ms
      then:
        - logger.log: "Double click"        
        - homeassistant.service:
            service: light.turn_on
            data:
              entity_id: light.core_mosquitto_bureau
              level: "50"

et

binary_sensor:
  - platform: gpio
    pin: 
      number: GPIO14
      mode: INPUT_PULLUP
      inverted: True
    name: "Bouton1"
    on_click:
      min_length: 50ms
      max_length: 350ms      
      then:
        - logger.log: "Simple click"
        - homeassistant.service:
            service: light.toggle
            data:
              entity_id: light.core_mosquitto_bureau
      min_length: 500ms
      max_length: 1000ms
      then:
        - logger.log: "Double click"        
        - homeassistant.service:
            service: light.turn_on
            data:
              entity_id: light.core_mosquitto_bureau
              level: "50"

Si, mais à condition de bien recopier l’exemple … le premier code est faux (2 fois on_click, il manque un : )
Et pour le deuxième le message d’erreur doit indiquer l’endroit ou regarder

1 « J'aime »

il manque on_double_click: :sweat_smile:

Oui mais du coup, ça ressemble à la bonne syntaxe du double simple…
Bref dans tous les cas, il faut relire/corriger

J’utilise ce code:

    on_multi_click:
      - timing:
          - ON for 40ms to 400ms
          - OFF for at least 330ms
        then:
          - light.toggle: display_bl
      - timing:
          - ON for 40ms to 400ms
          - OFF for 40ms to 300ms
          - ON for 40ms to 400ms
          - OFF for at least 330ms
        then:
          - light.toggle: led1

1 « J'aime »

Effectivement, je regarde de ce coté la et ca répond bien à ce que je veux !
Voici mon code final :

binary_sensor:
  - platform: gpio
    pin: 
      number: GPIO14
      mode: INPUT_PULLUP
      inverted: True
    name: "Bouton1"
    on_multi_click: 
    - timing:
        - ON for at most 1s
        - OFF for at most 1s
        - ON for at most 1s
        - OFF for at least 0.2s
      then:
        - logger.log: "Double click"        
        - homeassistant.service:
            service: light.turn_on
            data:
              entity_id: light.core_mosquitto_bureau
              brightness: "125"
    - timing:
        - ON for at most 1s
        - OFF for at least 0.5s
      then:
        - logger.log: "Single Short Clicked"
        - homeassistant.service:
            service: light.toggle
            data:
              entity_id: light.core_mosquitto_bureau
              brightness: "200"              

    - timing:
        - ON for 1s to 2s
        - OFF for at least 0.5s
      then:
        - logger.log: "Single Long Clicked"
        # reservé pour plus tard (prise PC)

Merci à tous pour vos aides et le temps que vous avez passé a me répondre :wink:

2 « J'aime »

Passe ton sujet en résolu, en cochant la case solution ( image) sur le message qui l’apporte.

C’est une réponse collégiale ou j’ai tiré plusieurs infos, c’est pas évident de tagger une réponse en particulier pour la résolution !
Mais c’est fait !

2 « J'aime »

Bonjour,

Si je comprends bien les actions que tu veux faire en fonction d’un simple click ou double click sont dans le code ESPHOME, il n’y a pas moyen de les récupérer dans HA au niveau des déclencheurs des automatisations ?

Merci