jueves, 5 de octubre de 2023

ESP Home: Controlar un pulsador

En este artículo voy a describir como incluir un pulsador en nuestro dispositivo para que podamos ejecutar alguna acción si se pulsa sobre el mismo.

El pulsador lo conectaremos entre los 3,3v y un puerto de entrada de nuestro ESP8266. De esta forma, cuando pulsemos el botón el puerto pasará a recibir los 3.3 voltios de alimentación mientras que si no está pulsado no recibirá nada por lo que tenemos que realizar una configuración pull-down en dicha entrada. Esto es porque cuando una entrada GPIO no está conectado a nada puede leer cualquier valor.

Para evitar esta lectura incorrecta debemos conectar una resistencia elevada entre el puerto GPIO y masa que es lo que se denomina resistencia de pull-down o a alimentación con lo que tendremos una configuración en pull-up. 

Por suerte, muchos de los puertos GPIO de los ESP ya disponen de una resistencia interna para realizar esta configuración, algunas configuradas en pull-down y otras en pull-up.

Tendrás que ver qué tipo de ESP dispones y que puertos puedes utilizar que tengan una configuración de pull-down. En mi caso estoy utilizando un ESP8266-12-E del fabricante LoLin, y el puerto GPIO16 (puerto D0) dispone de una resistencia pull-down.


Una vez que tenemos conectado el pulsador, tendremos que instalar el software. Para ello, nos vamos a ESPHome y seleccionamos el dispositivo o creamos un nuevo. En mi caso, voy a utilizar el mismo dispositivo con el que realizamos el medidor de temperatura y humedad y Edit.

Vamos a crear tres nuevos sensores binarios, o sea, que solo tienen dos estados como es el caso de los pulsadores. El código será el siguiente:

# Pulsador
binary_sensor:
  - platform: gpio
    name: Pulsador
    pin:
      number: D0
      mode:
        input: true
        pulldown: true
    filters:
      - delayed_on: 10ms

Si conectamos al pulsador a un puerto con pull-up, éste estará siempre en ON hasta que se realice la pulsación. Si queremos que cuando se pulse pase a encendido debemos invertir el sensor binario añadiendo:

    pin:
      ...
      inverted: true

Seleccionamos Save e Install y seleccionamos Wirelessly ya que el dispositivo está conectado por Wi-Fi. Si fuera un dispositivo nuevo tendríamos que conectarlo mediante USB y seleccionar  Plug into this computer.


Después de unos segundo ya se habrán instalado las modificaciones en el dispositivo.


Seleccionamos STOP y en la interfaz de Home Assistant seleccionamos Ajustes - Dispositivos y servicios, seleccionamos ESPHome y en Dispositivo vemos que hemos añadido un nuevo sensor denominado Pulsador, que es el nombre que le indicamos en el código.


Nos vamos al panel de control y añadimos el nuevo sensor a la tarjeta que ya teníamos configurada y nos muestra el estado en que se encuentra el pulsador.

Si pulsamos podemos ver que cambia de estado.

Ejecutar una acción

Podemos realizar una automatización utilizando este pulsador. Por ejemplo, vamos a cambiar el estado de un enchufe inteligente, en este caso, un Shelly Plus Plug S, cada vez que realizamos una pulsación.

No vamos a Ajustes - Automatizaciones y escenas - Crear automatización. En Desencadenantes, Añadir desencadenante del tipo Estado, como Entidad seleccionamos el pulsador. En Condiciones, Añadir condición del tipo Estado, seleccionamos la Entidad el pulsador y en Estado seleccionamos Encendido. Por último, en Acciones, Añadir acción del tipo Llamar un servicio, como Servicio Interruptor: Alternar, y en Entidad seleccionamos el Shelly Plus Plug S.


Nota: El hecho de añadir la condición de que el pulsador esté en estado de encendido para que se realice la acción es que, cuando realizamos una pulsación, el pulsador cambia dos veces de estado (encendido - apagado) por lo que el shelly alternará su estado dos veces y volverá a su estado inicial.

De esta forma, cada vez que realizamos una pulsación, el enchufe inteligente cambiará de estado Encendido/Apagado.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.