Crear un timbre Wi-Fi con una Raspberry Pi Pico W

Raspberry Pi Pico W proyecta timbre y notificación WiFi

Aquí tienes un sencillo pero práctico tutorial que te ayudará a entender cómo activar el envío de un correo electrónico (o que aparezca una notificación en tu teléfono) cuando se pulse un botón conectado a la Raspberry Pi Pico W. De este modo, podrá utilizar su Pico W como timbre Wi-Fi.

A través de este proyecto, aprenderás a realizar peticiones HTTP para conectarte a los endpoints de IFTTT.

Vídeo

Piezas necesarias

Raspberry Pi Pico W con cabeceras

Cableado de la Raspberry Pi

botón raspberry pi pico w

Para conectar la Raspberry Pi Pico W al botón:

  • Conecta un lado del botón a un GPIO14
  • Conecta el otro lado de un botón a un pin de 3,3V

Tenga en cuenta que hay botones con cuatro puntas y botones con dos puntas.

Si tienes un botón de cuatro clavijas, puedes conectar los cables en diagonal para asegurarte de que están en lados opuestos.

Si tiene una clavija de dos puntas, conecte las puntas opuestas.

Cómo configurar IFTTT para enviar un correo electrónico

Notificación IFTTT

IFTTT son las siglas de SI Tla suya, Then Tsombrero.

En lugar de escribir tu propio código, usaremos IFTTT para hacerlo todo más fácil.

Pulse aquí para ir a IFTTT.com y regístrese para obtener una cuenta.

Una vez que se haya registrado, haga clic en "Crear".

En la parte "Si esto", haz clic en "Añadir" para configurar un evento. De este modo se establecen las condiciones necesarias para activar la parte "Entonces", que consiste en enviar una notificación.

En la siguiente pantalla, "Elija un servicio", escriba "Webhooks" y haga clic en él.

A continuación, haga clic en "Recibir una solicitud web".

Escriba el nombre del evento pico_w_request y desplácese hacia abajo y "Crear activador".

Volverá a la pantalla "Si esto, entonces aquello". Es hora de configurar su parte "Then That", así que haga clic en ella.

Busca Gmail y haz clic en él. A continuación, haz clic en "Enviarte un correo electrónico"

Elige tu correo electrónico.

A continuación, escribe un asunto. Escribimos "¡Alguien ha llamado al timbre!".

En el cuerpo, más o menos duplicamos el mensaje del asunto, excepto que ponemos

{{OcurredAt}} para mostrar a qué hora se activó.

Pulse "Crear acción". En la siguiente pantalla, haga clic en "Continuar".

A continuación, escriba un nombre para el Applet. Nosotros usamos "Pico W to Gmail".

Muy bien. Es hora de hacer clic en "Finalizar".

Configuración de IFTTT para enviar notificaciones a la aplicación del teléfono

También puedes hacer que IFTTT envíe una notificación a la app cada vez que alguien llame al timbre.

El proceso es muy similar al de la notificación por correo electrónico.

Para la parte "Si esto", elija "Webhooks" como su servicio y elija "Recibir una petición web". Escriba un nombre para el evento. Hemos utilizado "door_bell_rang".

En cuanto a la parte "Entonces eso", aquí es donde difiere.

En su lugar, elegirás un servicio de "Notificaciones" y, a continuación, "Enviar una notificación desde la app IFTTT".

Cuando haya rellenado los campos "Si esto" y "Entonces aquello", haga clic en "Continuar". Escriba un título para el applet y haga clic en Finalizar.

Cómo encontrar tus credenciales IFTTT

Ahora que ya tiene configurado el applet If-Then, puede proceder a buscar sus credenciales para que el Pico W pueda conectarse a IFTTT.

Para ello:

  • Haz clic en tu foto de perfil en la parte superior derecha
  • Haga clic en "Mis servicios".
  • Haga clic en Webhooks
  • Haga clic en el botón Documentación.

Verás información en esta página, incluida tu clave secreta.

Conexión de Raspberry Pi Pico W a IFTTT

Todo nuestro código está ahora en nuestro repositorio de Githubque puede encontrar aquí.

Descarga el código y descomprímelo. Copia el código en la Raspberry Pi Pico W.

Deberá modificar secretos.py.

Sustituir ssid con el SSID de tu red WiFi, luego pon la contraseña en el pw campo.

Utilice la clave obtenida en la sección anterior y péguela en el campo ifttt_key.

Código del timbre

El código del timbre se basa en los tutoriales anteriores. En resumen, esto es lo que hace el código:

  • Importa los paquetes necesarios
  • Configura el WiFi y conéctate a la red

Aquí está el código específico del timbre:

door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

last_state = False
current_state = False

while True:
    current_state = door_bell.value()
    if last_state == False and current_state == True:
        # Make a GET request to trigger webhook on IFTTT
        # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
        ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
        request = requests.get(ifttt_url)
        print(request.content)
        request.close()
        time.sleep(2)
    last_state = current_state

Si recuerdas, conectamos el botón al GPIO14. Por lo tanto, queremos crear un objeto que lea el valor de ese GPIO.

door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

Queremos que IFTTT envíe una notificación sólo si el estado cambia de Falso a Verdadero. También queremos evitar que IFTTT envíe varias notificaciones si el botón se ha pulsado una vez.

De ahí estas salvaguardias:

last_state = False
current_state = False

while True:
    current_state = door_bell.value()
    if last_state == False and current_state == True:
        # Make a GET request to trigger webhook on IFTTT
        # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
        ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
        request = requests.get(ifttt_url)
        print(request.content)
        request.close()
        time.sleep(2)
    last_state = current_state

El problema es que cuando pulsas el botón, puedes mantenerlo pulsado durante un rato sin darte cuenta. A ti te puede parecer una pulsación, pero para el Pico W pueden ser cinco. Así que queremos evitar recibir cinco notificaciones.

Aquí es donde el último_estado y estado_actual entran las variables.

Al pulsar el botón, estado_actual se convierte en Verdadero.

Esto activa el código que se conecta con IFTTT.

Una vez hecho esto, hay una pausa de dos segundos gracias a time.sleep(2).

Entonces, último_estado se convierte en Verdadero porque toma el valor de estado_actual.

Por lo tanto, esto impide que más pulsaciones grabadas activen más notificaciones, ya que ambas variables están ahora Verdaderopor esta línea:

  if last_state == False and current_state == True:

Una vez pasadas las prensas adicionales, último_estado vuelve a False y, por lo tanto, está listo para recibir un Verdadero para activar de nuevo la conexión con IFTTT.

Elija su método de notificación

Ahora es cuando eliges tu camino.

Si ha creado una notificación de envío por correo electrónico, puede descomentar esta línea:

 # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']

Esto supone que has llamado a tu evento "pico_w_request". Si no, cambia esa parte de la URL por el nombre que le hayas dado.

Si desea una notificación de aplicación, entonces usted va a tener que utilizar la siguiente línea:

 ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']

¿Y ahora qué?

Con este sencillo proyecto, puedes llegar lejos.

Un botón se puede utilizar para activar muchas cosas una vez que esté familiarizado con la interacción con las API.

Por ejemplo, puedes programar el botón para que pulse la API de Spotify para detener tu música o para saltarte una canción.

¿Quiere estar al día de las novedades y otros proyectos de Pico? Haga clic aquí:

¿Cómo configurarías este timbre Wi-Fi de Pico para adaptarlo a tus necesidades?

4 Comentarios

  1. Tom el agosto 12, 2022 a las 3:06 am

    Saludos

    Quería probar algunos de sus proyectos RPI Pico W, es decir, IFTTT enviar correo y el proyecto de página web. Me encontré con un problema, cuando corrí el ejemplo IFTTT, el programa micropython estaba buscando un módulo 'sockets'. No he podido encontrar un módulo sockets para que el programa funcione correctamente. ¿Puede usted aconsejar sobre correctamente el problema

  2. [...] 参考にしたサイト:Raspberry Pi Pico W Wi-Fi Doorbell tutorial (HTTP requests & IFTTT) [...]

  3. [...] En particular, este proyecto no es tan diferente de nuestro Pico W Timbre Tutorial que compartimos en julio del año pasado. [...]

  4. [...] ¿Quieres que tu casa sea más inteligente? Una Raspberry Pi puede servir tanto como dispositivo central como periférico para automatizarlo todo. Por ejemplo, puedes transformarla en una cámara de vigilancia o en un sistema de seguridad, puedes utilizarla como asistente de voz, puedes crear un espejo inteligente con ella o puedes utilizarla para la iluminación inteligente. Incluso puedes usarlo para regar las plantas, controlar los pájaros de tu jardín o como timbre inteligente. [...]

Deja un comentario